架构
文章平均质量分 92
damon-pku
暮春三月,羊欢草长;天寒地冻,问谁饲狼?人皆怜羊,狼心独怆;天心难测,世情如霜。
展开
-
一致性哈希(hash)算法
1. 算法背景一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。2. 应用场景现在一致性hash算法在分布式系统中也得到了广泛应用,分布式系统中涉及到集群部署,包括缓存R...转载 2018-12-26 16:58:50 · 409 阅读 · 0 评论 -
RocketMQ基础概念及使用总结
1. 了解RocketMQ? RocketMQ是阿里开源的一款十分优秀的消息队列,RocketMQ具有很多其他消息队列不具有的特性,更重要的是RocketMQ是用Java开发的,学习成本较低,并且经历了双11的数据洪峰的考验。RocketMQ已经加入了apache,成为apache的顶级项目。目前RocketMQ的代码托管在github上:https://github.com/a...转载 2019-03-12 23:00:22 · 69 阅读 · 0 评论 -
服务发现机制
本文出自Service Discovery in a Microservices Architecture,作者 Chris Richardson, 写于2015年5月19日这是本系列文章的第四篇。第一篇文章:介绍微服务架构并讨论了微服务架构的优点和缺点; 第二篇文章和第三篇文章:描述微服务之间的通信的不同方面;本文我们继续探索与服务发现紧密联系的有关问题。一、为什么使用服务发现?...转载 2019-04-15 11:09:58 · 88 阅读 · 0 评论 -
一分钟了解负载均衡的一切
1. 什么是负载均衡 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。2. 常见的负载均衡方案 常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游...原创 2019-03-23 22:44:27 · 66 阅读 · 0 评论 -
微信多点登录,消息漫游,假如让你来实现?
微信如何实现手机端、PC端同时登录,同时收消息? 微信能不能实现,换一个手机,仍能拉取到历史消息?这是多点登录和消息漫游的问题。1. 什么是多点登录?以微信为例,可以PC端,phone端同时登录,同时收发消息。(需要注意的是,一个端只能登录一个实例,例如同一个QQ号,在pc1上登录,再到pc2上登录,后者会把前者踢出,pc1会收到通知“你已在别处登录”。)2. 什么是消息漫游?...转载 2019-03-10 22:41:58 · 74 阅读 · 0 评论 -
分布式锁的几种实现方式
1. 什么是分布式锁 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网...原创 2018-12-22 14:31:21 · 297 阅读 · 0 评论 -
群消息已读回执,究竟是推还是拉?
每当发出一条微信消息,都希望对方尽快看到,并尽快回复,但始终不知道对方是否阅读。每当收到一条不能立马回复的微信消息,都默默返回,假装没看见。微信用于个人社交,产品设计上,在线状态,强制已读回执都有可能暴露个人隐私,故微信并无相关功能。钉钉用于商务交流,其“强制已读回执”功能,让职场人无法再“假装不在线”,“假装没收到”。有甚者,钉钉的群有“强制已读回执”功能,你在群里发出的消息,能...转载 2019-03-10 21:42:46 · 94 阅读 · 0 评论 -
群消息,究竟存1份还是多份?
群信息,用户信息,群成员关系都是基础数据:group_info(gid, group_info);user_info(uid, user_info);group_members(gid, uid);假设一个群(gid)里有4个成员,其中三个在线(A, uid1, uid2),一个不在线(uid3)。A发送了一条消息,很容易想到,对于不同的群友消息存多份,每个群友一个队列来存...转载 2019-03-10 22:38:46 · 43 阅读 · 0 评论 -
feed流拉取,读扩散,究竟是啥?
任何脱离业务的架构设计都是耍流氓。1. 哪些产品是feed流典型业务?答:微博,微信朋友圈,Pinterest是典型的feed流业务,系统中的每一条消息就是一个feed。这类业务的特点是: 有好友关系,例如关注,粉丝; 我们的主页由别人发布的feed组成; 这类业务的典型动作是: 关注,取关;发布feed;拉取自己的主页feed流; 这类业务的...转载 2019-03-10 22:42:57 · 62 阅读 · 0 评论 -
朋友圈微博feed流,推拉实践
上一篇《feed流拉取,读扩散,究竟是啥?》关于feed流的拉取还是推送,只写了一半“拉取”,今天介绍另一半“推送”(写扩散)。为了对比“拉”“推”两种方案,同时也为了避免大伙在两篇文章切换,故先简单赘述背景与“拉”(读扩散)方案。feed业务特点:有类似于“关注/粉丝”的好友关系,个人的主页由别人发布的feed消息组成。feed业务典型动作:关注,取关,发布feed,拉取...转载 2019-03-10 22:45:06 · 65 阅读 · 0 评论