1、什么是微服务架构
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于http协议的Restful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的服务而言,应当从业务上选择合适的语言、工具对其进行构建。
2、服务架构演变
2.1 单体架构
2.1.1单体架构:
2.1.2单体架构的优点:
- 架构简单
-
2.1.3单体架构的缺点:
-
2.2 分布式架构
2.2.1分布式架构:
根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务
2.2.2分布式架构的优点:
降低服务耦合度
-
2.2.3服务治理:
服务拆分粒度
- 服务集群地址如何维护
- 服务之间如何实现远程调用
-
2.3微服务
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
- 面向服务:微服务对外暴露业务接口
- 自治:团队独立,技术独立,数据独立,部署独立
- 隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题
3、微服务框架
3.1微服务技术对比
| | Duubo | SpringCloud | SpringCloudAlibaba | | —- | —- | —- | —- | | 注册中心 | zookeeper、Redis | Eurka、Consul | Nacos、Eurka | | 服务远程调用 | Dubbo协议 | Feign(http协议) | Dubbo Feign | | 配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos | | 服务网关 | 无 | SpringCloudGateWay、Zuul | SpringCloudGateWay、Zuul | | 服务监控和保护 | dubbo-admin,功能弱 | Hystrix | Sentinel |
4、SpringCloud
- SpringCloud是目前国内使用最广泛的微服务框架。
- SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:
- SpringCloud与SpringBoot的版本兼容关系如下:
4.1服务拆分及远程调用
4.1.1服务拆分注意事项
- 不同微服务,不要重复开发相同业务
- 微服务数据独立,不要访问其他微服务的数据库
- 微服务可以将自己的业务暴露为接口,供其他服务调用