简单介绍 Spring Cloud
Spring Cloud 是一个基于Spring Boot实现的微服务开发工具。到目前为止我运用到生产中的常用的组件如下。
- Spring Cloud Eureka :服务治理组件,包含服务注册中心,服务注册与发现机制
- Spring Cloud Hystrix:容错管理组件,具备服务熔断、服务降级、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能
- Spring Cloud Ribbon:客户端负载均衡,重试机制
- Spring Cloud Feign:声名式服务调用,对Ribbon和Hystrix的封装
- Spring Cloud Stream:简化对中间件的使用,支持RabbitMQ和Kafka自动化配置
- Spring Cloud Sleuth:全链路跟踪,与Zipkin整合
Spring Cloud Eureka
与Dubbo的服务治理做比较和分析,如图
Eureka服务治理机制
- 服务注册中心:服务端,提供注册与发现功能。
- 失效剔除时间间隔默认60s(eviction-interval-timer-in-ms=60 * 1000)
- 自我保护
- renew 15分钟之内低于85%,不过期,不剔除
- 需要客户端负载均衡,重试等
- 服务提供者:
- 注册
- 续约(续约间隔时间默认30s,失效时间默认90s)
- eureka.instance.lease-renewal-interval-in-seconds=30
- eureka.instance.lease-expiration-duration-in-seconds=90
- 取消租约(下线):重启或关闭
- 服务消费者
- 获取服务列表(registryFetchIntervalSeconds默认30s)
Eureka服务治理机制与Dubbo服务治理机制的比较
Feature | Eureka | Zookeeper |
---|---|---|
服务健康检查 | 可配支持 | (弱)长连接,keepalive |
CAP | AP | CP |
watch支持(客户端观察到服务提供者变化) | 支持 long polling/大部分增量 | 支持 |
自我保护 | 支持 | - |
客户端缓存 | 支持 | - |
自身集群的监控 | metrics | - |
- Eureka支持健康检查,自我保护等
- Zookeeper为CP设计,Eureka为AP设计。作为服务发现产品,可用性优先级较高,一致性的特点并不重要,宁可返回错误的数据,也比不反回结果要好得多。
- 服务列表变更Zookeeper服务端会有通知,Eureka则通过长轮询来实现,Eureka未来会实现watch机制