最近要打算学习一下springcloud,找到一个项目后进去一看发现项目功能拆分出的各个组件已经忘了都是什么作用了,从b站一查基本上都是几小时起步的全套视频,这不是我想要找的,所以在浏览多个帖子和后决定写这个帖子来简单记录一下部分组件的作用。
springcloud
springcloud是在SpringBoot基础上构建的一种分布式架构方案。
服务注册于发现 Eureka
Eureka用于实现实现springcloud中服务注册与发现功能的。
在微服务系统中,不同功能模块可能部署在不同的机器上,如果我们在每个服务上都配置上会很麻烦,而且如果一个模块发生了变化那么其他配置了该模块地址的模块配置也要进行更改。这样一看不仅麻烦而且很容易出错,eureka就是为了解决这种情况而设计出来的。
eureka分为注册中心和服务提供者两种,注册中心就是一个信息平台,服务提供者配置好信息后就能在注册中心的页面上看到服务提供者的信息了。
服务网关 Zuul
上面也提到了,不同的模块可能会部署到不同的服务器上,那么用户在使用时发送请求的地址也会变得繁杂起来。如果没有一个统一的系统入口系统的配置会变得复杂难以管理,用户体验也不好。并且这样也不利于系统的安全性。
我们在zuul中配置好入口后只要请求中是这种路径的请求都会发送到对应的erueka服务中,再由erueka决定分派给哪个服务。
zuul同时可以设置一些拦截器来进行系统的安全性保护。
服务消费者 Feign
再使用Feign之前,由于不同模块之间是不同的系统所以在调用对方功能的时候不能像直接调用本地方法一样简单,需要创建Http客户端对象,配置好参数、方法、接收对象等具体的请求发送逻辑才能将请求发送过去,使用起来较为繁琐。
而使用Feign后只需要创建接口并注解就能轻松调用其他模块提供的Http功能。
熔断服务 Hystrix
用户发生错误时返回报错,让用户不用一直等待下去。
配置管理 SpringCloudConfig
用户统一管理配置内容,方便维护。
总线 Bus
用于实现在集群中传播一些状态变化,比如配置等,一般与Config一起使用。