前言

读者:对spring、spring boot有一定了解

难度:初中级,旨在快速应用于项目

参考文献:网络、书籍、官方文档,有任何错误欢迎大家留言拍砖指正

实战模拟源码:https://github.com/yhqnh/demo-springcloud,使用spring-cloud dalston版本

2.   Spring cloud

2.1.  版本说明

  spring-cloud 版本号并没有像其他spring项目使用类似1.x.x的命名方式。由于spring cloud不像spring社区其他一些项目那样相对独立,它是一个拥有众多项目的大型项目,其包含的各个子项目也独立进行着内容更新与迭代,各自都维护着自己的发布版本号。因此每一个spring cloud的版本都会包含多个不同版本的子项目,为了管理每个版本的子项目清单,避免spring cloud的版本号与其他子项目版本号相混淆,没有采用版本号的方式,而是通过命名的方式。

2.2.  服务治理对比

Feature

Consul

zookeeper

etcd

euerka

服务健康检查

服务状态,内存,硬盘等

()长连接,keepalive

连接心跳

可配支持

多数据中心

支持

kv存储服务

支持

支持

支持

一致性

raft

paxos

raft

CAP

CA

CP

CP

AP

使用接口(多语言能力)

支持httpdns

客户端

http/grpc

httpsidecar

watch支持

全量/支持long   polling

支持

支持 long   polling

支持 long   polling/大部分增量

自身监控

metrics

metrics

metrics

安全

acl /https

acl

https支持(弱)

spring   cloud集成

已支持

已支持

已支持

已支持

总的来看,目前Consul 自身功能,和spring cloud对其集成的支持都相对较为完善,而且运维的复杂度较为简单,Eureka 设计上比较符合场景,但还需持续的完善。根据自身业务场景自行选择最适合的服务治理方案。

分布式领域CAP理论
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性
定理:任何分布式系统只可同时满足二点,没法三者兼顾。


2.3.    实战模拟

我们会讲解企业经常使用的sping cloud 模块, 包括Spring Cloud Config(配置管理)、
spring-cloud-starter-eureka(服务治理)、spring-cloud-starter-feign(声明式服务调用)、
spring-cloud-starter-hystrix(熔断器)、spring-cloud-starter-ribbon(客户端负载均衡)、
spring-cloud-starter-zuul(api网关)、Spring Cloud Zookeeper(服务治理与配置)


注意:在使用demo过程中DiscoveryClient服务发现的时间默认是30秒。比如先启动注册中心,已经启动了一个服务提供者client1,再启动消费者,这时消费者能消费client1,这时再启动client2,注册中心会看到client2已经注册成功,但是消费者并不能马上访问到client2服务,需要等30秒后方能访问