Spring Cloud的目标是为Spring开发人员提供一套易于使用的工具来构建分布式系统 。它主要通过包装其他实现堆栈 , 从Netflix OSS堆栈开始 。然后 , 这些堆栈将通过基于注释的配置 , JAVA配置和基于模板的编程的熟悉工具进行消耗 。我们来看几个Spring Cloud的组件 。
Spring Cloud配置服务器Spring Cloud Config Server(配置服务器)提供了可水平扩展的集中式配置服务 。它使用可插拔存储库层作为其数据存储 , 当前支持本地存储 , Git和Subversion 。通过利用版本控制系统作为配置存储 , 开发人员可以轻松地对配置更改进行版本化和审核 。
文章插图
配置表示为Java属性或YAML文件 。Config Server将这些文件合并到环境对象中 , 将对Spring属性和配置文件的理解模型呈现为REST API 。这个REST API可以直接由任何应用程序查询来获取配置数据 , 但可以将智能客户端绑定添加到 Spring Boot 应用程序中 , 这些应用程序将自动协调任何本地配置与配置服务器接收的配置 。
Spring Cloud总线Spring Cloud Config Server是一种强大的机制 , 用于在一组应用程序实例中一致地分发配置 。然而 , 就目前而言 , 我们目前仅限于在应用程序启动时更新此类配置 。将属性的新值推送到Git后 , 我们需要手动重新启动每个应用程序流程以获取新值 。我们想要的是在不重新启动的情况下刷新应用程序配置的功能 。
文章插图
【全面而且简洁介绍SpringCloud微服务】Spring Cloud Bus为您的应用程序实例添加一个管理背板 。它目前被实现为客户端绑定到一组AMQP交换和队列 , 但这个后端也被设计为可插拔 。Cloud Bus为您的应用程序添加了更多的管理端点 。在图中 , 我们看到上POST到App A的/bus/refresh端点的一个请求 , 由此获得Git的greeting属性新值 。此请求触发三个事件:
- App A从配置服务器请求最新的配置 。使用@RefreshScope注释的任何Spring Bean 将重新初始化到新配置 。
- 应用程序A向AMQP交换机发送消息 , 指示它已经接收到刷新事件 。
- 通过聆听适当的AMQP队列参与Cloud Bus的应用程序B和C以与App A相同的方式接收消息并更新其配置 。现在我们可以刷新应用程序的配置而无需重新启动 。
Eureka是一个有弹性的服务注册表实现 。服务注册表是用于服务发现的一种机制
Spring Cloud Netflix通过简单地将spring-cloud-starter-eureka-server依赖关系添加到Spring Boot应用程序 , 然后用@EnableEurekaServer来标注该应用程序的配置类.
文章插图
应用程序可以通过添加spring-cloud-starter-eureka依赖关系并注释@EnableDiscoveryClient其配置类来参与服务发现 。此注释提供了将DiscoveryClient正确配置的实例注入任何Spring Bean的功能 。DiscoveryClient是服务发现的抽象 , 在这种情况下恰好是通过Eureka实现的 , 但也可以提供与其他候选技术栈(如Consul)的集成 。DiscoveryClient 能够提供位置信息(例如网络地址) , 并提供根据服务逻辑标识符在Eureka注册服务实例的其它元数据 。
Eureka提供的负载平衡算法只限于轮循 。Ribbon提供了一个复杂的客户端IPC库 , 具有可配置的负载平衡和容错能力 。可以从Eureka服务器获取的动态服务器列表导出轮询列表 。Spring Cloud Netflix通过向Spring Boot添加spring-cloud-starter-ribbonSpring添加依赖关系来提供轮询Ribbon的集成 。这个额外的库也提供了将LoadBalancerClient正确配置的实例注入任何Spring Bean的能力 , 这将使客户端获得负载平衡(图4) 。
文章插图
除了其他任务之外 , 使用Ribbon还可以实现额外的负载平衡算法 , 例如可用性过滤 , 加权响应时间和可用性区域密切关系 。
Spring Cloud Netflix将通过自动创建一个RestTemplate的可以注入到任何Spring Bean中的Ribbon增强实例进一步增强Spring开发人员对Ribbon的使用 。开发人员可以简单地将提供URL中的逻辑服务名称传递给RestTemplate:
推荐阅读
- 为什么银行都给抢着办ETC,而且还免费,里面的套路你知道吗?
- 洒扫应对是什么意思 洒扫应对
- 33层高层住宅风水全面剖析
- id是什么意思啊?全面认识和使用苹果ID
- 梦见自己突然生个女儿还长的不好看 梦见自己突然生个女儿,而且很多人祝贺
- 梦见自己喂鱼而且鱼特别多 梦见给鱼喂食有很多鱼
- 官方清粉工具要来?微信新功能曝光:全面学习QQ
- 大局已定,峨眉将全面爆发,峨眉人的身价或将暴涨!
- 天猫全面保修三年 天猫30天质保如何申请
- 桐城茶文化全面介绍