spring cloud:
spring cloud并不是一个项目,而是一套项目的组合,包含很多子项目,每一个子项目都是针对微服务架构存在的问题给出的一种解决方案。spring cloud是基于spring boot实现的,并且spring cloud的并没有重复的造轮子,它只是将各家公司开发的比较成熟、经得起考研的的服务进行封装。
spring cloud 子项目(以下仅列出重要的):
spring cloud config 配置管理开发工具包
spring cloud Netflix,包含eureka hystrix zuul archaius等
spring cloud sleuth
spring cloud stream
spring boot
spring cloud 版本:
伦敦地铁站命名方式
微服务之间调用:
可以用spring boot自带的RestTemplete,底层使用的httpclient ,也可以用OKhttp,OKhttp比http client更快一些;
问题:
1. 我们在调用商品微服务的时候我们把商品地址写在配置文件中,但是并没有解决商品微服务IP地址发生改变的问题;
2. 如果商品微服务部署了多分,订单微服务如何去调用;
通过服务发现与注册机制来处理(注册中心 Eureka)
Eureka包含Eureka Server 和Eureka Client
1. Eureka Server提供服务注册服务。各个节点启动后会在Eureka Server中进行注册,这样Eureka server的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中只管的看到。
2. Eureka Clent是一个java客户端,用户简化与Eureka Server的交互。
应用启动后,会向Eureka Server发送心跳,默认周期30秒,如果Eureka Server在多个心跳周期没有接收到某个节点的心跳,Eureka Server会从服务注册表中将这个节点移除(默认90秒)。
Eureka Server之间通过复制的方式完成数据同步,Eureaka Server还提供了客户端缓存机制,当所有Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务商的API。综上,Eureka通过检查心跳、客户端缓存机制等,确保了系统的高可用、灵活性和可伸展性。
微服务通信方式:
RPC:tcp协议,平台有关(dubbo使用)
RESTFULL:http协议,平台无关(spring cloud)