Spring Cloud 入门必读

导读:本篇文章讲解 Spring Cloud 入门必读,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

什么是微服务

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

对微服务想了解的更具体,或者想知道它是如何来的,请点击: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) 状态
Ereka 2.0 孵化失败 Nacos Discovery 性能更好,感知力更强
Ribbon 停更进维 Spring Cloud Loadbalancer Spring Cloud 原生组件,用于代替 Ribbon
Hystrix 停更进维 Sentinel 可视化配置,上手简单
Zuul 停更进维 Spring Cloud Gateway 性能为 Zuul 的 1.6 倍
Spring Cloud Config 搭建过程复杂,约定过多,无可视化界面,上手难点大 Nacos Config 搭建过程简单,有可视化界面,配置管理更简单,容易上手

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/78359.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!