谈到微服务的设计和开发,大家可能会想到 Netflix OSS Spring Cloud Service CombService Mesh 等技术。
Ne ix oss 可以说是最早使用微服务架构的一个开源技术,它的注册中心( Eureka )、负载均衡(Ribbon ),以及智能路由(Zuul) 等组件至今仍是 Spring Cloud 框架中的一些重要组成部分。
Spring Cloud 是开发人员比较熟悉的一个微服务开发框架, Spring Cloud 社区也是一个粉丝众多,并且至今仍然非常活跃的微服务社区。
Service Comb 是华为开发的一个可以支持多语言的开发框架,目前可以支持 Go Java开发语言。
Service Mesh 是一种基于基础设施层、实现服务之间快速通信的新的微服务开发技术。
Spring Cloud 是在应用层实现微服务,其功能齐全的工具组件为进行微服务设计和开发提供了非常便利的条件,所以绝大多数开发人员都选择使用 Spring Cloud 实施微服务架构设计。
正因为如此, Spring Cloud 的生态体系非常庞大,各种大大小小的社区都非常活跃。
Sp ig Cloud 是由 Pivotal 团队提供的一个用来开发微服务的开源工具集。在使用这一工具集开发微服务时,我们可以非常方便地处理诸如服务注册与治理、服务间通信与集群管理、高可用和横向扩展等问题。
Spring Cloud 官网中可以看到下面这段描述,它概括地介绍了这一工具集所包含的一些组件和功能。
“ Spring Cloud 为开发人员提供了快速构建分布式系统时的一些常见模式的工具(如配直管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、(集群)领导选举、分布式会话、群集状态等).分布式系统的协调产生了样板式的模式,使用 SpringCloud 的开发人员可以方便地使用这些模式的服务和应用程序,它们将在任何分布式环境中都能很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和 Cloud Foundry 等托管平台。”
实际上,在使用 Sp ig Cloud 这套工具集开发一个特定的微服务应用时,我们并不需要特别关注所有这些组件的工作方式和原理,只需专注于某一项特定功能的开发就可以了。
Spring Cloud工具套件是一个庞大的家族,并且它对第三方的工具有很好的兼容性。限于篇幅,我们无法对所有组件进行一一介绍,所以这里只对一些核心的和常用的组件进行一个简要说明,帮助读者从整体上认识和了解这个工具套件。Spring Cloud 工具套件的思维导图如图 1-4 所示。
( 1) Spring Cloud Netflix
这是 Spring Cloud 工具套件的核心,包含 Netflix OSS 的一些基础组件,如 Eureka Hystrix,Zuul Archaius Ribbon Turbine 等,其中
© Eureka 是云端服务发现,用于云端服务注册与定位,以实现云端服务发现和故障转移等服务治理。
© Hys 是一个可提供断路器、容错机制、降级机制等功能的管理工具,通过这一工具可以实现对第三方库的延迟,以及对故障转移提供全面的监测和调控。
© Zuul 是在云平台上提供动态路由、监控和安全等边缘服务的管理框架。Zuul 相当于设备和微服务应用的阶 网站后端所有请求的前门。
© Archaius 是一个配置管理 API ,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
© ribbon提供云端负载均衡管理,有多种负载均衡策略可供选择,能自动配合服务发现和断路器使用。
Turbine 是聚合服务发送事件流数据的一个工具,使用可配置方式监控集群中服务的运行情况。
( 2) Spring Cloud Bus
一个事件、消息总线,用于在集群中传播状态变化,可与 Spring Cloud Config 联合使用,实现动态配置管理。
(3) Sp ig Cloud Cluster
提供 Leadership 选举 ZooKeeper Redis Hazeleast Consul 常见状态模式的抽象和实现。
( 4) Spring Cloud Consul
封装了 Consul 操作, Consul 是→个服务发现与配置工具,可以与 Docker 容器无缝集成。
( 5 ) Spring Cloud Security
基于 Spring Security 的安全工具包,可以为应用添加安全控制。
(6) Sp ig Cloud Sleuth
日志收集工具包,封装了 Dapper log-based 追踪,以及 Zipkin HTrace 操作,为微服务应用实现了一种分布式追踪解决方案。
( 7) Spring Cloud Data Flow
大数据操作工具,是 Spring XD 的替代产品。它是一个混合计算模型,结合了流数据与批量数据的处理方式。
( 8) Spring Cloud earn
数据流操作开发包,封装了与 Redis Rabbit Kafka 等发送和接收消息的方法。
( 9) Spring Cloud Starters
使用 Spring Boot 方式启动项目工具包,为 Spring Cloud 提供开箱即用的依赖管理。
( 10) Spring Cloud Pipeline
提供了一个有步骤的固定部署管道,以确保应用程序可以以零停机的方式部署,并且很容易在出错后进行回滚。
Spring Cloud 工具套件除自身包含丰富的组件库外,对于第三方库,也具有很好的兼容性。
借助于 Spring Cloud Consul ,我们可以很方便地使用 Consul 搭建注册中心,在提供服务注册与发现的基础上,实现远程配置管理功能。
下面两个组件是由第三方提供的。
( 1 ) Spring Boot Adrnin
Spring Boot Adrnin 通过 Spring Boot 提供的监控接口,如/health、匈fo 等,加上对当前处于活跃状态的会话数量、当前应用的并发数、延迟及其他度量信息等,可以对分布式环境中的Spring Cloud 应用实现实时的全程监控。
( 2) zipkin-dependencies
zipkin-dependencies 是由第三方封装的可运行应用程序包,可以对 Spring Cloud 应用的运行和调用关系进行全程跟踪,从而为故障诊断和检查提供帮助。它可以使用 Web 方式或与 Kafka结合使用的方式传递日志数据,然后自动分析数据,生成应用之间的调用路线图。
在应用及其接口的调用中, Spring Cloud 工具套件提供了 Gateway OpenFeign 等组件,以支持在不同环境下对应用之间的快速调用。
Spring Boot Spring Cloud 的基础组成部分,也是 Spring 开发框架的根本所在。其中:
Spring Cloud 的版本号为了与各个小项目,或其他组件的版本号区分开来,使用了大版本号的方式,并以伦敦地铁站的名字命名,同时按字母顺序进行排列,截止到目前,累计的版本号有:Angel Brixton Camden Dalston Edeware Finchley Greenwich 等,本文将使用第七个大版本,即 Greenwich ,其对应的 Spring Boot 版本为 2.1.6 发行版。
有关 Spring Cloud 的版本更新可留意官方发布的信息。
版本更新不会对我们正在使用的程序产生任何影响,但是随着版本更新,可能会有一些新功能和新技术的产生。例如,在从版本 Edgware Finchley 的更新中, Sp ig Boot l.x 升级到了 2ι 这其中的变化是比较大的。最大的变化是 Spring Boot 之后,提供了一些反应式编程的方法,让我们可以开发一些非阻塞的高并发服务。
本章介绍了微服务架构的来龙去脉,说明了基于微服务的设计和开发,已经得到越来越多的企业和个人的认可,而以微服务架构为主流的技术也已迅速发展起来。
springcloud ,因为其丰富的工具套件、全面的设计,以及很好的兼容性,使它成为众多开发人员喜欢和热爱的一种开发工具,所以也将在更大的范围中流行起来。
所以,作为一个 Java 开发者,学习和掌握 Spring Cloud 的开发方法,不仅仅是一种“时尚”,更有可能成为一项优秀的看家本领。
朋友们,让我们一起努力吧,一起来学习 Spring Cloud !
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。