如图,微服务集成Config Client,从而与Config Server进行通信,Config Server响应Config Client的请求,去Git仓库(当然也可以是SVN/Vauld/本地存储)获取配置文件,并返回给Config Client。
如图,每个微服务都整合 Spring Cloud Bus
( spring-cloud-starter-bus-kafka
),当配置发生变化,需要刷新时,只需发送POST请求Config Server或任意微服务的/bus/refresh
端点,即可实现配置的刷新。
注意:
/bus/refresh?destination=ApplicationContext ID
的方式实现局部刷新(可精确到某个微服务的某个实例)spring.application.index
,否则,如果相同微服务n个实例的index相同,那么这n个实例只有1个实例的配置能被成功刷新,在Spring Cloud YES中,将其配置为 ${random.long}
。本图来自Eureka官方,如图:
注意:
有多种方式与Zipkin Server整合,例如:各个微服务直连Zipkin Server等。考虑到生产环境的负载,Spring Cloud YES采用 Stream
的方式,架构如图:
如图,每个微服务都集成Sleuth Stream( spring-cloud-sleuth-stream
),当服务被调用产生调用链数据时,Sleuth Stream将会产生监控数据,并将其发送到MQ(Kafka/RabbitMQ),Zipkin Server
消费MQ中的数据,并将数据存储到Elasticsearch中(当然,也可存储到Cassandra、MySQL或内存中)。最后,如需使用Zipkin分析出微服务之间的依赖关系,可借助Zipkin官方提供的Spark Job,它可分析存储在Elasticsearch中的数据,并产生可视化的图表。
有多种方式与Turbine Server整合,例如基于HTTP的方式等。考虑到生产环境的负载,Spring Cloud YES采用Stream
的方式,架构如图:
如图,每个微服务都集成了Hystrix Stream( spring-cloud-netflix-hystrix-stream
),当调用开启Hystrix的API时(例如某个添加了@HystrixCommand
注解的API),Hystrix Stream将会产生监控数据,并将其发送到MQ(Kafka/RabbitMQ),Turbine Server
消费MQ中的数据。当技术人员需要查看Hystrix监控情况时,可通过Hystrix Dashboard去访问Turbine Server的数据,并展示图表。
注意:
Spring Cloud Dalston
及更高版本,默认情况下Feign是不开启Hystrix的。必须设置feign.hystrix.enabled = true
,Feign才会开启Hystrix。在Spring Cloud YES中,Zuul Server已整合了Hystrix Stream、Sleuth Stream、Eureka Client、Config Client。因此,Zuul与X之间的关系,可详见上文。
Zuul是一个轻量级的API Gateway,因此,Zuul与各业务微服务之间的关系、Zuul能干哪些活儿等内容就不废话了。自行百度吧。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。