计算机

一致性哈希算法与高可用集群代理

假定N为后台服务节点数,当前台携带关键字key发起请求时,我们通常将key进行hash后采用模运算(hash(key)%N)来将请求分发到不同的节点上。 对前台请求于后台无状态服务节点不敏感的场景而言,只要请求key具有一定的随机性,哪怕节点动态增删,该算法于后台而言已可以达到很好的负载均衡效果。 但对于分布式缓存,或者分布式数据库等场景而言,上述方式就不合适了。因后台节点的增删会引起几乎所有key的重新映射。这样,于分布式缓存而言,均发生cache miss;于分布式数据库而言发生数据错乱,其影响是灾难性的。 而一致性哈希算法的目标是,当K个请求key发起请求时。后台增减节点,只会引起K/N的key发生重新映射。即一致性哈希算法,在后台节点稳定时,同一key的每次请求映射到的节点是一样的。而当后台节点增减时,该算法尽量将K个key映射到与之前相同的节点上。

阅读更多

手机品牌搜索走势图

当前,各应用平台每天都在产生海量的数据。基于海量数据的深度分析报告越来越有价值。该领域涵盖数学、统计学,计算机科学等众多学科,是一个值得深入研究的方向。本文涉及的是一个简单的数据分析场景,旨在梳理使用Python数据分析涉及的常用类库(pandas、matplotlib等)与入门知识。本文对指定的几家手机品牌,按日期区间,从百度指数网站获取其月度搜索数据,然后绘制出它们的搜索走势对比图。 1)关键点 a)日期区间(使用pandas的date_range方法); b)对指定日期(年月),获取手机品牌清单中各品牌的搜索量(requests使用); c)构造DataFrame(重点关注data、index和columns参数传值),结合matplotlib绘图。

阅读更多

根据遍历结果反向构建树

业务中也许会遇到反向构建树的情形,如从外部工具获取到依赖关系、行政区划,组织架构等文本数据时,如何去反向构建树。我们以“获取到了树的深度遍历结果,然后将树结构构建出来,最后用JSON格式输出”,来模拟此类树的反向构建过程。本文采用Ruby作为描述语言。 1) 已获取的树的遍历结果文本 company +- org-1 +- org-2 | \- org-2.

阅读更多