写点什么

架构 0 期 -week5- 学习总结

用户头像
陈俊
关注
发布于: 2020 年 07 月 10 日



1.虚拟节点一致性 hash

在听课的时候,我一直以为一个 key 在 hash 环中找到对应的虚拟节点是较复杂的计算点,但事实却不仅如此。



找 key 应该放在哪个虚拟节点,有现成的实现,即 Map 中寻找 key 大于等于某值的 `SortMap.tailMap`



而带虚拟节点的一致性 hash 算法,更应该考虑的是按真实节点,寻找合适的虚拟节点数,追求更均衡的缓存分布。



以下是寻找最小标准差的步骤:

  • 按每个节点扩展到 i 个虚拟节点,构建虚拟节点(的 hash 值)对应真实节点的映射

  • 把 keyCount 个 key 分布到真实节点上去,得到真是节点分配的 key 数量

  • 计算真实节点分配到的 key 数量的样本标准差

  • 寻找最小标准差及虚拟节点数



2.mq 解耦

mq 除了常规的异步消息作用,这里想介绍一点在我平时开发用得最多的一点特性:解耦。



一般随着业务发展,一个功能会涉及到越来越多的边际能力,比如发个短信、发封邮件、发个推送等等。



这些功能对一致性和可靠性要求不高,这时候就可以利用 mq 进行异步解耦,这些边际功能放在 consumer 里处理。

用户头像

陈俊

关注

还未添加个人签名 2017.09.10 加入

还未添加个人简介

评论

发布
暂无评论
架构 0 期 -week5- 学习总结