用过,Nacos服务注册中心可以注册各种类型的业务,例如订单app,商品中心,支付系统,会员中心
Ribbon是一个用于客户端的负载均衡工具,用于提高系统的可用性和性能
随机,轮询,权重,地址Hash,最小连接数
ribbon是客户端的负载均衡工具,客户端通过Ribbon选择合适的服务实例进行请求
nginx是一种实现服务器负载均衡的反向代理服务器,通常用于将客户端请求转发到后端服务器集群。
Spring Cloud OpenFeign是Spring Cloud中的一个组件,它对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Nacos,从而使得Feign的使用更加方便
1.导入依赖
2.在启动类添加@EnableFeignClients
注解
3.编写对应接口并加入spring容器中,添加@FeignClient
注解
4.通过@Autowired
注入并使用
回答1
Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端,提供了一种声明式的方式来定义和实现服务的API调用。Feign的使用方式是:使用Feign的注解定义接口,调用接口,就可以调用服务注册中心的服务。
OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解。OpenFeign的@FeignClient可以解析SpringMVC@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并且低耦合调用其他服务。
回答2
Feign是一个声明式的HTTP客户端工具,用于简化服务间的HTTP通信。使用Feign的注解定义接口,调用接口,就可以调用服务注册中心的服务
OpenFeign在Feign的基础上进行了增强和扩展,使其支持了SpringMVC的注解。它集成了Spring Cloud的服务发现和负载均衡功能,可以与其他Spring Cloud组件一起使用,实现服务的动态发现和负载均衡
@EnableFeignClients:调用端在启动类上添加@EnableFeignClients注解
@FeignClient:调用端声明一个调用接口并加上注解,通过该接口可以调用其他服务的api
Sentinel是阿里开源的一款轻量级流量控制框架,用于保护分布式系统的稳定性。它主要用于解决分布式系统中的流量控制、熔断降级、系统保护等问题
添加nacos相关依赖
在配置文件中,配置Nacos的相关信息
在Nacos配置管理中创建对应的sentinel配置
在项目中启动时,会自动从Nacos中获取sentinel配置信息,并进行持久化
用于构建微服务架构中的网关服务,网关可以作为系统的唯一流量入口,封装内部系统的架构,所有请求都先经过网关,由网关将请求路由到合适的微服务
流量网关:(如Nignx,OpenRest,Kong, Envoy)指提供全局性的、与后端业务应用无关的策略,例如 HTTPS证书认证、Web防火墙、全局流量监控,黑白名单等。
服务网关:(如Spring Cloud Gateway)指与业务紧耦合的、提供单个业务域级别的策略,如身份认证,下游接口的耗时,token身份验证,traceId全局链路跟踪等。
流量网关 负责南北向流量调度及安全防护
微服务网关 负责东西向流量调度及服务治理。
路由:由ID、目标URI、断言集合和过滤器集合组成。如果聚合的断言结果为真,则转发到该路由。
断言:允许开发人员匹配 HTTP 请求中的任何内容,比如请求头或请求参数或请求路径,最后根据匹配结果返回一个布尔值
过滤器:可以在返回请求之前或之后修改请求和响应的内容
1.下游接口的耗时
2.token身份验证
3.traceId全局链路跟踪
traceId全局链路跟踪作用:
它可以帮助开发人员在分布式系统中定位和解决问题,通过追踪和关联整个请求的处理过程
Gateway 过滤器从生命周期可分为
PRE前置过滤器:在请求被路由之前,调用到达网关之前进行的过滤操作。可以用于验证身份、鉴权、记录调试信息等。
POST后置过滤器:在路由到微服务以后执行。这种过滤器可用来为响应添加标准的 HTTP Header、对响应结果进行处理、日志记录、响应头的修改等。
Gateway 过滤器从作用范围可分为
全局过滤器:应用到所有的路由上(无需配置,全局生效)
局部过滤器:应用到单个路由或者一个分组的路由上
1.增加了一个询问阶段,协调者询问参与者是否能完成请求,参与者如果可以提交就返回Yes响应,否则返回No响应
2.3PC加入了超时机制
由 TC (Transaction Coordinator) - 事务协调者(带头大哥)来维护全局和分支事务的状态,驱动全局事务提交或回滚。TM (Transaction Manager) - 事务管理器 (鸡妈妈)定义全局事务的范围:开始全局事务、提交或回滚全局事务。RM (Resource Manager) - 资源管理器管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
涉及到几张表:
其中,TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端。
TCC(Try Confirm Cancel)是应用层的两阶段提交,针对每个操作,都要实现对应的确认和补偿操作,也就是业务逻辑的每个分支都需要实现 try(加锁,锁住资源)、confirm(执行业务,释放锁)、cancel (出问题,释放锁)三个操作
优点:
性能提升:具体业务来实现,控制资源锁的粒度变小,不会锁定整个资源。
数据最终一致性:基于 Confirm 和 Cancel 的幂等性,保证事务最终完成确认或者取消,保证数据的一致性。
可靠性:解决了 XA 协议的协调者单点故障问题,由主业务方发起并控制整个业务活动,业务活动管理器也变成多点,引入集群。
缺点:TCC 的 Try、Confirm 和 Cancel 操作功能要按具体业务来实现,业务耦合度较高,提高了开发成本。
undolog为什么要放在业务库里
undolog存储操作之前的数据,因为短事务由数据库保证数据的原子性,如果不在业务库里则无法保证数据的原子性。