本篇博客主要是记录一次不好的面试表现中所涉及到的问题:说说SpringCloud的五大组件有哪些?
当时没有系统了解,只学习了Nacos、GateWay、Feign,没想到面试真被问到,特此记录下来。 五大组件:Eureka、Ribbon、Feign、Hystrix、Zuul
-
Eureka
属于SpringCloud中服务发现组件,用于微服务架构项目中的服务注册与发现,这个组件的实际作用是将服务注册到Eureka中,并提供访问接口,其他服务便可以调用该服务,每个服务可以是调用者也可以是被调用者。
-
Ribbon
负载均衡。Ribbon 呢,也是 Spring Cloud 里的一个组件。打个比方,假如有好几个能提供同一种服务的地方,Ribbon 就能帮忙决定怎么把请求均匀地分给这些地方,不让有的地方忙得不行,有的地方又闲着。它能让你调用这些服务提供者的时候更公平、更平衡,这样每个服务提供者都能合理地被使用,整个系统就能更稳定、更高效地工作。 比如说,有三个服务器都能处理用户的登录请求,Ribbon 就会决定这次让这个服务器处理,下次让另一个服务器处理,保证大家的工作量差不多。
-
Feign
远程调用。该组件是为了简化服务间的HTTP通信过程,Feign 的作用,有好多不同的服务,每个服务都有自己的一些功能。你在一个服务里想要调用另一个服务的功能,这要是每次都自己去写那些网络请求、处理返回的数据啥的,得多麻烦。Feign 就是解决这个麻烦的。它能让你像调用本地方法一样去调用其他服务的接口,不用您操心那些网络通信的细节,特别方便。 那为啥会有 Feign 呢?就是因为在分布式系统里,服务之间的调用很常见。但每次调用都要自己处理一堆网络相关的代码,又复杂又容易出错。所以就需要有个东西来把这个过程简化,让开发人员能更轻松、更高效地完成服务之间的调用,于是 Feign 就诞生啦。 比如说,有一个订单服务,还有一个库存服务。订单服务要获取库存信息,用了 Feign 之后,就好像库存服务的功能直接就在订单服务里一样,直接调用就行,不用管怎么跟库存服务建立连接、怎么传数据这些麻烦事儿。
-
Hystrix
容错组件,Hystrix 就像是一个保护神。在分布式系统里,各个服务之间相互依赖。假如某个服务出了问题,比如响应特别慢或者直接崩溃了,要是没有 Hystrix ,可能会连累使用这个服务的其他服务也跟着出问题。 Hystrix 能做啥呢?它会监控这些服务,如果发现某个服务不太对劲,就赶紧把它隔离开,不让它影响到其他服务。比如说,A 服务依赖 B 服务,B 服务出问题了,Hystrix 就会快速切断 A 服务和 B 服务的联系,让 A 服务还能正常运行,不至于被 B 服务拖垮。 举个例子,就像一条生产线上,某个环节出故障了,Hystrix 能马上把这个环节断开,保证其他环节还能继续工作,不至于整个生产线都停掉。
-
Zuul 网关组件。用于实现动态路由、负载均衡、访问鉴权等等,像是一个大管家,专门负责处理进出分布式系统的网络请求。 比如说,有很多用户向我们的系统发送请求,Zuul 会先接收这些请求,然后根据一定的规则,比如请求的类型、目标服务等,把请求分发到对应的服务去处理。 它还能在这个过程中做一些额外的事情,比如验证请求是否合法、对请求进行修改或者过滤掉一些不好的请求。
而之前学习的Nacos、GateWay也就前后呼应上了,很容易理解这些组件用来干什么。
总之,一门技术的诞生一定是多少解决了之前的技术没有解决的问题。