70 likes | 200 Views
案例 - SQS 的新生. 蓝金伟 (lanjinwei@gmail.com). Opensqs 的设计目标. Opensqs 架构. 这 是物理上的系统结构图 Qclient / Qmaster / Qnode 都是不同物理机上的进程 Qclient 是客户端程序 Qmaster 是 OPENSQS 系统节点和队列管理集群 Qnode 是 OPENSQS 系统队列消息服务集群. 设计思路. 构建在一些成熟的技术之上 开发语言 选用 c++ 底层存储库 选用 Bdb 服务器框架 选用 libevent 协议层选用 protobuf
E N D
案例 -SQS的新生 蓝金伟(lanjinwei@gmail.com)
这是物理上的系统结构图 • Qclient/Qmaster/Qnode都是不同物理机上的进程 • Qclient是客户端程序 • Qmaster是OPENSQS 系统节点和队列管理集群 • Qnode是OPENSQS 系统队列消息服务集群
设计思路 • 构建在一些成熟的技术之上 • 开发语言 选用 c++ • 底层存储库 选用 Bdb • 服务器框架 选用 libevent • 协议层选用 protobuf • 系统内对象主要包括 节点/队列/消息 • 基于节点/队列 变更少,数据可靠性要求高的特点 • 参照 Chubby 系统设计实现 分布式节点管理系统 (Qmaster) • 该系统由多个互为备份的节点组成,是系统/节点/队列 当前状态的唯一维护者, • 当前只有一个节点服务,其他节点备份,每次系统内的 系统/节点/队列 变更, • 按分布式协议将变更备份到可靠数目的节点上,服务节点失效立即选举产生新的服务节点 • Qmaster还包括系统内自维护功能,包括自动扩展,垃圾回收等等, • 总之,Qmaster是系统真正的可靠的脑袋,是系统控制器,控制其他工作节点工作 • 基于 消息 操作的并发大,响应要求高的特点 • 每个队列的服务会定位在一个特定工作节点上(Qnode),客户端寻址到服务节点(Qnode)后,直接和该节点做消息操作, 该节点也只负责响应客户端 和 根据 Qmaster的指令做系统维护,自己不存在智能, 这种简单设计减少其复杂性,做到 高效 并且随时方便的 加入和退出