1.微服务项目开发:Nacos注册中心,openFeign远程调用,loadBalance负载均衡,网关。这几个组件是微服务中最常见也是必须要解决的问题的组件,掌握这几个就具备微服务项目的能力了。不过微服务中还有一些其他的“细微”的问题,接下来将介绍解决这些“细微”的问题的组件。
2.配置管理组件/服务:
微服务项目中配置相关存在的问题:
① 微服务项目中重复的配置过多,维护成本高。
② 业务相关的配置经常变动,每次修改都要重启服务。
③ 网关路由的配置写死,如果需要修改网关路由配置,需要重启网关。
(注册中心Nacos还具备配置管理的功能)
3.Springboot项目加载过程:
为什么要有bootstrap.yml配置文件,因为需要先执行nacos地址(之前写在springboot中的application.yml文件中),拉取了nacos中的配置文件信息后,辅助后续微服务的启动(它们的配置文件放在这的,所以需要bootstrap.yml,视为cloud项目所需要的一个先导文件吧)
一个bootstrap.yml的eg
4.nacos中配置的热更新:修改配置文件中的配置,微服务无需重启即可使配置生效。
5.服务雪崩:微服务调用链中的某个服务发生故障,引起整个链路中的所有微服务都不可用,这就是服务雪崩。
服务保护方案:
请求限流:限制访问接口的请求的并发量,避免服务因为流量激增出现故障。
线程隔离:通过限定每个业务能使用的线程数量而将故障业务隔离,避免故障扩散。
服务熔断:由断路器去统计请求的异常比例或者慢调用比例,如果超出阈值则会熔断该业务,则拦截接口的请求。在熔断期间,所有请求快速失败,全部走fallback逻辑。
6.上述应对服务雪崩,所考虑的服务保护方案所对应实现的技术:Sentinel(SpringCloud Alibaba产品),Hystrix,SpringCloud Circuit Breaker等。
7.采用Sentinel的控制台快速的进行流量监控和设置流量控制,熔断规则等。方便。
8.微服务中使用Sentinel的方式:引入Sentinel的依赖,然后在Sentinel的控制台就能进行微服务流量的监控了。
9.簇点链路:就是单机调用链路。是一次请求进入服务后经过的每一个被Sentinel监控的资源链。默认Sentinel会监控SpringMVC中的每一个http接口。限流,熔断等都是针对簇点链路中的资源设置的。而资源名默认就是接口的请求路径。
10.Jmeter压测工具
11.Sentinel可以做限流,线程隔离,熔断机制,来应对服务雪崩。
12.fallback:服务熔断时使用。
13.熔断器什么时候结束熔断:
14.熔断策略:慢调用比例,异常比例,异常数
15.Sentinel持久化:把降级规则,熔断规则等持久化(记录),不然重启Sentinel,几百上千个微服务又要重新配置。这就是Sentinel持久化的目的。
---------------------------------------------------------------------------------------------------------------------------------
微服务中的分布式事务:在分布式微服务系统中,如果一个业务需要多个服务的合作完成,而且每一个服务都有事务的要求,也就是说多个事务都必须同时成功或者失败,那么这样的事务就称之为分布式事务。其中每个服务的事务就是一个分支事务,整个业务称为全局事务。
16.Seata:阿里巴巴开源的用于解决分布式事务的框架。
17.分布式事务的解决思路:
在外部加上一个事务协调者。
18.Seata事务管理中有三个角色:
TC(Transaction Coordinator)--- 事务协调者:维护全局和分支事务的状态,协调全局事务提交或者回滚。
TM(Transaction Manager) --- 事务管理器:定义全局事务的范围、开始全局事务、提交或者回滚事务。
RM(Resource Manager) --- 资源管理器:管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态。
?