软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福。 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义。 转载自简书作者 原文链接:: https://www.jianshu.com/p/3899d7f47303 一、背景 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像 抢红包、双十一这样的活动 不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思想已经不能满足互联网 高并发、大流量的性能要求 。系统架构 走向分布式 已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样把框架一堆就能搞定,因此各大互联网公司都在投入技术力量研发自己的基础设施。这里面比较有名的如 阿里的开源项目dubbo, Netflix开发的一系列服务框架 。在这种“百花齐放”、重复造轮子的状况下,必然要出现一种统一的标准来简化分布式系统的开发, Spring Cloud 应运而生。 二、Spring Cloud是什么 Spring Cloud是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如 服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控 等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 Spring Cloud正是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成。 Spring Cloud是一个相对比较新的微服务框架, 2016年才推出1.0的release版本 . 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案 。 Spring Cloud 为开发者提供了在分布式系统( 配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全居琐,leader选举,分布式session,集群状态 )中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
文章来源:https://www.toymoban.com/news/detail-526746.html
从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构。
-
其中Eureka负责服务的注册与发现,很好将各服务连接起来
-
Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护。
-
Hystrix dashboard,Turbine 负责监控 Hystrix的熔断情况,并给予图形化的展示
-
Spring Cloud Config 提供了统一的配置中心服务
-
当配置文件发生变化的时候,Spring Cloud Bus 负责通知各服务去获取最新的配置信息
-
所有对外的请求和服务,我们都通过Zuul来进行转发,起到API网关的作用
-
最后我们使用Sleuth+Zipkin将所有的请求数据记录下来,方便我们进行后续分析
Spring Cloud从设计之初就考虑了绝大多数互联网公司架构演化所需的功能,如 服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控 等。这些功能都是以插拔的形式提供出来,方便我们系统架构演进的过程中,可以合理的选择需要的组件进行集成,从而在架构演进的过程中会更加平滑、顺利。 微服务架构是一种趋势,Spring Cloud提供了标准化的、全站式的技术方案,意义可能会堪比当前Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。 三、Spring Cloud组成 Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如 Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色 。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用,如: Spring Cloud Netflix ,是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。 通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。 Spring Cloud Netflix 这可是个大boss,地位仅次于老大,老大各项服务依赖与它,与各种Netflix OSS组件集成,组成微服务的核心,它的小弟主要有Eureka, Hystrix, Zuul, Archaius... 太多了 3.1、Spring Cloud Eureka 服务发现
服务中心,云端服务发现, 一个基于 REST 的服务,用于定位服务 ,以实现云端中间层服务发现和故障转移。 这个可是SpringCloud最牛鼻的小弟,服务中心 ,任何小弟需要其它小弟支持什么都需要从这里来拿,同样的你有什么独门武功的都赶紧过报道,方便以后其它小弟来调用;它的好处是你不需要直接找各种什么小弟支持,只需要到服务中心来领取,也不需要知道提供支持的其它小弟在哪里,还是几个小弟来支持的,反正拿来用就行,服务中心来保证稳定性和质量。 Spring Cloud Eureka 提供在分布式环境下的服务发现,服务注册的功能。 一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成: Eureka服务器和Eureka客户端 。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。 3.2、Spring Cloud Ribbon 客户端负载均衡文章来源地址https://www.toymoban.com/news/detail-526746.html
到了这里,关于全网最全微服务架构—Spring Cloud详解,没有比这更详细的了!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!