目录
SpringCloud 现有两种版本,一是Netflix, 二是alibaba的。
Netflix的对各个组件已经停止更新,建议后续往alibaba去学习。
梳理下Netflix的各个组件和使用场景
服务的发现 —— Netflix Eureka
EureKa-service
- 功能:服务注册,提供注册表,同步状态
- 机制:心跳机制,自我保护机制
EureKa-client
缓存访问,负载均衡
https://blog.csdn.net/qq_37203082/article/details/112796382
服务的调用 ——Netflix Feign
用于服务之间的通信,通常SpringCloud有两种通信方式
- restTemplate+Ribbon
- feign
Feign使用方法:在定义抽象方法的接口中使用@FeignClient声明注解
熔断器 —— Netflix Hystrix
在上面的Feign已经集成了Hystrix
使用方法:在配置文件手动配置 feign.hystrix.enabled=true、
功能:
- 服务降级
- 服务熔断
- 服务限流
- 接近实时的监控
https://blog.csdn.net/qq_41049126/article/details/112882402
服务网关 —— Netflix Zuul
- 认证和安全 - 对每一个resource进行身份认证
- 追踪和监控 - 实时观察后端微服务的TPS、响应时间,失败数量等准确的信息
- 日志 - 记录所有请求的访问日志数据,可以为日志分析和查询提供统一支持
- 动态路由 - 动态的将request路由到后端的服务上去
- 压力测试 - 逐渐的增加访问集群的压力,来测试集群的性能
- 限流 - allocating capacity for each type of request and dropping requests that go over the limit
- 静态响应 - 直接在网关返回一些响应,而不是通过内部的服务返回响应
PS:Zuul和Gateway的区别 https://blog.csdn.net/ningjiebing/article/details/90603181
两者均是web网关,处理的是http请求
gateway对比zuul多依赖了spring-webflux,在spring的支持下,功能更强大,内部实现了限流、负载均衡等,扩展性也更强,但同时也限制了仅适合于Spring Cloud套件,而zuul则可以扩展至其他微服务框架中,其内部没有实现限流、负载均衡等
gateway很好的支持异步,而zuul仅支持同步,那么理论上gateway则更适合于提高系统吞吐量(但不一定能有更好的性能),最终性能还需要通过严密的压测来决定
从框架设计的角度看,gateway具有更好的扩展性,并且其已经发布了2.0.0的RELESE版本,稳定性也是非常好的
编码上看,zuul更加简洁易懂,注释规范清晰,而gateway作为Spring家族的一份子,竟然几乎不注释…
总的来说,在微服务架构,如果使用了Spring Cloud生态的基础组件,则Spring Cloud Gateway相比而言更加具备优势,单从流式编程+支持异步上就足以让开发者选择它了
分布式配置 —— Spring Cloud Config
配置中心,配置文件方式分两种,本地和Git读取
https://xuwujing.blog.csdn.net/article/details/88578076
消息总线 —— Spring Cloud Bus
用于刷新同步其他服务配置
https://blog.csdn.net/qq_27828675/article/details/83505630
Spring Cloud Seata
用于分布式的事务的中间件,由阿里推出。常用At模式,需要创建一个UNDO_LOG 表记录节点和数据回滚操作