文档章节

Spring Cloud 入门教程:聊聊Spring Cloud

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

一、 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

吴伟祥

吴伟祥

粉丝 34
博文 501
码字总数 285832
作品 0
泉州
后端工程师
私信 提问
加载中

评论(0)

Spring Cloud Alibaba与Spring Boot、Spring Cloud之间不得不说的版本关系

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

程序猿DD
2019/03/03
818
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
2019/03/29
343
0
Spring Cloud Alibaba基础教程:Nacos配置的加载规则详解

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

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

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

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

没有更多内容

加载失败,请刷新页面

加载更多

搞不定Kafka重复消费?来看看就不一样了

前言 今天我们聊一个话题,这个话题大家可能在面试过程中,或者是工作当中经常遇到 :point_right: 如何保证 Kafka 消息不重复消费? 我们在做开发的时候为了程序的健壮性,在使用 Kafka 的时...

Java进阶程序员xx
24分钟前
43
0
pandas操作excel-07-数据筛选

import pandas as pddef age_18_to_30(a): return 18 <= a < 30def level_a(s): return 85 <= s <= 100students = pd.read_excel('D:/output.xlsx', index_col='idx')# 筛......

烽焱10仴
30分钟前
34
0
springcloud微服务实战_05_服务容错保护

5.1 Hystrix 服务降级 前言 在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元应用间通过服务注册与订阅的方式互相依赖。由于每个单元都在不同的进程中运行,依赖通过远程调用的方...

SP_K
38分钟前
34
0
Java压缩解压(tar.gz)

package com.hxm.learn.util;import org.apache.commons.compress.archivers.tar.TarArchiveEntry;import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;import org......

itazi
40分钟前
53
0
2.29日记

忽视股票每天的价格波动。每年超越市场一点点,长期就能变得非常富有。

js工程师
45分钟前
61
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部