6、Spring Config注册中心
一、Config Server和Client原理
备注:Spring Cloud Config和Spring Cloud Eurake相似,都有客户端和服务端。
1、ConfigServer(配置中心服务端)从远端git拉取配置文件并在本地git一份,ConfigClient(微服务)从ConfigServer端获取自己对应 配置文件;
2,、手动刷新?
通过actuator和@RefreshScope通过调用actuator/refresh
3、当远端git仓库配置文件发生改变,ConfigServer如何通知到ConfigClient端,即ConfigClient如何感知到配置发生更新?
Spring Cloud Bus会向外提供一个http接口,即图中的/bus/refresh。我们将这个接口配置到远程的git的webhook上,当git上的文件内容发生变动时,就会自动调用/bus-refresh接口。Bus就会通知config-server,config-server会发布更新消息到消息总线的消息队列中,其他服务订阅到该消息就会信息刷新,从而实现整个微服务进行自动刷新。
1、提交配置触发post请求给server端的bus/refresh接口
2、server端接收到请求并发送给Spring Cloud Bus总线
3、Spring Cloud bus接到消息并通知给其它连接到总线的客户端
4、其它客户端接收到通知,请求Server端获取最新配置
5、全部客户端均获取到最新的配置
7、Gate Way 网关
Spring Cloud Gateway
8、Histrix服务熔断
Spring Cloud Hystrix
9、Feign
RestTemplate是Spring提供的用于发送HTTP请求的客户端工具,它遵循Restful原则。
Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。Feign的使用方式是:使用Feign的注解定义接口,调用接口,就可以调用服务注册中心的服务。
OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如@RequestMapping等等。
OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,
并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
1、基于面向接口的动态代理方式生成实现类
2、根据接口类注解的声明规则,使用Contract协议解析底层的MethodHandler,将其解析为Method元数据
3、根据元数据信息和注解信息,从中提取出相应的值,来构造Http Request 对象
4、将Request请求进行编码
5、拦截器负责对请求和返回做装饰处理
6、日志记录
7、接着是Response解码,
8、执行Response相关的MethodHandler
9、经由代理类返回最终结果。
10、BIO,NIO、AIO
浅谈“阻塞同步”,“BIO、NIO、AIO”