Spring Cloud 入门必读

什么是微服务

单个轻量级服务一般为一个单独微服务,微服务讲究的是 专注某个功能的实现,比如登录系统只专注于用户登录方面功能的实现,讲究的是职责单一,开箱即用,可以独立运行。微服务架构系统是一个分布式的系统,按照业务进行划分服务单元模块,解决单个系统的不足,满足越来越复杂的****业务需求

对微服务想了解的更具体,或者想知道它是如何来的,请点击:WEB 系统架构演变

Spring Cloud 是啥?

Spring Cloud 也是 Spring 旗下的项目之一。众所周知 Spring 最擅长的事情就是把技术整合,把各个领域优秀的框架拿过来集成到自己的技术中。Spring Cloud 也是一样,它将现在非常流行的许多技术整合在一起,实现了例如:配置的管理,服务的发现,智能路由,负载均衡,集群状态,熔断器等等。其中主要涉及的组件包括:Eureka(注册中心)、Ribbon(负载均衡)、Zuul(服务网关)、Hystix(熔断器)、Feign(服务调用)。

微服务的分布式特性带来了挑战。Spring 可以帮助缓解这些问题。Spring Cloud 有几种现成的云模式,可以帮助进行服务发现、负载平衡、电路中断、分布式跟踪和监控。它甚至可以充当 API 网关。下图为 Spring Cloud 微服务架构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QnPuZdZD-1643616101785)(https://strive-md-1258023676.cos.ap-nanjing.myqcloud.com/md/diagram-microservices-88e01c7d34c688cb49556435c130d352.svg)]

Spring Cloud 主要子项目

Spring Cloud Config

集中配置管理工具,分布式系统中统一的外部配置管理,默认使用 Git 来存储配置,可以支持客户端配置的刷新及加密、解密操作。

Spring Cloud Netflix

Netflix OSS 开源组件集成,包括 EurekaHystrixRibbonFeignZuul 等核心组件。

  • Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
  • Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
  • Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
  • Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件;
  • Zuul:API 网关组件,对请求提供路由及过滤功能;

现在推荐使用 Spring Cloud Alibaba 替换 Netflix

Spring Cloud Bus

用于管理和广播分布式系统中的消息,也就是消息引擎系统中的广播模式。当然作为 消息总线 的 Spring Cloud Bus 可以做很多事而不仅仅是客户端的配置刷新功能。

拥有了 Spring Cloud Bus 之后,我们只需要创建一个简单的请求,并且加上 @ResfreshScope 注解就能进行配置的动态修改了。下图为 Bus 工作的大致示意图:

image-20220131154707256

Spring Cloud Consul

基于 Hashicorp Consul 的服务治理组件。

Spring Cloud Security

安全工具包,对 Zuul 代理中的负载均衡 OAuth2 客户端及登录认证进行支持。

Spring Cloud Sleuth

Spring Cloud 应用程序的分布式请求链路跟踪,支持使用 Zipkin、HTrac e和基于日志(例如 ELK)的跟踪。

Spring Cloud Stream

轻量级事件驱动微服务框架,可以使用简单的声明式模型来发送及接收消息,主要实现为 Apache Kafka 及 RabbitMQ。

Spring Cloud Task

用于快速构建短暂、有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性。

Spring Cloud Zookeeper

基于 Apache Zookeeper 的服务治理组件。

Spring Cloud Gateway

API 网关组件,对请求提供路由及过滤功能。

Spring Cloud OpenFeign

基于 Ribbon 和 Hystrix 的声明式服务调用组件,可以动态创建基于 Spring MVC 注解的接口实现用于服务调用,在 Spring Cloud 2.0 中已经取代 Feign 成为了一等公民。

SpringCloud 和 Dubbo

首先,他们都是分布式管理框架

Dubbo 是二进制传输,占用带宽会少一点。SpringCloud 是 Http 传输,带宽会多一点,同时使用 Http 协议一般会使用 JSON 报文,消耗会更大。Dubbo 开发难度较大,所依赖的 jar 包有很多问题大型工程无法解决。

SpringCloud 对第三方的继承可以一键式生成,天然集成。SpringCloud 接口协议约定比较松散,需要强有力的行政措施来限制接口无序升级

最大的区别: Spring Cloud 抛弃了 Dubbo 的 RPC 通信,采用的是基于 HTTP 的 REST 方式。

Spring Cloud 组件近况

Spring Cloud 大部分组件已经停更进维,所以不再推荐使用,适当了解即可。目前 Spring Cloud Alibaba 已经成为了分布式微服务系统的必需组件,逐渐代替 Spring Cloud 第一代,成为主流的微服务框架。

Spring Cloud 第一代实现(Netflix)状态Spring Cloud 第二代实现(Alibaba)状态
Ereka2.0 孵化失败Nacos Discovery性能更好,感知力更强
Ribbon停更进维Spring Cloud LoadbalancerSpring Cloud 原生组件,用于代替 Ribbon
Hystrix停更进维Sentinel可视化配置,上手简单
Zuul停更进维Spring Cloud Gateway性能为 Zuul 的 1.6 倍
Spring Cloud Config搭建过程复杂,约定过多,无可视化界面,上手难点大Nacos Config搭建过程简单,有可视化界面,配置管理更简单,容易上手
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Strive_MY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值