文档章节

Spring Cloud 入门教程:聊聊Spring Cloud

吴伟祥
 吴伟祥
发布于 2018/12/03 16:41
字数 1284
阅读 596
收藏 21

一、 Spring Cloud 是什么?

Spring Cloud 是将分布式系统中一系列基础框架/工具进行整合的框架。其中包含:服务注册与发现、服务网关、熔断器、配置中心、消息中心、服务链路追踪等等。

Spring Cloud 并没有重复造轮子,Spring Cloud只是依赖于Spring Boot屏蔽掉了各个框架复杂的配置。所有的组件就相当于Spring Cloud的插件,开发人员可以根据自己的需要自由结合使用。
有Spring Boot这个利器在,所有组件都可以轻松引入、便捷开发。也一定程度上降低了各组件的学习成本、调试成本、让开发人员可以轻松上手。

如果需要从0开始进行服务化体系构建,Spring Cloud一定是最低成本的选择。
至少 ken.io 这么觉得。:-)

二、 Spring Cloud 整合/集成了那些组件?

Spring Cloud Netflix

Netflix基本上可以说是公认的微服务架构建设的标杆,之所以Netflix能获得这样的称号,这个离不开Netflix已经开源这些优秀的组件( https://netflix.github.io/ ),这些组件也可以说是Spring Cloud的核心。

  • Netflix Eureka

服务注册中心,支持基于HTTP的服务,支持自动服务的自动注册与发现、负载均衡、故障转移等。

  • Netflix Hystrix

熔断器,为访问远程服务、系统提供了熔断机制,一旦外部服务超时或者发生故障,将会进行熔断,以防单个或者少数服务发生故障时引起连锁反应,导致所有服务上游或者相关服务被拖慢、甚至被拖垮。提高系统面对延迟和故障的容错能力。

  • Netflix Zuul

服务网关,支持动态路由、监控等,通过zuul可以实现鉴权等功能,也可以结合Hystrix做一些基础的熔断支持。

Spring Cloud Config

分布式配置中心。通过Spring Cloud Config,开发人员可以将原先放在application.yml中的配置,存储在远程服务器(Git、SVN等)集中管理,降低应用配置的维护成本。

Spring Cloud Bus

事件中心,用于将服务和服务实例与分布式消息一起连接,通常用于集群间、甚至跨集群的事件传播(例如:配置变更)。所以Spring Cloud Bus通常会和Spring Cloud Config结合使用,方便应用自动获取到配置变更的动作并完成配置的更新。

Spring Cloud Consul

服务注册中心,同样提供了服务的注册与发现等功能。
Consul与Eureka二选一即可

Spring Cloud Security

基于Spring Security为Spring Cloud集成的组件提供安全性相关的功能,尤其是Zuul,通常是结合Zuul提供OAuth 2.0的校验功能

Spring Cloud Sleuth

分布式服务链路追踪客户端工具,通常是结合Zipkin、HTrace等提供分布式服务链路追踪的功能。

Spring Cloud OpenFeign

Feign是一个Java实现的HTTP Client。可以非常方便的通过HTTP协议请求外部资源。使用Feign访问注册到Eureka的服务,非常方便。

Spring Cloud Starters

基于Spring Boot的各组件的Starter,简化Spring Cloud各组件的依赖管理。

Spring Cloud 还有以下成员:

Spring Cloud for Cloud Foundry,
Spring Cloud Open Service Broker,
Spring Cloud Cluster,
Spring Cloud Data Flow,
Spring Cloud Stream,
Spring Cloud Stream App Starters,
Spring Cloud Task,
Spring Cloud Task App Starters,
Spring Cloud Zookeeper,
Spring Cloud for Amazon Web Services,
Spring Cloud Connectors,
Spring Cloud CLI,
Spring Cloud Contract,
Spring Cloud Gateway,
Spring Cloud OpenFeign,

这里 ken.io 就不一一介绍了,

三、 Spring Cloud 是否值得选择?

对于中小型公司来说,自研完成微服务体系建设成本太高,通常来说是要采用开源的方案。

目前已经开源的微服务框架,有一定的群众基础的也只有Dubbo了。Dubbo也在2018年2月进入了Apache孵化器。Dubbo的服务注册是依赖于Zookeeper,Dubbo框架本身更多的关注点是在RPC这块。而Spring Cloud意图就很明显了,重在整合,依赖于Spring Boot,将各个框架的复杂度或者是框架之前结合的复杂度很大程度上进行了削减。

总结来说,Spring Cloud的思路就是,已经有的我拿来用,实在没有的我再补充。
Spring Cloud相对于Dubbo来说,是整合了整套解决方案的框架,而Dubbo只是其中的一个点。

Dubbo相对于Spring Cloud更轻,不过选择Dubbo就可能意味着跟其他组件的整合就需要付出更多一点的成本。对于ken这样一个比较懒的人,推荐使用更全面的Spring Cloud。

四、备注

本文参考

本文转载自:https://ken.io/note/spring-cloud-reference

吴伟祥

吴伟祥

粉丝 31
博文 489
码字总数 284785
作品 0
泉州
后端工程师
私信 提问
Spring Cloud Alibaba与Spring Boot、Spring Cloud之间不得不说的版本关系

这篇博文是临时增加出来的内容,主要是由于最近连载《Spring Cloud Alibaba基础教程》系列的时候,碰到读者咨询的大量问题中存在一个比较普遍的问题:版本的选择。其实这类问题,在之前写Spr...

程序猿DD
03/03
539
0
Spring Cloud入门教程(十):消息总线(Bus)

Spring Cloud入门教程系列: Spring Cloud入门教程(一):服务治理(Eureka) Spring Cloud入门教程(二):客户端负载均衡(Ribbon) Spring Cloud入门教程(三):声明式服务调用(Feign) Spring Cl...

CD826
2018/05/22
0
0
说说我为什么看好Spring Cloud Alibaba

最近对《Spring Cloud Alibaba基础教程》系列的催更比较多,说一下最近的近况:因为打算Spring Boot 2.x一起更新。所以一直在改博客Spring Boot专题页和Git仓库的组织。由于前端技术太过蹩脚...

程序猿DD
03/29
215
0
Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解

前情回顾: 《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》 《Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)》 《Spring Clou...

程序猿DD
01/31
522
0
spring cloud 入门系列:总结

从我第一次接触Spring Cloud到现在已经有3个多月了,当时是在博客园里面注册了账号,并且看到很多文章都在谈论微服务,因此我就去了解了下,最终决定开始学习Spring Cloud。我在一款阅读App...

JAVA开发老菜鸟
2018/07/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java常见异常处理

异常是Java程序中经常遇到的问题,一个异常就是一个Bug,就要花很多时间来定位异常。 Java异常 (1)Throwable是Java异常的顶级类,所有的异常都继承于这个类。 (2)Error,Exception是异常...

daxiongdi
33分钟前
4
0
Validator 常用注解

说明 Validator主要是校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。那么在spring boot怎么使用这么强大的校验框架呢。 常用 [@null](https:...

五彩的颜色
42分钟前
3
0
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。

#1 先把入栈顺序的第一数据入栈, #2 if 入栈的数据==等于出栈的数据,就循环一次看是否新建的栈的数据是否出栈 #3 返回新建的栈是否为空,就是要的结果 public class Solution { public boo...

winkwink
48分钟前
4
0
《JAVA核心知识》学习笔记 (19. 数据库)

19.1.1. 存储引擎 19.1.1.1. 概念 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、 更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧...

Shingfi
54分钟前
4
0
三分钟手操自己的yum源

本文章原创首发公众号:编程三分钟 上次就想手操yum源了,考虑到有的朋友没接触过,直接写成了yum源的科普,活活憋了我一个星期,现在我们快快开始。 什么情况下我们需要搭建一个仓库呢? 记...

编程三分钟
58分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部