1.微服务简介
- 定义
- 微服务架构提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合。微服务架构是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制进行通信。
- 核心要素
- 服务注册
- 服务发现
- 路由
- 熔断
- 降级
- 分布式配置
- 优点
- 降低民单个服务复杂度
- 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。每个服务开发者只专注服务本身,通过使用缓存、DAL等各种技术手段来提升系统的性能,而对于消费方来说完全透明。
- 独立部署
- 由于微服务具备独立的运行进程,所以每个微服务可以独立部署。当业务迭代时只需要发布相关服务的迭代即可,降低了测试的工作量同时也降低了服务发布的风险。
- 容错性高
- 在微服务架构下,当某一组件发生故障时,故障会被隔离在单个服务中。 通过限流、熔断等方式降低错误导致的危害,保障核心业务正常运行。
- 可扩展性
- 单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。
- 降低民单个服务复杂度
2.常用的微服务框架
2.1.java
- dubbo
- springcloud
- 一系列框架的有序集合。利用SpringBoot简化分布式系统的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。它将目前各家公司开发的比较成熟服务框架组合起来,通过SpringBoot风格再封装屏蔽了复杂的配置和实现原理,给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包
- springcloud中文文档
- 核心组件
- Netflix Eureka 服务注册与发现
- Netflix Ribbon 客户端负载均衡
- Netflix Hystrix 服务熔断
- Netflix Zuul 服务网关
- Spring Cloud Config 分布式配置
2.2.python
- nameko
- 开源的微服务框架,基于python的RPC框架
- nameko文档
- 核心组件
- rabbitmq 服务注册与发现
- 待研究