使用Spring Cloud 构建微服务

下面将会逐条的介绍Spring Cloud的各项组件

Spring Boot

Spring Boot 是微服务实现中使用的核心技术,Spring boot通过简化构建基于Restful的微服务的核心任务,大大简化 微服务的开发,Spring Boot 还极大的简化了将Http类型的动词映射到URL,JSON协议序列化与Java对象的相互转化,以及将Java异常映射回标准HTTP错误代码的工作。

Spring Cloud Config

Spring Cloud Config 通过集中服务来处理应用程序配置数据的管理,因此应用程序配置数据(特别是黄金特定的配置数据)与部署的微服务完全分离,这确保了不管启动多少个微服务实例,这些微服务实例始终具有相同的配置,Spring Cloud Config拥有自己的属性管理库,也可以与以下的开源项目相结合。

Git

Git 是一个开源的版本控制系统,它始终允许开发人员管理和跟踪任何类型的文本文件的更改,Spring Cloud Config 可以与Git支持的库相集成,并读出该库中的应用程序的配置数据。

Consul

consul 是一种开源的服务发现工具,允许服务实例向该服务注册自己,服务客户端可以向Consul 咨询服务实例的位置,Consul还包括可以被Spring Cloud Config使用的基于键值对的数据库,能够用来保存应用程序的配置数据。

Eureka

Eureka 是一个开源的Netfix项目,像Consul一样,提供类似的服务发现功能,Eureka同样有一个可以被Spring Cloud Config 使用的键值对的数据库。

Spring Cloud 服务发现

通过Spring Cloud 的服务发现,开发人员可以从客户端消费的服务中抽象出部署服务器的物理位置(IP或服务器名称)服务消费者通过逻辑名,而不是物理位置来调用服务器的业务逻辑,Spring Cloud服务发现也处理服务的实例的注册或者注销,Spring Cloud服务发现可以使用Consul和Eureka作为服务发现引擎。

Spring Cloud 与 Netffix Hystrix 和 Netfix Ribbon

Spring Cloud 与Netffix的开源项目进行了大量的整合,对于微服务客户端的弹性模式,Spring Cloud封装了Netfix Hystrix库和Netfix Ribbon项目,开发人员可以轻松的在微服务中使用它们。
使用Netfix Hystrix 库,开发人员可以快速实现服务客户端的弹性模式,如断路器模式和舱壁模式。
虽然Netfix Ribbon 项目简化了与诸如Eureka这样的服务发现代理的集成,但它也为服务的消费者提供了客户端对服务调用的负载均衡。即使在服务发现代理暂时不可用的时,客户端也可以继续进行服务调用。

Spring Cloud 与 Netfix Zuul

Spring Cloud 使用Netfix Zuul 项目为微服务应用程序提供服务路由功能,Zuul是代理服务请求的网关,确保在调用目标服务之前,对微服务的所有的调用都经过一个前门,通过集中的服务调用,开发人员可以强调执行标准服务策略,路安全验证,内容过滤,和路由规则。

Spring Cloud Stream

Spring Cloud Stream 是一种可以让开发人员轻松地处理轻量级消息处理集成到微服务中的支持技术。借助Spring Cloud Stream 开发人员能够构建智能的微服务,它可以使用在应用程序中出现的异步事件,此外使用Spring Cloud Stream可以快速的把微服务与消息代理进行整合,如RabbitMQ 和 Kafka

Spring Cloud Sleuth

Spring Cloud Sleuth 允许把唯一的跟踪标识符集成到应用程序所使用的HTTP 调用和消息通道之中,这些跟踪号码,能够让开发者在事物流经过应用程序中的不同服务时跟踪事物,有了Spring Cloud Sleuth,这些跟踪ID可以自动添加到微服务生成的任何日志记录中。
Spring Cloud Sleuth 与日志聚合工具和跟踪工具结合时,能够展现出真正的威力,Papertail是一个基于云的日志记录平台,用于把日志从不同的微服务实现聚合到一个可查询的数据库中,Zipkin 可以获取Spring Cloud Sleuth 生成的数据,并允许开发人员可视化单个事物涉及到的服务调用的流程。

Spring Cloud Security

Spring Cloud Security 是一个验证和授权框架,可以控制哪些可以访问服务,以及他们可以用服务做什么,Spring Cloud Security是基于令牌的,允许服务通过验证服务器发出的令牌彼此进行通信,接收调用的每个服务可以检查HTTP调用中提供的令牌,以确认用户的身份以及用户对该服务的访问权限。
此外SPring Cloud Security 支持JSON Web Token,框架标准化了创建OAUTH2 令牌的格式,并为创建的令牌进行数字签名提供了标准

代码供应

要实现代码供应,我们将会转移到其他的技术栈,Spring 框架是面向应用程序开发的,它包括Spring Cloud 没有用于创建构建和部署管道的工具,要实现一个构建和部署的管道,开发人员需要使用Travis CL 和Docker这两样工具,前者可以作为构建工具,而后者可以构建出包含微服务的服务器的镜像。