阅读笔记_第一章 微服务与Spring Cloud
1.1 微服务架构概述
1.1.1 应用架构的发展
- 单体应用架构
- 表现层、业务层、数据访问层都在一个应用里,没有任何拆分,All in one.
- 分布式架构
- 按照业务垂直拆分,每个应用都是单体架构,通过API互相调用
- SOA架构(Service-Oriented Architecture 面向服务架构)
- 按照业务拆分服务,如电商系统中订单服务、商品服务等,可以提供服务接口、消费其他服务接口,Dubbo是SOA的典型实现
1.1.2 微服务架构
- 在某种程度上是SOA架构继续发展的下一步,是一种架构风格
- 微服务架构技术选型对比
Spring Cloud | Dubbo | Motan | MSEC | 其他 | |
---|---|---|---|---|---|
功能 | 微服务完整方案 | 服务治理框架 | 服务治理框架 | 服务开发运营框架 | 略 |
通信方式 | REST/Http | RPC | RPC/Hessian2 | Protocol buffer | grpc、thrift |
服务发现/注册 | Eureka(AP) | ZK、Nacos | ZK/Conusl | 只有服务发现 | Etcd |
负载均衡 | Ribbon | 客户端负载 | 客户端负载 | 客户端负载 | Nginx+Lua |
容错机制 | 6种容错机制 | 6种容错机制 | 2种容错机制 | 自动容错 | Keepalived、HeartBeat |
熔断机制 | Hystrix | 无 | 无 | 提供过载保护 | 无 |
配置中心 | Spring Cloud Config | Nacos | 无 | 无 | Apollo |
网关 | Zuul、Gateway | 无 | 无 | 无 | Kong、自研 |
服务监控 | Hystrix+Turbine | Dubbo+Monitor | 无 | Monitor | ELK |
链路监控 | Sleuth+Zipkin | 无 | 无 | 无 | Pinpoint |
多语言 | Rest支持多语言 | Java | Java | Java、C++、PHP | Java、PHP、Node.js |
社区活跃 | 高(背靠Spring) | 高(背靠阿里) | 一般 | 未知 | 略 |
1.1.3 微服务解决方案
- 基于Spring Cloud
- 服务发现:Eureka、Consul、etcd、阿里Nacos
- 共用组件:Feign、Ribbon、Hystrix
- 网关:zuul(性能低)、Spring Cloud Gateway(性能高)、自研
- 配置中心:Spring Cloud Config、Apollo、Nacos
- 全链路监控:zikpin(不推荐)、Pinpoint(不推荐)、Skywalking(推荐)
- 搭配使用:分布式事务、容器化、Spring Cloud与DDD、gRPC
- 基于Dubbo
- Dubbo+Nacos+其他
1.2 Spring Cloud与中间件
1.2.2 什么是Spring Cloud
- Spring Cloud是一个中间件,由Spring 官方开发维护,基于Spring Boot,提供一套完整的微服务解决方案
1.2.3 Spring Cloud项目模块
1.2.4 Spring Cloud与服务治理中间件
- 服务治理中间件包含服务注册与发现、服务路由、负载均衡、自我保护、丰富的治理管理机制等功能。其中服务路由包含服务上下线、在线测试、机房就近选择、A/B测试、灰度发布等。负载均衡支持根据目标状态和目标权重进行负载均衡。自我保护包括服务降级、优雅降级和流量控制。
1.2.5 Spring Cloud与配置中心中间件
- Spring Cloud Config(基于应用、环境、版本三个维度管理)、Apollo
1.2.6 Spring Cloud与网关中间件
- 协议适配、安全策略、连接管理、流量管控、熔断机制、降级容错、智能路由、监控/日志
- Zuul(第一代网关)、Gateway(第二代网关)
1.2.7 Spring Cloud与全链路监控中间件
- 定位慢调用、定位各种错误、定位各种异常、展现依赖和拓扑、Trace调用链、应用告警
- Pinpoint、Skywalking
1.3 Spring Cloud增强生态
- Spring Cloud分布式事务
- Spring Cloud与领域驱动
- Spring Cloud与gRPC
- Spring Could与Dubbo生态融合