微服务(alibaba系列)必备架构nacos、seata、sentinel

1.Nacos

官网地址:https://nacos.io/zh-cn/

文档地址:https://nacos.io/zh-cn/docs/what-is-nacos.html

nacos支持dubbo和spring-cloud。主要常用的功能是承担注册中心和配置中心的功能

注册中心:是微服务的必须的依靠

配置中心:可以把一些代码yml或者其他配置文件的内容配置到nacos中保存,当nacos中的配置信息发生改变,nacos自带动态刷新。不用重启微服务就能使配置生效

各种注册中心比较:

服务注册框架 CAP模型 web控制台
eureka AP 支持
zookeeper CP 不支持
consul CP 支持
nacos AP/CP(支持切换) 支持

C:Consistency(强一致性)

A:Availability(可用性)

P:Partition tolerance(分区容错性)

当前微服务注册中心都会支持分区容错性

下载启动后可以通过 http://localhost:8848/nacos 直接访问  默认账户密码都是nacos

Nacos默认自带的是嵌入式数据库derby ruguo  需要做更加安全 的持久化配置可以修改nacos\conf下的配置文件修改为mysql连接信息

集群搭建了解(以下为官网架构图)

微服务(alibaba系列)必备架构nacos、seata、sentinel

首先在三台nacos中配置好三台各自的集群信息,然后实际上就是通过nginx代理  负载均衡三台nacos

在项目代码中只需要向nginx地址注册服务信息即可

2.Seata

官网地址:http://seata.io/zh-cn/

文档地址:http://seata.io/zh-cn/docs/overview/what-is-seata.html

seata是用于解决分布式事务的数据一致性问题的框架。在我们的微服务中多个业务模块微服务甚至多个数据库的互相调用,如果发生异常则无法控制其他微服务的数据回滚。这个时候需要一个能统一控制微服务之间的调用事物协调的框架Seata。(单机版无分布式事务问题)

主要组件

Transaction ID全局唯一的事务ID+TC、TM、RM三个组件

TC - 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。

TM - 事务管理器:定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM - 资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

官网处理过程图形

微服务(alibaba系列)必备架构nacos、seata、sentinel

使用:通过官网文档集成到项目中之后,只需要在service层方法上打一个注解 @GlobalTransactional

3.Sentinel

官网地址:https://github.com/alibaba/Sentinel

文档地址:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D

Sentinel: 分布式系统的流量防卫兵

Sentinel 是什么?

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。(官网原话)

微服务(alibaba系列)必备架构nacos、seata、sentinel

https://github.com/alibaba/Sentinel/releases 下载运行jar

java -jar sentinel-dashboard-1.7.1.jar  运行

访问sentinel管理界面   http://localhost:8080  登录账户密码均为 sentinel

web可视化界面微服务(alibaba系列)必备架构nacos、seata、sentinel

流量控制:

        阈值类型:

                 可以通过新增某个接口的流量控制 

                  QPS(每秒请求数量):当前调用api的QPS达到阈值进行限流

                  线程数:当前调用api的线程数达到阈值进行限流

         流控模式:

                   直接:api自己到阈值条件,直接限流

                   关联:当关联资源达到阈值就限流自己

                   链路:指定调用链路上的流量达到阈值就限流

          流控效果:

                    快速失败:直接提示失败

                    warm up: 根据codeFactor(冷加载因子,源码中默认3),从阈值/codeFactor,经过预热时长,才慢慢达到                                         阈值

                     排队等待:字面意思排队等待

直接通过web控制台新增流控配置

 

降级:

熔断:

持久化: