摘要: 背景 现有个处理股票行情消息的系统,其架构如下: 由于数据量巨大,系统中启动了 15 个线程来消费行情消息。消息分配的策略较为简单:对 symbol 的 hashCode 取模,将消息分配给其中一个线程进行处理。 经过验证,每个线程分配到的 symbol 数量较为均匀,于是系统愉快地上线了。 运行一 阅读全文
posted @ 2020-10-03 22:25 buttercup 阅读(1490) 评论(2) 推荐(5)
摘要: 外部存储 数据库管理系统DBMS是现代应用中不可或缺的一部分,其中一个重要原因是其隐藏了外存管理的细节,并为应用层提供了高效、易用的数据检索Retrieval与持久化Persistence功能。 外存具有容量大、成本低、断电非易失等优点,但同时也存在寻址慢、访问粒度粗的问题: 内存寻址速度快(ns 阅读全文
posted @ 2020-08-10 00:10 buttercup 阅读(2079) 评论(1) 推荐(2)
摘要: Paxos 存在的问题 Paxos 算法的描述偏学术化,缺失了很多细节,无法直接应用于工程领域。实际工程应用中的分布式算法大多是 Paxos 的变种,验证这些算法的正确性也成为了一个难题。 举个例子:上一篇文章的 最后 介绍了一个应用 Paxos 算法的工程模型,这个模型存在明显的写性能瓶颈: 使用 阅读全文
posted @ 2020-05-23 18:40 buttercup 阅读(6483) 评论(0) 推荐(1)
摘要: 可用性与一致性 为了向用户提供更好的服务体验,现代软件架构越来越注重系统的可用性availability。 正是在这种趋势的驱动下,微服务与容器化技术才能在今天大行其道。 而高可用架构的前提是冗余: 一个高可用服务必然由多个进程组成,这些进程互为备份,部分进程失效不会导致整个服务不可用。 如果服务是 阅读全文
posted @ 2020-05-12 00:50 buttercup 阅读(791) 评论(0) 推荐(0)
摘要: 副本一致性 现代的数据库系统来说,几乎都具备了复制机制replication,这种设计方式至少能对系统带来两个好处: 多副本容灾:只要存在一个可用数据副本,数据就能够恢复 读性能水平扩展:通过分布到不同的机器上,同一份数据能够在多个节点上同时供外部访问 保证多副本的数据一致性consistency是 阅读全文
posted @ 2020-05-04 01:09 buttercup 阅读(2399) 评论(0) 推荐(0)