- 博客(11)
- 收藏
- 关注
原创 分布式系统设计(6):分布式系统的通信方式(下)
RocketMQ是阿里开源的高性能消息队列,主要用于服务间的远程异步通信。适用于“发布-订阅”异步模型,支持异步通信、削峰填谷、最终一致性等功能。削峰填谷:在高峰流量时通过消息队列缓冲,平滑系统负载。
2025-05-02 20:51:13
222
原创 分布式系统设计(9):分布式搜索引擎之Elasticsearch
Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎全文检索:支持分词、相关性评分、高亮、同义词等搜索特性;分布式架构:天然支持集群、分片、复制机制;近实时(NRT):数据写入后几乎立即可搜索;:操作友好,支持 JSON 格式交互;高扩展性:节点可动态加入/退出,支持水平扩展;多租户支持:一个集群可管理多个独立索引。简言之,ES 是 “搜索界的 MySQL”,但远不止搜索引擎,还可视为 NoSQL 数据库、日志平台、推荐引擎等的基础设施。
2025-05-02 20:50:31
2289
原创 分布式系统设计(8):分布式链路追踪详解
全自动:通过框架(如 Spring Cloud Sleuth)自动添加追踪逻辑(Controller 入口、RestTemplate / Feign、Kafka / RabbitMQ、异步线程池);2.创建Span(即埋点):所有服务生成一个span(调用片段),记录:开始时间、结束时间、服务名、方法名、是否异常等。(3)系统可观测性增强:更好地理解系统中请求全貌,即服务间的调用关系。(4)支持SLA分析、容量预估:根据调用链数据做流量分析、依赖分析等。
2025-05-02 20:48:09
679
原创 分布式系统设计(7):分布式锁的实现方式
(1)性能:Redis > Zookeeper > MySQL(2)一致性:Zookeeper = MySQL > Redis(3)成本:Zookeeper > Redis > MySQL用 Redis 锁,推荐 Redisson,封装好,支持 WatchDog 自动续约;高可靠性、公平需求可以考虑用 Zookeeper;不推荐用 MySQL 除非条件受限。
2025-05-01 12:26:07
772
原创 分布式系统设计(6):分布式系统的通信方式(上)
而国内互联网行业的分布式系统同步和异步通信框架大多用的是Dubbo和RocketMq(国际主流目前是gRPC和Kafka、RabbitMQ),这里只讲述国内主流的通信方式,为啥选它俩,是因为它俩撑过了双十一的超高流量洗礼,依然经受得起挑战,此外社区活跃、文档完善、兼容Spring Boot也是选择理由。它们在分布式架构中通常是配合使用的。根据系统需求不同,通信方式可以分为同步通信(Dubbo、gRPC、Http)和异步通信(消息队列RoketMq、Kafka)。在这样的系统中,服务之间的通信变得尤为重要。
2025-04-30 00:48:57
638
原创 分布式系统设计(5):常见分布式ID生成方案
(1)原理:基于计算机硬件信息(即MAC地址,出厂烧录在网卡芯片中的48位地址,如00-1A-2B-3C-4D-5E)和时间戳,通过特定算法生成的全球唯一ID(如550e8400-e29b-41d4-a716-446655440000)。(IO连接数、CPU达到瓶颈),查询和索引性能大幅度下降,这时需数据库水平拆分(Sharding),而每个库ID都是独立增长,可能导致ID不唯一。(3)适用场景:高并发场景下生成全局ID(秒杀订单号、日志追踪ID、接口流水号等),同时不想依赖外部服务(无中心化依赖)。
2025-04-29 19:20:14
1526
原创 分布式系统设计(4):四种常用分布式事务(下)
TCC(Try-Confirm-Cancel)模式是一种分布式事务解决方案,它将“提交/回滚”事务过程拆分成三个阶段,特指。
2025-04-28 22:33:25
615
原创 分布式系统设计(4):四种常用分布式事务(上)
在上一篇文章中,介绍了分布式事务的基本概念及其作用,并简要讲解了两种不常用的分布式事务协议:二阶段提交(2PC)和三阶段提交(3PC)。
2025-04-28 17:24:28
1408
原创 分布式系统设计(3):分布式事务之两阶段/三阶段提交
协调者Coordinator给所有参与者Participants发送Prepare请求,让各个参与者执行本地事务操作,但是先不提交(只写日志/锁定数据),然后返回成功(Ready)或失败(Abort)。如下单系统,扣库存在库存服务节点,扣钱在支付服务节点,,订单写入在订单服务节点,这三步要么全部成功,要么全部失败。两阶段提交(2PC)- Coordinator控制所有参与者,第一阶段准备,第二阶段提交或回滚。,参与者不知道该提交还是回滚,导致锁住资源,系统资源卡死),提出了3PC提交理论。
2025-04-27 23:05:20
502
原创 分布式系统设计(2):简述两种常用的一致性协议算法
算法存在三种角色: Leader(首领,负责写操作和广播操作),Follower(跟随者,听从领导的广播并执行相应的操作,以及监听领导的心跳),Candidate(候选人,跟随者接收不到领导心跳时,在随机超时时间后发起竞选)和paxos算法相同,也是分布式一致性协议,Rarft算法通过领导选举,日志复制等机制,实现更易于理解的一致性协议。特点 - 因为需要多数节点表同意,所以只能允许少量节点宕机,容错性强,但是复杂性高,两个阶段的存在使得性能一般。如果任期相等,再比索引,索引大才更新。
2025-04-27 15:47:56
458
原创 分布式系统设计(1):简述CAP和BASE理论
分布式系统必须保分区容错性(因为业务系统正常使用过程中,网络异常一定会发生概率99.99%,所以需要保证分区容错性),只能在可用性和一致性中二选一。用BASE理论来设计一个系统的话,需要允许系统在短时间内数据不一致,以换取高可用性,且能保证数据最终是一致的。CAP理论指出,在分布式系统中,无法同时满足一致性(C),可用性(A),分区容错性(P),最多只能满足其中两项。CP系统(放弃可用性)- 如ZK,在网络分区(节点故障)时,Zookeeper会选择不响应部分请求或返回错误信息,以保证一致性。
2025-04-27 15:12:58
319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅