两张图简介SpringCloud 搭建微服务系统

在微服务系统领域,存在两大框架:SpringCloud和Dubbo。由于近两年SpringCloud的大力发展和社区活跃度高的优势,这里我们就仅谈谈如何用SpringCloud来搭建微服务系统。

SpringCloud其实是一个工具集合,里面有一二十个服务来组成。我今天就通过两张图来对SpringCloud框架中的一些关键服务做一个简单的介绍。

基于SpringCloud的微服务系统框架图:


说明:

上图是一个基于SpringCloud框架的常见的微服务系统。其中主要由以下六大部分组成:

负责微服务的注册和发现的Eureka server集群

负责配置管理和分发的config server集群

由zuul服务组成的访问路由、过滤、限流集群

基于Dapper调用链技术的Zipkin服务

基于Turbine服务的断路器聚合监控服务

提供具体服务的服务集群

负责微服务的注册和发现的Eureka server集群

其它五大部分的服务在启动后,都会注册到Eureka server服务上,并通过此服务来获取其它服务的可访问实体列表信息。

负责配置管理和分发的config server集群

微服务系统中的配置数据,比如各微服务的配置文件等都是通过这个集群来管理的。微服务在启动时或者是运行过程中动态的从config server集群获取自己的配置数据。所有的配置数据都可通过git或DB等方式来存储。

由zuul服务组成的访问路由、过滤、限流集群

这个集群是系统的边界,它主要提供访问路由、过滤、限流的作用,同时我们还可以在上面做鉴权、访问日志等功能。

基于Dapper调用链技术的Zipkin服务

这个服务是SpringCloud框架下的一个Dapper具体实现。通过这个服务我们可以方便的实现服务调用链路数据的分析和监控。

基于Turbine服务的断路器聚合监控服务

每一个微服务都可以通过引入Hystrix的依赖来方便的实现自身的断路器服务,但是通过引入Turbine服务后,我们可以将所有的分散在各个微服务上的断路器监控数据聚合,并统一的展现出来,供用户监控分析使用。

提供具体服务的服务集群

这些微服务都是一些SpringBoot的应用,通过简单的引入一些依赖来实现了一个微服务的具体功能,同时还可以提供一些监控数据给Zipkin、Turbine等服务来实现用户对整个系统的监控需求。

SpringCloud底层原理图:


说明:

这张图主要介绍了在一个微服务实体中,是如何实现服务的注册、发现,是如何实现对下游服务访问的流量控制和熔断,是如何为监控服务提供监控数据的。

微服务启动后,它会通过EurekaClient向EurekaServer进行服务注册。注册完成后,其它服务就可以发现并使用它。

微服务会定时通过EurekaClient向EurekaServer来获取其它服务的注册信息,以完成服务发现的需要。

当一个请求通过zuul路由后,进入到微服务,服务接口会通过Feign或RestTemplate模块到有负载均衡能力的Ribbon模块获取被调用服务的注册信息。

Ribbon会在来自EurekaClient的服务注册信息中,通过某种负载均衡算法获取一个可用的服务实例信息,并返回给Feign或RestTemplate模块。

Feign或RestTemplate模块会通过流量控制熔断服务Hystrix模块来实例化一个线程来访问这个服务。如果这个服务由于某种原因而超时,并满足熔断条件后,Hystrix就会把新的访问此服务的请求丢弃,并返回默认值,以保证系统不会产生雪崩效应。

在服务调用的过程中,服务集成的Sleuth模块会将服务调用链路数据通过ZipkinClient发送给ZipkinServer,实现系统服务调用链路追踪的能力。

另外,服务集成的Hystrix模块,还会将依赖服务调用的数据记录下来,并发送给Turbine服务,实现断路器监控的能力。

总结:

通过这两张图在不同层面上的简单介绍,你应该对SpringCloud搭建微服务系统的核心技术有个简单的认识。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。