<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>分布式，服务器，架构 on 勇气</title><link>https://courages.us/tag/%E5%88%86%E5%B8%83%E5%BC%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9E%B6%E6%9E%84/</link><description>Recent content in 分布式，服务器，架构 on 勇气</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sat, 16 Apr 2016 12:15:56 +0800</lastBuildDate><atom:link href="https://courages.us/tag/%E5%88%86%E5%B8%83%E5%BC%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9E%B6%E6%9E%84/index.xml" rel="self" type="application/rss+xml"/><item><title>分布式系统</title><link>https://courages.us/%E5%AD%A6%E4%B9%A0%E5%BF%83%E5%BE%97/</link><pubDate>Sat, 16 Apr 2016 10:50:33 +0800</pubDate><guid>https://courages.us/%E5%AD%A6%E4%B9%A0%E5%BF%83%E5%BE%97/</guid><description>&lt;p&gt;好久以前写的了。在InfoQ上学习了&lt;a class="link" href="http://www.infoq.com/cn/presentations/design-and-implementation-of-distributed-monitoring-system" target="_blank" rel="noopener"&#10; &gt;分布式监控系统的设计与实现&lt;/a&gt;、&lt;a class="link" href="http://www.infoq.com/cn/presentations/technology-of-weixin-moments" target="_blank" rel="noopener"&#10; &gt;微信朋友圈技术之道&lt;/a&gt;，在架构设计的基础思想并不复杂。&lt;br&gt;&#10;首先是微信朋友圈技术之道，介绍了微信朋友圈团队的开发，团队仅４个人，因为他们站在巨人的肩膀上：&lt;br&gt;&#10;基础环境&lt;br&gt;&#10;全部才用C＋＋开发&lt;br&gt;&#10;混合部署普通服务器&lt;br&gt;&#10;海量带宽&lt;/p&gt;&#10;&lt;p&gt;强大的基础设施&lt;br&gt;&#10;腾讯CDN，图片和视频上传、存储、分发&lt;br&gt;&#10;RPC框架&lt;br&gt;&#10;Key－Value（KV）存储系统&lt;br&gt;&#10;强大、方便、灵活的部署系统&lt;br&gt;&#10;强大的RPC框架&lt;br&gt;&#10;C＋＋的框架&lt;br&gt;&#10;支持protobuf描述接口&lt;br&gt;&#10;支持进程/线程/协程多种模式：支持数十万的并发协程，方便编写和调试“同步”的网络调用和服务&lt;br&gt;&#10;从CGI到叶子服务器，全系统透明支持过载保护和QOS&lt;br&gt;&#10;为每次CGI调用自动生成全系统调用关系图&lt;br&gt;&#10;每个服务自动内建500多个监控项&lt;br&gt;&#10;高性能Key-value存储系统&lt;br&gt;&#10;三机一组，三机间支持数据一致性，容忍一台机器出错、自动切换&lt;br&gt;&#10;三机分布在一个数据中心的三个独立园区，在任意一个园区提供本区读写服务，容忍一个园区网络隔离&lt;/p&gt;&#10;&lt;p&gt;微信架构&lt;br&gt;&#10;接入层，维持长连接，避免重复连接开销；推送消息&lt;br&gt;&#10;逻辑层，注册/登录，消息，朋友圈，LBS；批处理，群聊，通知，好友推荐&lt;br&gt;&#10;存储代理层，账号，消息，关系链，朋友圈，群管理&lt;br&gt;&#10;存储层，Key-value存储&lt;br&gt;&#10;性能水平扩展（sharding）&lt;br&gt;&#10;相册，按照用户做水平扩展&lt;br&gt;&#10;发表，按照发表key做水平扩展&lt;br&gt;&#10;评论，按照评论key做水平扩展&lt;br&gt;&#10;时间线，按照用户做水平扩展&lt;/p&gt;&#10;&lt;p&gt;发表流程&lt;br&gt;&#10;上传图片到CDN，查找最近节点&lt;br&gt;&#10;调用朋友圈CGI&lt;br&gt;&#10;添加新发表&lt;br&gt;&#10;在相册增加新发表索引&lt;br&gt;&#10;添加时间线更新任务，批处理，给好友时间线添加新索引&lt;br&gt;&#10;返回发表成功&lt;/p&gt;&#10;&lt;p&gt;浏览流程&lt;br&gt;&#10;调用朋友圈CGI&lt;br&gt;&#10;拉取时间线&lt;br&gt;&#10;拉取新发表元数据&lt;br&gt;&#10;拉取CDN上的图片&lt;/p&gt;&#10;&lt;p&gt;数据单副本、索引写扩散、检查更新单读取&lt;br&gt;&#10;数据（发表）单副本：减少内存开销&lt;br&gt;&#10;索引写扩散、检查更新单读取：减少检查更新时的读扩散&lt;br&gt;&#10;写比较慢，失败可以重试；读不可等待&lt;/p&gt;&#10;&lt;p&gt;赞、评论与浏览&lt;br&gt;&#10;往赞、评论表插入发表索引和对应赞、评论&lt;/p&gt;&#10;&lt;p&gt;微信部署、接入与容灾&lt;br&gt;&#10;1地3园区对等部署，对等接入（电信、移动、联通）；数据对等分布于同步；对等服务&lt;br&gt;&#10;容灾，任何两个园区都可以提供全量无损服务&lt;br&gt;&#10;数据中心分布：上海、深圳、香港、加拿大&lt;br&gt;&#10;通信优先专线服务；其次公网（加密）&lt;br&gt;&#10;各数据中心可独立提供服务&lt;br&gt;&#10;各数据中心通过idc queue异步同步写入（自动重试）&lt;/p&gt;&#10;&lt;p&gt;核心数据读写分析&lt;br&gt;&#10;相册与发表&lt;br&gt;&#10;本地idc写入，单向同步到其他idc&lt;br&gt;&#10;key的全局唯一性保证无冲突（根据idc预先生成）&lt;br&gt;&#10;时间线&lt;br&gt;&#10;本地idc只保存本地用户时间线的key，无需同步&lt;/p&gt;&#10;&lt;p&gt;跨洋同步的挑战和应对&lt;br&gt;&#10;挑战：大带宽延迟、丢包、乱序、低可靠性（专心中断）&lt;br&gt;&#10;应对：延迟、丢包、乱序达到一定程度自动从tcp切换到udp；专线中断自动切换到公网（AES加密）&lt;/p&gt;&#10;&lt;p&gt;评论、赞写冲突&lt;br&gt;&#10;因果一致性（不同数据中心保证key不重复，比如不同idc取模）&lt;/p&gt;&#10;&lt;p&gt;参考链接：&lt;br&gt;&#10;&lt;a class="link" href="http://www.infoq.com/cn/presentations/design-and-implementation-of-distributed-monitoring-system" target="_blank" rel="noopener"&#10; &gt;分布式监控系统的设计与实现&lt;/a&gt;&lt;br&gt;&#10;&lt;a class="link" href="http://www.infoq.com/cn/presentations/technology-of-weixin-moments" target="_blank" rel="noopener"&#10; &gt;微信朋友圈技术之道&lt;/a&gt;&lt;/p&gt;&#10;</description></item></channel></rss>