Spring Cloud

58 阅读2分钟

组件

Dubbo和SpringCloud的组件有什么区别

DubboSpringCloud
服务注册中心ZookeeperSpring Cloud Netfilx Eureka
服务调用方式RPCREST API
服务监控Dubbo-monitorSpring Boot Admin
断路器不完善Spring Cloud Netfilx Hystrix
服务网关Spring Cloud Netfilx Zuul
分布式配置Spring Cloud Config
服务跟踪Spring Cloud Sleuth
消息总栈Spring Cloud Bus
数据流Spring Cloud Stream
批量任务Spring Cloud Task

部署

SpringCloud应用是怎么进行热部署的?

SpringCloud的热部署主要依靠Eureka和Zuul网关来实现,Eureka提供一系列Rest URL,可以对注册实例进行操作,比服务离线/上线,注册/注销,动态修改meta元数据等。 整体思路:

  • Eureka将目标服务状态调整成下线

利用 PUT /eureka/apps/appID/instanceID/status?value=OUT_OF_SERVICE 这个rest接口

下线后,还要经过几次心跳,Zuul才会感知到这台节点的变化,建议下线后,先等待1-2分钟,这样新的请求,就不会通过Zuul转发到这台目标机器。

  • 对目标机进行常规发布

此时目标机上已经没有新请求进来,可以相对安全的进行程序更新发布

发布过程中,一般要先停止应用,建议用kill pid,不要带-9强杀,以防还有未执行完成的请求。

另外,发布重启后,也建议等待1-2分钟,等应用彻底启动好,并注册到Eureka Server上,让Zuul感知该节点已重新上线。

  • 对其它节点重复以上操作。

注册中心

Eureka和Zookeeper有什么区别?

  • ZK保证CP原则(一致性)而Eureka保证AP原则(可用性);
  • ZK在选举期间注册服务瘫痪不可用,而Eureka各个节点平等,只要一台就能保证服务可以,但查询到的数据不一定是最新的,可以很好的应对网络故障导致的部分节点失联;
  • ZK有headerfollower角色(当header挂掉,会从剩下的follower里面选举一个header),Eureka各个节点平等;
  • ZK采用半数存活原则(避免脑裂),Eureka采用自我保护机制来解决分区问题;