八股微服务

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任务执行失败怎么解决?

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

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

相关推荐
2501_941149502 小时前
2026年云原生架构演进全景录:从单体拆解到 Serverless 落地,深度复盘百亿级中台的重构之路
云原生·架构·serverless
imuliuliang2 小时前
MySQL的底层原理与架构
数据库·mysql·架构
正宗咸豆花2 小时前
端到端AI决策架构如何重塑实时协作体验?
人工智能·架构
gyx_这个杀手不太冷静2 小时前
OpenCode 深度解析:架构设计、工具链集成与工程化实践
前端·架构·ai编程
liangshanbo12152 小时前
大模型 RAG 向量数据工程全链路架构笔记
笔记·架构
@土豆3 小时前
k8s环境部署promethus及周边监控组件(复制粘贴就可完成部署)
云原生·容器·kubernetes
掘根3 小时前
【微服务即时通讯】环境搭建10——Curl实现邮件通知服务
微服务·云原生·架构
孤影过客3 小时前
X86架构黎明:从0xFFFFFFF0开始的内存空间重构与寻址深潜
单片机·重构·架构
海南java第二人4 小时前
Cursor 高级实战:从 Spring Boot 到微服务,AI 驱动的全流程开发指南
人工智能·spring boot·微服务