最近一直在准备秋招提前批的笔试面试,空闲之余记录一下最近学习的一些分布式微服务相关的一些知识
什么是微服务架构:
实际项目开发过程中按照模块进行开发,部署时候每一个模块可能部署到不同的服务器,此外,同一个模块可能会复制多份进行集群部署;
思考一下问题?
不同模块需要去相互调用,如何去发现其他的服务?
同一个服务由于存在不同的备份,我们应该去选择哪一个?
同一个服务存在多个不同的备份,每一个备份都有对应的配置文件?怎么高效修改配置文件让所有的配置文件都一起修改?
由于存在多个服务,如果客户端直接发送请求到服务,每一个服务可能都需要对于接收到的请求做一些相同的事情(判断、鉴权、过滤),存在重复处理怎么解决呢?
通过Nocas和网关解决以上问题
1、服务熔断
- (投资小天才)补充知识点:金融上的熔断机制:股市大跌,可能存在多用户跟风卖出股票,为防止这种情况,熔断:停止交易几分钟,俗称:冷静期;
- 设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据
2 服务降级
- 在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些服务不处理,或者处理简单【抛异常、返回NULL、调用Mock数据、调用Fallback处理逻辑
网关本身也是一个模块,一种服务,因此也是需要注册到注册中心,客户端的请求首先经过网关,由网关来进行一些公共的操作:鉴权、过滤;之后网关将请求动态路由到指定的服务器;