java专题之微信后台

一、面临的挑战

1.1 极致的业务特性

(1)流畅的消息收发

(2)及时的通知

(3)省电

(4)省流量

(5)瘦客户端

1.2 困难的后台-终端同步

(1)同步多样数据:账户信息、通讯录、消息、朋友圈等

(2)及时通知与同步

(3)移动网络下的可靠同步

(4)省流量与电量

二、架构方案

2.1 极简的同步协议

(1)后台与终端只需要沟通一个数字,后台即可知道终端缺失的所有数据。

(2)变更序列号/版本号:-后台对用户数据的每项变更,都赋予一个单调递增的序列号,即用户的每项数据都有 一个全局递增序列号。-后台每次给终端发送数据都会带上所发送的所有数据的最大序列号。-终端每次请求数据时都会带上已经接受到的最大序列号。

2.2 高效的通知机制

(1)ios Apple Push Network Service

(2)Android等-长连接

(3)GPRS/EDGE信令风暴优化

(4)自适应心跳间隔调节

2.3 三层后台架构

2.4 统一的RPC框架

根据ProtocolBuffer定义生成服务器框架和客户端:

服务器:开发人员填充接口实现

客户端:应用方本地调用客户端提供的接口函数

屏蔽网络细节:

支持基于TCP/UDP的网络调用

支持长短连接

丰富的功能:

基于sharding的SET分布

基于一致性哈希的无状态存储

服务透明重定向

丰富的自动化监控:

(1)QPS;

(2)响应时间;

(3)排队时间;

(4)各个接口的调用频率与返回状态码分布;

(5)各个服务之间的调用拓扑

2.5 高并发的协程RPC

服务器同步的调用模型相较异步模型更容易学习、使用和调错。但一台服务器支撑的进程数和线程数是非常有限的。

基于用户态线程(协程)的RPC:

单机可以支撑数万甚至十万的用户态线程,仅受CPU和内存约束

提高并发性和性能

用户态线程RPC的实现:

基于makecontext/getcontext/swapcontext

Hook Network: read/write/epoll

用户态线程调度

2.6 就近访问

(1)就近访问IDC

(2)就近网络接入:覆盖各大运营商

(3)CDN:上传下载图片

2.7 多IDC分布提升用户体验

(1)国内复杂的网络环境

(2)超过1亿的海外用户-分布在全球-更为多样化的网络环境

(3)每个IDC都提供完整的功能和所需访问的所有数据

(4)每个IDC有共同的数据和独立数据-账户信息全球一致-用户数据各自独立:(1)一个用户只属于某个IDC;

(2)用户属性、关系链、消息;

(3)按需共享的SNS数据-照片、评论、红心,减少网络同步带宽消耗


2.8 IDC分布数据的高可靠最终一致性保证

(1)账户数据和SNS数据主备访问模型-用户所在的IDC是主IDC-其他IDC相对这个用户所在IDC都是备IDC-更新由主扩散到备

(2)弱实时性跨IDC更新采用基于Zookeeper仲裁的主备任务队列-收拢跨IDC访问接口-重做保证跨IDC更新的可靠性-数据序列号在重做时保证达到最终一致性

(3)关系链跨IDC更新-隐私控制要求实时性-直接跨IDC网络调用-后台批处理重试失败请求

2.9 容错和容灾机制

(1)单IDC-用户按SET分布,各个SET之间独立(2)高可用的异地容灾-每个服务的主IDC都有一个灾备IDC-挑战:终端在主备IDC切换时的无缝连接;主备间的数据一致性

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容