3

【Java】学习微服务架构SpringCloud

 1 year ago
source link: https://blog.51cto.com/u_15312559/5857556
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【Java】学习微服务架构SpringCloud

精选 原创

什么是SpringCloud

SpringCloud是一套分布式微服务的解决方案,Spring Cloud 的各个项目基于 Spring Boot,将 Netflix 的多个框架进行封装,并且通过自动配置的方式将这些框架绑定到 Spring 的环境中,从而简化了这些框架的使用。由于Spring Boot 的简便,使得我们在使用 Spring Cloud 时,很容易的将 Netflix 各个框架整合进我们的项目中。

有哪些组件

Eureka

Eureka 提供基于 REST 的服务,在集群中主要用于服务管理。Eureka 提供了基于 Java语言的客户端组件,客户端组件实现了负载均衡的功能,为业务组件的集群部署创造了条件。使用该框架,可以将业务组件注册到 Eureka 容器中,进行集群部署,Eureka 提供的服务调用功能,可以发布容器中的服务并进行调用。
一个简单的 Eureka 集群,需要有一个 Eureka 服务器、若干个服务提供者。

  • 服务端:
    对于注册到服务器端的服务组件,Eureka 服务器并没有提供后台的存储,这些注册的服务实例被保存在内存的注册中心,它们通过心跳来保持其最新状态,这些操作都可以在内存中完成。客户端存在着相同的机制,同样在内存中保存了注册表信息,这样的机制提升了Eureka 组件的性能,每次服务的请求都不必经过服务器端的注册中心。

  • 客户端:
    作为 Eureka 客户端存在的服务提供者,主要进行以下工作:第一、向服务器注册服务;第二、发送心跳给服务器;第三、向服务器端获取注册列表。当客户端注册到服务器时,它将会提供一些关于它自己的信息给服务器端,例如自己的主机、端口、健康检测连接等。

  • 服务调用者:
    对于发布到 Eureka 服务器的服务,使用调用者可对其进行服务查找与调用,服务调用者也是作为客户端存在,但其职责主要是发现与调用服务。在实际情况中,有可能出现本身既是服务提供者,也是服务调用者的情况,例如传统的企业应用三层架构中,服务层会调用数据访问层的接口进行数据操作,它本身也会提供服务给控制层使用。

Ribbon

负载均衡是分布式架构的重点,负载均衡机制将决定着整个服务集群的性能与稳定。
Ribbon 是 Netflix 下的负载均衡项目,它在集群中为各个客户端的通信提供了支持,它主要实现中间层应用程序的负载均衡。

  • Ribbon 提供以下特性:
    1.负载均衡器,可支持插拔式的负载均衡规则。
    2.对多种协议提供支持,例如 HTTP、TCP、UDP。
    3.集成了负载均衡功能的客户端。

Spring Cloud 将 Ribbon 的 API 进行了封装,使用者可以使用封装后的 API 来实现负载均衡,也可以直接使用 Ribbon 的原生 API.

  • Ribbon 主要有以下三大子模块:
    Ribbon-core:该模块为 Ribbon 项目的核心,主要包括负载均衡器接口定义、客户端接口定义,内置的负载均衡实现等 API。
    Ribbon-eureka:为 Eureka 客户端提供的负载均衡实现类。
    Ribbon-httpclient:对 Apache 的 HttpClient 进行封装,该模块提供了含有负载均衡功能的 REST 客户端。

  • Ribbon 的负载均衡器主要与集群中的各个服务器进行通信,负载均衡器需要提供以下基础功能:
    维护服务器的 IP、DNS 名称等信息。
    根据特定的逻辑在服务器列表中循环。

  • 为了实现负载均衡的基础功能,Ribbon 的负载均衡器有以下三大子模块:
    Rule: 一个逻辑组件,这些逻辑将会决定,从服务器列表中返回哪个服务器实例。
    Ping: 该组件主要使用定时器,来确保服务器网络可以连接。
    ServerList: 服务器列表,可以通过静态的配置确定负载的服务器,也可以动态指定服务器列表。如果动态指定服务器列表,则会有后台的线程来刷新该列表。

Feign

Spring Cloud 将 Feign 集成到 netflix 项目中,当与 Eureka、Ribbon 集成时,Feign 就具有负载均衡的功能。Feign 本身在使用上的简便性,加上与 Spring Cloud 的高度整合,使用该框架在 Spring Cloud 中调用集群服务,将会大大降低开发的工作量。

在使用 Feign 时,可以使用注解来修饰接口,被注解修饰的接口具有访问 Web Service 的能力,这些注解中既包括了 Feign 自带的注解,也支持使用第三方的注解。除此之外,Feign还支持插件式的编码器和解码器,使用者可以通过该特性,对请求和响应进行不同的封装与解析。

Hystrix

提供了熔断器功能,能够阻止分布式系统中出现联动故障。

Zuul 是由 Netflix 孵化的一个致力于“网关 “解决方案的开源组件。

Config

Spring Cloud 中提供了分布式配置中 Spring Cloud Config ,为外部配置提供了客户端和服务器端的支持。

  • 1
  • 1收藏
  • 1评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK