关于“你对SpringCloud的理解”
看看普通人和高手是如何回答这个问题的?
普通人
Spring Cloud 是一套微服务解决方案
它包括配置中心、RPC 通信、服务注册、服务熔断等组件
高手
Spring Cloud 是一套
分布式微服务的技术解决方案
它提供了快速构建分布式系统的
常用的一些组件
比如说配置管理、服务的注册与发现、
服务调用的负载均衡、资源隔离、熔断降级等等
不过 Spring Cloud 只是 Spring 官方提供的
一套微服务标准定义
而真正的实现
目前有两套体系用的比较多
一个是 Spring Cloud Netflix
一个是 Spring Cloud Alibaba
Spring Cloud Netflix 是基于 Netflix 这个公司的开源组件集成的一套微服务解决方案,其中的组件有
-
Ribbon——负载均衡
Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的。
-
Hystrix——服务熔断
①Hystrix是一个用于处理分布式系统的延迟和容错的开源库,可以保证一个服务出现故障时,不会导致整个系统出现雪崩效应,以提高分布式系统弹性;
②作为“断路器”,在一个服务出现故障时,可以通过短路器监控,返回一个可以处理的响应结果,保证服务调用线程不会长时间被占用,避免故障蔓延。
-
Zuul——网关
Zuul是spring cloud中的微服务网关。网关:是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。
Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。
Zuul网关不是必要的。是推荐使用的。
使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用。
-
Eureka——服务注册与发现
服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。
Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主要负责完成微服务架构中的服务治理功能。
Eureka服务治理体系如下:
-
Feign——服务调用
Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。
Spring Cloud Alibaba 是基于阿里巴巴开源组件集成的一套微服务解决方案,其中包括
-
Dubbo——消息通讯
-
Nacos——服务注册与发现
-
Seata——事务隔离
-
Sentinel——熔断降级
有了 Spring Cloud 这样的技术生态
使得我们在落地微服务架构时不用去考虑第三方技术集成带来额外成本,只要通过配置组件来完成架构下的技术问题
从而可以让我们更加侧重性能方面
以上这些就是我对 Spring Cloud 的个人理解!
好的,关于普通人与高手的回答
谁的回答较好,大家心中自有定论
那么还有哪些组件是在文章中没有提到?
可以在评论区补充留言!