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

假定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.

阅读更多

每个人是极其独立的个体,很多事情是非常主观的,你说它重要它就重要,你说它不重要它便不重要,你说它有意义它就有意义,你说它没意义也就瞬间没意义了。人与人的共同理解是极少的,即便语言这种描述媒介表达出来甚是相同,仔细去看却有天壤之别。人多数以为的认同感都是一厢情愿的,我们都活在各自的世界里,去完成自己的人生使命,只是在彼此交织构筑的网里,做了一场属于自己的梦。 2017.02.13 于DS-BJ火车上

阅读更多