微服务学习-01_认识微服务
1、认识微服务
1.1 常见技术架构
1.1.1 单体架构
单体架构:将业务的所有功能集中在一个项目当中开发,打成一个包来部署
-
优点:架构简单、部署成本低
-
缺点:耦合度高(适用于企业内部使用的简单的应用)
1.1.2 分布式架构
分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
-
优点:降低服务耦合、有助于服务的升级和拓展
-
缺点:服务拆分的越多的话也会对将来的部署等操作产生影响。
1.1.3 服务治理
采用分布式架构的话需要关注的问题是:
- 服务拆分的粒度怎么样?
- 服务集群的地址怎么进行维护?
- 服务之间怎么实现远程调用?
- 服务的健康状态如何感知?
1.1.4 微服务
微服务的概念:微服务是一种经过良好的架构设计的分布式架构方案,微服务的架构特性:
- 单一职责:微服务的拆分粒度更小,每一个服务都对应唯一的业务能力,能够做到单一职责,避免了重复业务的开发
- 面向服务:微服务需要对外暴露业务接口
- 自治:团队独立、技术独立、数据独立(每个微服务的数据库都是彼此独立的,不会产生干扰)、部署独立
- 隔离性强:服务调用需要做好隔离、容错、降级,避免出现级联的问题
微服务的优缺点:
- 优点:拆分的粒度更小、服务更加独立、系统的耦合度也更低
- 缺点:架构非常的复杂,系统的运维、监控、部署的难度会随之提高
1.2 微服务结构
1.2.1 微服务架构及技术组成
目前较为常见的微服务整体架构如下图所示:
微服务技术对比:
1.2.2 目前较为常见的技术栈
-
SpringCloud + Feign:使用SpringCloud技术栈、服务接口采用RestFul风格、服务调用采用Feign风格
-
SpringCloudAlibaba + Feign: 使用SpringCloudAlibaba技术栈、服务接口采用Restful风格、服务调用采用Feign风格
-
SpringCloudAlibaba + Dubbo: 使用SpringCloudAlibaba技术栈、服务接口采用Dubbo协议标准、服务调用采用Dubbo方式
1.3 认识微服务 - SpringCloud
SpringCloud集成了各种微服务功能的组建,并且基于SpringBoot实现了这些组件的自动装配,从而为开发者提供了较好的开箱即用的体验:
1.3.1 SpringCloud组件清单
- 服务技术发现:Eureka、Nacos、Consul
- 服务远程调用:OpenFeign、Dubbo
- 服务链路监控:Zipkin、Sleuth
- 统一配置管理:SpringCloudConfig、Nacos
- 统一网关路由:SpringCloudGateway、Zuul
- 流控、降级、保护:Hystix、Sentinel