八股微服务

Spring cloud

Springcloude五大组件

1.服务注册发现中心 ncaos

2.负载均衡 熔断 Sentinel

3.网关 getway

4.服务调用 feign

服务注册和服务发现是什么

服务注册者,服务发现者,注册中心 三者关系

Nacos与eureka

0.Nacos支持服务端主动检测服务提供者状态,而Eureka依赖客户端心跳。

  1. Nacos区分临时实例和非临时实例,采用不同的健康检查策略。

  2. Nacos支持服务列表变更的消息推送,使服务更新更及时。

  3. Nacos集群默认采用AP模式,但在存在非临时实例时,会采用CP模式;而Eureka始终采用AP模式。

项目的负载均衡

在服务调用过程中,我们使用Spring Cloud的Ribbon组件来实现客户端负载均衡。Feign客户端在底层已经集成了Ribbon,使得使用非常简便。

当发起远程调用时,Ribbon首先从注册中心获取服务地址列表,然后根据预设的路由策略选择一个服务实例进行调用,常用的策略是轮询。

naocs写入了地址,openfeiogn,按照这样来拿

  • 你在项目中引入 spring-cloud-starter-alibaba-nacos-discovery(Nacos 发现适配包);
  • Ribbon 会通过这个适配包,向 Nacos 发起请求,获取目标服务的地址列表;
  • Ribbon 选好实例后,把地址交给 OpenFeign 发起调用;
  • 整个过程中,Nacos 只是 Ribbon 的 "地址数据源",而非 Ribbon 的 "宿主"。

Nacos 提供地址,Ribbon 做负载均衡,Feign 负责发起调用。Feign 内置 Ribbon,Nacos 不内置 Ribbon。

Ribbon负载均衡策略有哪些?
如果想自定义负载均衡策略如何实现?

target-service 有多个实例(如 8080、8081 端口),OpenFeign 会通过内置的 Ribbon 以轮询策略自动选择实例调用,实现负载均衡。

OpenFeign

什么是服务雪崩
微服务健康

链路追踪工具

我们项目中采用的skywalking进行监控的 1,skywalking主要可以监控接口、服务、物理实例的一些状态。特别是在压测的时候可以看到众多服务中哪些服务和接口比较慢,我们可以针对性的分析和优化。 2,我们还在skywalking设置了告警规则,特别是在项目上线以后,如果报错,我们分别设置了可以给相关负责人发短信和发邮件,第一时间知道项目的bug情况,第一时间修复

业务相关

限流

业务层方面

tomcat限流

nginx限流

Sentinel限流

系统机器方面

采用k8s资源限制,或者动态调控

算法显卡

令牌桶

适配大型的请求,最大请求

漏斗

匀速请求

Cap

C 一致性 用户访问分布式系统中的任意节点,得到的数据必须一致

vailability (可用性):用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝

Partition(分区):因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。 Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务

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

如果保证访问的高可用性(A),可以持续对外提供服务,但不能保证数据的强一致性--> AP

如果保证访问的数据强一致性(C),就要放弃高可用性 --> CP

Base理论

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

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

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

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

分布式事务

MQ

Seata
Xa
AT模式
TCC
分布式事务

MQ模式实现分布式事务,在A服务写数据的时候,需要在同一个事务内发送消息到另外一个事务,异步,性能最好

需要保证MQ的可靠性

接口幂等

Redis解决

分布式锁

分布式任务调度

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

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

如果有大数据量的任务同时都需要执行,怎么解决?

相关推荐
MY_TEUCK11 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务
春天花会开13111 小时前
Kubernetes 高可用架构实战指南
架构
万里侯11 小时前
云原生数据备份与恢复:保障数据安全的最佳实践
微服务·容器·k8s
阿里云云原生12 小时前
阿里云 STAROps 全域智能运维平台发布!从“被动救火”到“主动自治”
云原生
码云之上12 小时前
万星入坞·其三:SDK 轻量组件如何优雅地"点亮"
性能优化·架构·前端框架
枫叶林FYL12 小时前
【强化学习】3 双系统持续强化学习:快速迁移与元知识整合架构手册
人工智能·机器学习·架构
AI科技星12 小时前
哥德巴赫猜想1+1基于平行素数对等腰梯形网格拓扑与素数渐近密度的大偶数满填充完备性证明
人工智能·线性代数·架构·概率论·学习方法
小短腿的代码世界12 小时前
信号路由风暴:Qt算法交易系统的高频信号分发架构
qt·算法·架构
2301_7807896613 小时前
手游遇到攻击为什么要用SDK游戏盾手游遇到攻击为什么要用 SDK 游戏盾?
安全·web安全·游戏·架构·kubernetes·ddos
35岁程序员的自救之路13 小时前
AiBBS - 面向下一个十年的AI + 云原生社区系统
人工智能·云原生