当前位置: 首页 > news >正文

微服务相关问题(2)

1、Spring Cloud相关常用组件

注册中心(nacos、Eureka等)、负载均衡(Ribbon、LoadBalancer)、远程调用(feign)、服务熔断(Sentinel、Hystrix)、网关(Gateway)

2、nacos与Eureka的区别

相同:

  • 都支持服务注册和服务拉取
  • 都支持服务提供者心跳方式做健康检测

区别:

  • nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式。
  • 临时实例心跳异常会被剔除,非临时实例不会。
  • nacos支持服务列表变更的消息推送,服务列表更新及时。
  • nacos集群默认采用AP模式(高可用模式),当集群中存在非临时实例时,采用CP模式(强一致模式),Eureka采用AP方式。
  • nacos还支持配置中心,Eureka只有注册中心。

3、服务雪崩

服务雪崩:一个服务失败,导致整条链路的服务都失败的情形

解决方式:

  • 服务降级(针对某个接口):服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受到请求突增影响变得不可用,确保服务不会崩溃,一般在实际开发中与feign接口整合,编写降级逻辑。
  • 服务熔断(针对整个服务):默认关闭,需要手动打开,如果检测到10秒内请求的失败率超过一定比率(如50%),就会触发熔断机制,之后每隔5秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果服务可达,则关闭熔断机制,恢复正常请求

4、微服务的监控——skywalking

skywalking:一个分布式系统的应用程序性能监控工具,提供了完善的链路追踪能力。

skywalking主要可以监控接口、服务、物理实例的一些状态。特别是在压测的时候可以看到众多服务的中哪些服务和接口比较慢,我们可以针对性的分析和优化。

skywalking还可以设置告警规则,特别是在项目上线后,如果报错,我们分别设置了可以给相关负责人发短信和发邮件,第一时间知道bug,第一时间修复。

5、微服务限流

限流实现方式:tomacat:可以设置最大连接数(一般在单体项目中使用),nginx:漏桶算法,网关:令牌桶算法,自定义拦截器。

nginx限流:

基于客户端IP:

语法:limit_req_zone key zone rate

key:定义限流对象,binary _remote_addr就是一种key,基于客户端ip限流方式。

zone:定义共享存储区来存储访问信息,10m可以存储16wip地址访问信息。

rate:最大访问速率,rate=10r/s,表示每秒最多请求10个请求。

burst=20,相当于桶的大小。nodelay:快速处理。

基于控制并发数:

语法一样,还是上面这个:limit_req_zone key zone rate。

对应的key变为: $binary_remote_addr,表示限制单个IP同时最多能持有多少个连接。

网关限流:

yml配置文件中,微服务路由设置添加局部过滤器RequestRateLimiter。默认是使用redis的连接去存储令牌。

6、分布式事务

CAP定理:CAP是一致性(consistency)、可用性(availability)、分区容错性(partition tolerance)的首字母缩写

分布式系统节点之间肯定是需要网络连接的,分区(P)是必然存在的。

如果保证访问的高可用性,可以持续对外提供服务,但是不能保证数据的强一致性,那这种就是AP。如果保证访问数据的强一致性(C),那么就要放弃高可用性,这种就是CP。

BASE理论是对CAP的一种解决思路,包含三个思想。

Basically Available(基本可用):分布式系统出现故障时,允许损失部分可用性,即保证核心可用。

Soft State (软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。

Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

7、分布式事务解决方案

常用解决方案:seata框架(XA、AT、TCC)、MQ。

seata框架:

该框架中用三个重要角色:

TC(事务协调者):维护全局和分支事务状态,协调全局事务提交或回滚。

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

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

这里的XA模式就是上面提到的CP模式(数据强一致性)。

AT模式就是上面提到的AP模式(高可用性),底层使用undo log实现。

TCC模式也是AP模式,使用try、confirm、cancel进行事务操作。

MQ:

这种一般时保证高可用,对数据强一致没有效果。

8、分布式服务的接口幂等性的设计

幂等:多次调用方法或接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。

解决方案:数据库唯一索引(新增操作时)、token+redis(新增、修改都可以解决)、分布式锁(也可以解决新增、修改时的幂等性问题)

9、分布式任务调度

这里主要介绍xxl-job。

xxl-job:解决集群任务重复执行的问题、cron表达式定义灵活、定时任务失败了,重试和统计、任务量大、分片执行。

xxl-job的路由策略:大概有十种:轮询、随机、第一个(固定找第一个实例执行)、最后一个(固定找最后一个实例执行)、一致性hash(按照hash算法固定选择某一个实例,且所有任务均匀散列在不同实例上)、最不经常使用、最近最久未使用、故障转移(当去执行的实例出现故障,则选择新的健康的实例去执行)、忙碌转移、分片广播。

xxl-job任务执行失败怎么解决:

故障转移+失败重试,查看日志分析——>邮件警告

http://www.dtcms.com/a/281934.html

相关文章:

  • 【前端Vue】this.resetForm(“form“)重置表单时出现indexOf报错的解决方案
  • GraphQL与REST在微服务接口设计中的对比分析与实践
  • Vue 3 中调用子组件方法
  • Linux-局域网构建+VLAN 划分 + 端口 MAC-IP 绑定 + 静态 DHCP
  • 基于MATLAB的k近邻KNN的数据分类预测方法应用
  • ArcGISPro应用指南:使用ArcGIS Pro创建与优化H3六边形网格
  • 深度剖析 TDMQ RabbitMQ 版经典队列底层存储机制
  • 【C# in .NET】11. 探秘泛型:类型参数化革命
  • C++ 面向对象
  • 滚珠导轨在封装设备如何体现高精度运行?
  • 创建linux端口映射连接小网
  • 基于CentOS的分布式GitLab+Jenkins+Docker架构:企业级CI/CD流水线实战全记录
  • 如何选择适合的云手机配置?解决资源不足带来的性能瓶颈
  • Clip微调系列:《coOp: learning to prompt for vision-language models》
  • 蓝光三维扫描技术:手机闪光灯模块全尺寸3D检测的高效解决方案
  • Clip微调系列:《CLIP-Adapter: Better Vision-Language Models with FeatureAdapters》
  • pytorch | minist手写数据集
  • 防止应用调试分析IP被扫描加固实战教程
  • react19+nextjs+antd切换主题颜色
  • 【python学习】windows使用conda管理python虚拟环境
  • RNN循环神经网络
  • 面试问题:
  • STM32硬件I2C的注意事项
  • CCK-8 实验详解及 Graphpad 作图指南
  • 阿里云 RabbitMQ 可观测性最佳实践
  • 恶补DSP:1.F28335的时钟系统
  • Swarm Network 选择 Walrus 实现可验证 AI
  • 网络安全(初级)(Python实现sql自动化布尔盲注)
  • JWT基础详解
  • 【云原生网络】Istio基础篇