1.传统单机-分布式架构演进历史
- 单机架构
- 优点: 易于测试 便于集成 小型项目友好
- 缺点: 开发速度慢 启动时间长 依赖庞大
- 分布式架构
- SOA :Service Oriented Architecture 面向服务的架构 其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能, 一个服务 通常以独立的形式存在与操作系统进程中, 各个服务之间 通过网络调用
- 微服务:将一个大的单体应用进行细粒度的服务化拆分,每个拆分出来的服务各自独立打包部署,各个服务之间 通过网络调用
- 优点:易开发、理解和维护、独立的部署和启动
- 缺点:分布式系统-》分布式事务问题、需要管理多个服务-》服务治理
2.微服务架构常见的核心组件
- 网关
- 路由转发 + 过滤器
- /api/v1/video/ 视频服务
- /api/v1/order/ 订单服务
- /api/v1/user/ 用户服务
- 路由转发 + 过滤器
- 服务发现注册
- 调用和被调用方的信息维护
- 配置中心
- 管理配置,动态更新 application.properties
- 链路追踪
- 分析调用链路耗时 例子:下单-》查询商品服务获取商品价格-》查询用户信息-》保存数据库
- 负载均衡器
- 分发流量到多个节点,降低压力
- 熔断
- 保护自己和被调用方
3.微服务架构常见解决方案
- ServiceComb
- 华为内部的CSE(Cloud Service Engine)框架开源, 一个微服务的开源解决方案,社区相对于下面几个比较小
- 文档不多,通信领域比较强
- dubbo
- zookeeper + dubbo + springmvc/springboot
- 官方地址:http://dubbo.apache.org/#!/?lang=zh-cn
- 配套
- 通信方式:rpc
- 注册中心:zookeper/redis/nacos
- 配置中心:diamond、nacos
- SpringCloud
- 全家桶+轻松嵌入第三方组件(Netflix 奈飞)
- 官网:https://spring.io/projects/spring-cloud
- 配套
- 通信方式:http restful
- 注册中心:eruka
- 配置中心:config
- 断路器:hystrix
- 网关:zuul/gateway
- 分布式追踪系统:sleuth+zipkin
- Spring Alibaba Cloud
- 全家桶+阿里生态多个组件组合+SpringCloud支持
- 官网 https://spring.io/projects/spring-cloud-alibaba
- 配套
- 通信方式:http restful
- 注册中心:nacos
- 配置中心:nacos
- 断路器:sentinel
- 网关:gateway
- 分布式追踪系统:sleuth+zipkin