
分布式
文章平均质量分 73
喜欢打篮球的普通人
这个作者很懒,什么都没留下…
展开
-
分布式任务队列:cppq
cppq 是一个简单、可靠、高效的 C++17 分布式任务队列。cppq 是一个 C++ 库,用于对任务进行排队并与工作线程异步处理它们。它由 Redis 支持,旨在可扩展且易于入门。客户端将任务放入队列(队列由redis管理)服务器从队列中取出任务并为每个任务启动一个线程任务由多个worker同时处理任务队列用作跨多台机器分配工作的机制。一个系统可以由多个工作服务器和代理组成,从而实现高可用性和水平扩展。原创 2024-03-21 17:28:39 · 621 阅读 · 0 评论 -
taskflow:多线程并行任务
task之间可以并行,那么taskflow和普通线程池的区别在于,可以给task之间添加依赖关系,比如taskA.precede(taskB) 表示taskB依赖taskA;或者taskA.succeed(taskB) 表示taskA依赖taskB;那么构建了这个依赖关系之后,taskflow的能力就是可以在尽可能多的并行处理前提下,保证有依赖的任务之间的调用顺序。首先taskflow是基于graph的,每个独立的task只能在单核单线程上运行,可以看成一个执行单元。例如:B依赖A依赖S;原创 2024-03-16 10:08:49 · 1868 阅读 · 0 评论 -
分布式系统之选举算法
初始化的时候,所有节点都是普通节点。在指定时间内没有收到其他节点Alive信息,则认为自己是主节点,然后向其他节点发送Victory消息,宣布自己是主节点。若发起选举的节点超过一半选票,则成为主节点,状态转换为Leader,其他节点状态有Candidate转换为Follower,leader和follower之间有周期性的心跳包,用于检测主节点存活。在开源的Redis,MongoDB,Zookeeper等软件中也都采用了的选举算法,常用的选举算法有以下三种:Bully算法,Raft算法,ZAB算法。原创 2024-03-06 09:48:35 · 967 阅读 · 0 评论