周立/spring-cloud-yes - 码云 Gitee.com

标签: | 发表时间:2018-03-01 15:41 | 作者:
出处:https://gitee.com

spring-cloud-yes

基于Spring Cloud的快速开发脚手架&最佳实践总结

组件关系与架构图

Config Server与X

获取配置

如图,微服务集成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 的方式实现局部刷新(可精确到某个微服务的某个实例)
  • ApplicationContext ID详见: http://www.itmuch.com/spring-cloud-code-read/spring-cloud-code-read-spring-cloud-bus/
  • 必须为微服务的每个实例配置不同的 spring.application.index ,否则,如果相同微服务n个实例的index相同,那么这n个实例只有1个实例的配置能被成功刷新,在Spring Cloud YES中,将其配置为  ${random.long} 。

Eureka Server与X

本图来自Eureka官方,如图:

  • Eureka Client与Eureka Server之间:每个微服务集成Eureka Client,从而与Eureka Server进行通信。微服务定期发送心跳,表明自己“活着”,如果Eureka Server长时间(默认3个心跳周期,大约90秒)接收不到某个微服务实例的心跳,就会从Eureka Server的服务注册表(也就是Eureka Server首页显示有哪些微服务那部分)中删除。
  • Eureka Server之间:通过相互增量复制的方式,从而实现高可用。(可以把Eureka Server当作是Eureka Server + Eureka Client,因为每个Eureka Server本身也集成了Eureka Client,从而与其他Eureka Server实例通信,并将自己注册到其他Eureka Server实例上)。

注意:

Zipkin Server与X

有多种方式与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与X

有多种方式与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的数据,并展示图表。

注意:

  • 当且仅当开启了Hystrix的API被调用时,才可能产生监控数据,Turbine才可能接收到数据,Dashboard才可能展示出图表。
  • 对于 Spring Cloud Dalston 及更高版本,默认情况下Feign是不开启Hystrix的。必须设置 feign.hystrix.enabled = true ,Feign才会开启Hystrix。

Zuul Server与X

在Spring Cloud YES中,Zuul Server已整合了Hystrix Stream、Sleuth Stream、Eureka Client、Config Client。因此,Zuul与X之间的关系,可详见上文。

Zuul是一个轻量级的API Gateway,因此,Zuul与各业务微服务之间的关系、Zuul能干哪些活儿等内容就不废话了。自行百度吧。

相关 [spring cloud yes] 推荐:

周立/spring-cloud-yes - 码云 Gitee.com

- -
基于Spring Cloud的快速开发脚手架&最佳实践总结. Config Server与X. 如图,微服务集成Config Client,从而与Config Server进行通信,Config Server响应Config Client的请求,去Git仓库(当然也可以是SVN/Vauld/本地存储)获取配置文件,并返回给Config Client.

doc/keycloak-learn/Spring Cloud Keycloak搭建手把手操作指南.md · 周立/spring-cloud-yes - 码云 Gitee.com

- -
http://www.keycloak.org/downloads.html,按需进行下载. 笔者下载的是“Standalone server distribution”. 安装Keycloak非常简单,步骤如下:. KEYCLOAK_PATH/bin,其中KEYCLOAK_PATH是您Keycloak的根目录.

大话 Spring Cloud

- - IT瘾-dev
研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud. 在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效、分布式、容错的平台,但Spring Cloud也不是没有缺点,小型独立的项目不适合使用.

Spring Cloud限流详解 | Spring Cloud|周立

- -
限流往往是一个绕不开的话题. 本文详细探讨在Spring Cloud中如何实现限流. Zuul上实现限流是个不错的选择,只需要编写一个过滤器就可以了,关键在于如何实现限流的算法. 常见的限流算法有漏桶算法以及令牌桶算法. https://www.cnblogs.com/LBSer/p/4083131.html,写得通俗易懂,你值得拥有,我就不拽文了.

微服务框架Spring Cloud介绍 Part2: Spring Cloud与微服务

- - skaka的博客
之前介绍过 微服务的概念与Finagle框架, 这个系列介绍Spring Cloud.. Spring Cloud还是一个相对较新的框架, 今年(2016)才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比我之前用过的Dubbo和Finagle, Spring Cloud提供的功能最齐全..

Spring Cloud各组件调优参数

- - Spring Cloud|周立
Spring Cloud整合了各种组件,每个组件往往还有各种参数. 本文来详细探讨Spring Cloud各组件的调优参数. 欢迎联系我的QQ: 511932633 或微信: jumping_me ,补充或者勘误,一起总结出最全、最实用的调优参数. hystrix.threadpool.default.maxQueueSize: -1 # 如该值为-1,那么使用的是SynchronousQueue,否则使用的是LinkedBlockingQueue.

Dubbo将积极适配Spring Cloud生态,Spring Cloud体系或将成为微服务的不二选择!

- - 程序猿DD
2016年,我在博客中发表过一篇 《微服务架构的基础框架选择:Spring Cloud还是Dubbo. 在这篇文章中,我主要对比了Spring Cloud与Dubbo所具备的能力,并阐述了个人推崇Spring Cloud的原因. 但是,最近各大技术社区出现了不少类似的文章,观点比较激进,对于Spring Cloud的褒扬远胜于Dubbo,但是这些评价很多都忽略了Spring Cloud与Dubbo在设计视角上的不同.

Spring Cloud Netflix构建微服务入门实践

- - 简单之美
在使用Spring Cloud Netflix构建微服务之前,我们先了解一下Spring Cloud集成的Netflix OSS的基础组件Eureka,对于Netflix的其他微服务组件,像Hystrix、Zuul、Ribbon等等本文暂不涉及,感兴趣可以参考官网文档. 这里,我们用最基础的Eureka来构建一个最基础的微服务应用,来演示如何构建微服务,了解微服务的基本特点.

为Spring Cloud Ribbon配置请求重试(Camden.SR2+)

- - 程序猿DD
下面的例子,实现了对服务名为 hello-service的 /hello接口的调用. 由于 RestTemplate被 @LoadBalanced修饰,所以它具备客户端负载均衡的能力,当请求真正发起的时候,url中的服务名会根据负载均衡策略从服务清单中挑选出一个实例来进行访问. 大多数情况下,上面的实现没有任何问题,但是总有一些意外发生,比如:有一个实例发生了故障而该情况还没有被服务治理机制及时的发现和摘除,这时候客户端访问该节点的时候自然会失败.

使用Spring Cloud和Docker构建微服务架构

- - Oopsguy
原文: https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do. 作者:Alexander Lukyanchikov. 如何使用Spring Boot、Spring Cloud、Docker和Netflix的一些开源工具来构建一个微服务架构.