EDA365电子工程师网

标题: 一周往事1508 [打印本页]

作者: stupid    时间: 2015-2-23 16:55
标题: 一周往事1508
本帖最后由 stupid 于 2015-2-24 11:10 编辑 3 |+ J- A- h4 l1 T+ U
, \$ l( t) e9 r  q* r3 `: Y* q' ]
旧历的年底毕竟最像年底,村镇上不必说,就在天空中也显出将到新年的气象来。灰白色的沉重的晚云中间时时发出闪光,接着一声钝响,是送灶的爆竹;近处燃放的可就更强烈了,震耳的大音还没有息,空气里已经散满了幽微的火药香。在稀稀拉拉的爆竹声中,在近乡情怯的渴望中,我回到了故乡某镇。  
我的旅途跟回乡的诸君一样,也是一波三折,先乘高铁,再换火车,最后是班车,如同三级火箭一样,非得耗尽了所有的燃料,才能将卫星送入轨道一样,旅程的终点你也便到了家。归途,不用说,自然是另一艘飞船的返航。
8 r6 m4 Z8 q3 A( j6 y. l6 i
1.    落后的互联网和信息不对称
天水,是我回家路上的最后一个中转站,我想大部分人也许知道封装企业华天和任大炮的基友潘石屹,但并不一定知道天水竟是他们的故乡,除非你是一个有逼格的屌丝,吃过潘苹果。
, A# D' V5 |" N! i9 m9 W
& G  |% A% f, I2 `: s$ o1 i/ C
年前从京东上帮人买过iPad,感觉送往天水的速度还蛮快的,还不觉得跟深圳有什么不同。但等我到了这个城市,进了商场,才发现了物价的巨大差异,乐事的一筒薯片可以卖到12.8,而家电的差价那就更是大了去啦,苏宁和京东标价两千多的电视在商场一定是三千出头,冰箱和洗衣机也是贵的离谱。当然客观的说,不是所有的东西都比外边贵,还是有平价的商品。可我不禁在想,为什么互联网如此发达的时代,还存在着这么大的信息不对称?我明白这里是所谓的四五六线城市什么的,可电商如此发达,物流如此迅捷,为什么还会有差价如此巨大的商品普遍存在,看来互联网是一种使用习惯,网购更是一种使用习惯。那么,回乡的你是否看到了这种现象呢?
) P8 U5 ^2 X% K* ?

; }4 z  l/ N- X; m8 g  z  K
我也注意到了,小米电视是不支持送货到甘肃的,所以也没有帮人买成,是否意味着雷布斯已放弃了这个市场就不得而知,但在高铁站我也注意到了创维满墙的GLED广告。在远离城市生活一周之后,在断网一周之后,今日始知GLED用的是创维与海思合作研发的14核电视芯片。
余额宝已经委然顿地,如同鸡肋。据说90%的P2P也倒闭啦,众多的屌丝估计还没享受到P2P高息的红利,就要面对血本无归的风险。而在农村,我则发现,远在这个时髦的词出现之前,人家早就开玩了,而且利息高的惊人,最厉害的可以到30%的年利率。我想除了四大行,没有一家实体企业能达到这个利率,就算如日中天的苹果,也不过才20%。看来不止是江浙一带才有普遍的民间拆解和高利贷。
2.    摇一摇、微信运动
春晚对于过年来说是一道必不可少的菜,虽然我没有完整的看完春晚,但至少有2件事我是记住啦,一个跟主旋律有关,是讲所谓的办公室政治和反腐的小品。而另一件事情,则特别有意思,那就是春晚的抢红包,居然只有微信露面,支付宝不知去哪儿了。据说峰值时间8.1亿次/分钟,哪个互联网人士来解释一下这需要多大的流量和服务器支撑,需要多少张加速卡,呵呵。

. Z2 C. x6 Y" F
; ^: {4 L/ O: \6 ^
更有意思的是就在年前,滴滴和快的合并啦,作为两家死掐的对手,居然就这么合并啦,跌破眼球的程度绝不亚于南车和北车的合并,这就是中国,这就是特色的社会主义。变化是唯一的不变,这件事情不过是再次应证了这个观点而已。如同深圳在去年中还在说什么绝不限购,到了年终却突然限购一样的神来之笔一样。
7 \3 b- q/ P) G
: Q2 V" {  d5 ^- f6 c+ y) C; S
       不管怎么说,微信已深入人心,基于微信的应用也越来越丰富,作为一个使用平台,就想操作系统一样,你几乎可以将任何应用都放在上边。这不,我最近就发现微信运动就是其中很有趣,很有益的应用,你只需要关注微信运动这个公众号,只要你的手机支持计步或装了乐动力这样的APP,又或者你带了手环,便能跟同时使用微信运动的朋友比一比运动量,对于缺乏运动的人来说,不啻于一种督促。
5 G8 N3 J; j% k% B# {6 x

& D, Y9 N' Z8 B. y- R# t& i! g
3.    黑夜给了我黑色的眼睛,我却用它寻找光明
我已经写了几期的一周往事,有点文艺格调的人一定会发现我固定的写法和标题规律,没错,小标题我一般采用了“性、谎言、录像带”这样看似风马牛不相及的手法。当然我决定做一些突破,用我有限的文学功底使得行文不枯燥。昨晚给夫人看过这篇文章之后,她用委婉的口气告诉我,这篇文章写得比较散漫,没什么神。我也觉得写得不好,这不重新花点时间修改一下,虽然是杂谈,但至少可以让读这篇文章的人感到愉悦一点,是为之计。

' J( _0 n& }# o) Y
初五,我们就开工了,新的一年开始啦,新的旅途也开始啦。我在这里不能免俗的祝福一句,2015,擦亮你的双眼,努力、奋斗、找到属于你的机会。借用我上上周测过的一个无比清晰的PAM4眼图来送上我的祝福吧。
6 m: V4 Q4 L; B9 W* V6 p
( z  s' i  B- b" n3 k
* }+ H2 H" f6 k7 ^

作者: stupid    时间: 2015-2-25 09:01
7 b* z6 ]3 `0 [) v, J+ z% }1 o! q

编者按:

     微信这么大的流量,尤其是瞬间的峰值,对于任何团队和架构师都是一个极大的挑战,我们也在想,微信团队会用什么样的办法扛住了抢红包的流量,正巧今天腾讯大讲堂的公共账号就分发出了这篇文章,尽管没有从具体的技术细节上介绍,但在宏观策略上还是相当地有学习的价值 ,优才网作为培养全栈工程师和未来架师的团队,转载并加以注释,分享给大家。

400倍的挑战( @9 o7 V7 U3 K

今年微信红包方式与去年用户与用户之间互发红包相比,摇红包的方式对业务量来说是一个极大的爆发,光是除夕10:30送出的一波红包就达到了1.2亿个,已经是2014年除夕夜峰值的400倍之巨(2014年峰值每分钟被拆开红包数量仅2.5W个)!

进入抢红包环节,后台数据瞬间飙升


1 i( o) ^7 \4 g2 m  _3 A# j

发10亿红包,难在哪里?

6 p$ n; w( s& q  C2 l  l

微信团队总结下来有三大难点:

" y6 V- l  m; c1 j5 Y: M' ^0 W6 @

快——如何保证用户快速摇到红包?

准——如何保证摇到的红包能成功拆开?

稳——如何保证拆开的红包能分享出去?

4 N3 u3 C$ s6 Y% R% H7 F) y5 k; n

大量用户在同一时间摇红包,瞬间产生每秒千万级的请求,这个量级的请求如果不加以疏导处理直接到达后台,必定会导致后端服务过载甚至崩溃。上文中除夕当天后台监控数据曲线便能说明一切——在前台重重的分流减压下,后台服务器负载仍然瞬间飙升十倍以上。

/ P0 N! @6 c8 h. Y# g+ j

* @4 ~; Z+ X+ ^+ d, ?( k2 Y  I  }
8 d2 u" d* F& r+ ?; j  @9 t

三大应对策略齐上阵

对于以上三个难点,微信后台开发团队主要通过三大应对策略应对:有损服务,柔性可用,大系统小做


4 f3 `' \0 }0 O" x2 g: I* W

什么是有损服务?有损服务是通过精心拆分产品流程,选择性牺牲一部分数据一致性和完整性从而保证核心功能绝大多数运行。这是腾讯在PC时代积累下来的一种特色运营策略——在资源一定的前提下,互联网条件千变万化的场景中,量力而为,满足用户的核心需求。


2 q0 N; c/ p9 J3 D

微信红包的核心点是摇,拆,分享红包,整个系统设计时必须尽最大可能保证这三个步骤一气呵成,任何关联系统出现异常的时候马上进行系统降级,防止引起系统雪崩。


- w# {( y; U4 ?- ]1 E) X" r- ?$ y

系统降级可以分为两个方面,一是把核心功能进行分拆和简化,通过辅助轻量化的服务实现,确保最短关键路径的可行,比方说在接入层置入摇红包逻辑,将每秒千万级请求转化为每秒万级的红包请求,再传到红包服务的后端逻辑,降低雪崩的可能性。


( p9 S' d3 H3 q  t+ O4 ^7 n0 z


1 g# ?; ]( o& ^1 g6 H9 {& D' v/ W5 o

点评:有损服务就是让重要的事情先做,重要的人物先行。这在现实中也很常见,军人买票优先,领导视察封路,让领导车先行,我等小民等待也是这个路子。

  _: p8 U1 h! C. O) S, t

同时后端采用异步分拆,接收到用户请求时仅进行合法性验证,验证完成后直接告知成功,后续业务逻辑进入异步队列进行处理,减少了用户的等待时间,也极大降低了峰值雪崩的概率。& B. m& e, h0 E$ D7 f


( t9 n) C7 Y$ {/ p8 _8 Q


/ [' ?9 e8 `- W耗时最长的入账操作,直接跳过,异步处理

+ I2 V+ f) s4 P3 M! R; T# m. d
+ i7 n4 D" l9 ?. p) g4 s

/ }& M  i4 t$ \- [1 m

另外一方面是采取过载保护措施:

微信红包的过载保护在客户端已提前预埋了策略,在连接失败或超时情况下会有相应提示,减少用户重复请求次数。接入层面也会进行自我保护,针对频繁发出请求的客户端限制响应速度,并对系统负载划分出若干等级,达到不同阈值时引导客户端使用不同限速速率;在异常情况出现时,采取减少红包数,异步限流降低拆/分享红包的速率等措施减轻服务器端压力;与此同时,微信红包还有全程压测流程,对整个业务链接进行自动提前评估,防止过载。
- B$ `* ^* d" [0 N


! _. k' v" [& _  H& ^/ h5 M

点评:在前端挡住对后端流量的进入,比如出现通信失败时,当前这个用户,对后台已经不会有什么压力了。


" e# @9 N8 i" |' c$ G  k5 S

" x2 ~+ d0 h: h* m( R6 M

这画面你可能没见过,它其实早已在手机待命


6 C& ^0 Q- E% p; m3 S! y

在有损服务思想的重重保护下,第一波的摇红包体验活动中,微信红包几乎满分通过考验,其中过载保护的作用相当明显,在客户端、接入层层减压、过滤,最终仅把十万级压力传递到后台。


  }/ g  W1 i: W  C1 R

柔性可用是在有损服务价值观支持下的方法,重点在于实际上会结合用户使用场景,根据资源消耗,调整产品策略,设计几个级别不同的用户体验场景,保证尽可能成功返回关键数据,并正常接受请求,绝不轻易倒下。


& N6 F" h2 y9 [3 H8 G+ y$ B; A' B

柔性服务更具有产品的思维性质,意义在于深刻理解产品每一个场景的核心价值,把握用户在每一个场景中的核心需求,设计不同层次的满足核心诉求的办法,对柔性服务在微信红包中的实践,红包团队也有相应的措施,主要可以分为几大类。

* X" Q& v' N! p! W; u: l& J# n

1、系统容灾:面对大规模的请求量,系统容灾必不可少,容灾一般可分为逻辑层容灾和数据层容灾,这次微信后台开发团队在容灾布置中采用30%切换的逻辑层方案,即核心服务都能做到最多1/3服务器出问题的情况下自动容灾切换以保证服务质量,提高预警级别换取系统的可用性。


' w4 B8 ~6 a6 Z8 \3 s' ?& _2 E

2、资源隔离:顾名思义就是把资源进行隔离减少服务支路间的影响,从逻辑入手,在资源逻辑中,当A服务同时分派任务给BC服务时,设定单个最大分配上限值,避免任意一个支路出问题影响整个服务链条,这样即使部分服务出现问题也不会影响到整个服务的崩塌。


" C/ R5 f1 z( I! {

3、快速拒绝:当服务过载时尽早拒绝请求,由服务调用方换机重试避免单一服务器重试过载,快速拒绝和有损服务中的及早拒绝是一个概念的方法,从过程的源头将问题解决,成本越低,影响越小,前端保护后端的方式来解决问题。

8 N  s8 k5 W" h' M; @

点评:这里面需要指出一点的是,客户端跟Web 系统不同,做这种操作的前提,是提前预计到关键路径,在客户端的版本更新中,将相关的指令和策略埋入,当接受数据获取异常时,在客户端自动就降低请求频率,比如一次请求失败,用户肯定想二次再刷,但是可能实际上没有向后端请求,而是直接返回,请客户稍安勿躁,如果不提前埋入,到有问题时才处理是来不及的。

/ m+ z) l2 ?. G+ J

4、支付分组:从支付环节入手,将所有红包分为50个组,放在50个单独的set上互不影响,单组set出问题最多只影响1/50用户,保证多数人服务不受干扰。分组set化也是柔性可用的一个重要技术手段,这一思维非常类似于现实生活中的集装箱思维——通过标准化,规模化的箱体设计,应对复杂多样的货物,使每个流通环节既独立又不失灵活。

) W) e  O* n9 u4 g8 P+ ?

5、流量预加载:从客户端入手,将语音图片等极消耗流量的资源提前让客户端自动下载预置好,提前将流量洪峰疏导,并在活动当天CDN将准备数百G带宽应对,这块也与过载保护中的快慢分离是相通的,将耗流量的服务提前加载避免高峰期间的冲突。

" g. R" E9 L! n) k6 Z5 a6 F) d: f, U

点评:这是提前准备,从各个路径上,把缓存用到彻底。


) I. A9 Q* G) B( U6 c

大系统小做应该来说,是一种意识,他的核心思想是将功能复杂较大的系统,化大为小,减少模块耦合,降低关联性,用多个独立的模块来实现整体系统的功能,大系统小做采用的是化繁为简,分而治之,便于开发和迅速实现。

( p% c' A4 B4 x1 i+ h' o( \

微信红包如此庞大的后台系统,模块也相当之多,而这次的模块微信开发后台团队采用了系统高度模块化的方式,分成一个个高度自制的小系统,形成高内聚低耦合的格局,每个模块之间不会过分依赖对方,这样的好处是不会因为任何一个模块而影响全部服务,避免牵一发动全身的风险,实现真正的灰度服务。

/ A0 P) G& A/ [# a! @. @' T

点评:降低耦合,增加问题处理时的难度和平时的可维护性。

6 |& n& L6 z  @0 t" w) H; A$ |

海量服务能力决定成败

从2014的滴滴打车,到2015的微信红包,腾讯用一个个案例,去证明自身在海量服务方面的实力。事实上,真正支撑起微信红包顺畅运营的幕后英雄,正是腾讯内部一个叫做“海量之道2.0”的技术体系。有损服务,柔性服务,大系统小做三大手段也是脱胎于此体系中。移动互联网大战硝烟味愈浓,BAT都在为争夺支付入口使出浑身解数,在业务从起步到小跑再到腾飞的过程中,巨头背后的海量服务能力将对其最终成败有着来越发深远的影响。

5 s7 z! M& x& j

7 Y" ^( ?% o' V1 T
$ y: e' ]2 g/ |5 O+ z

& B) t1 E, i9 e% B1 x6 j' x
作者: 苏鲁锭    时间: 2015-2-25 13:51
摇红包砸了不少电视
作者: buzheng821    时间: 2015-3-8 00:45
最后那PAM4信号时哪天机器产生的?
作者: buzheng821    时间: 2015-3-8 00:45
8 m8 ^3 l% y) L  w# }% r
最后那PAM4信号时哪台机器产生的?
作者: jj9981    时间: 2015-3-9 09:35

作者: lulu09    时间: 2015-3-9 09:37

作者: stupid    时间: 2015-3-13 11:27
buzheng821 发表于 2015-3-8 00:45
& @" v: x' p+ o7 B最后那PAM4信号时哪台机器产生的?

! y& Q# H* N/ ?- V你猜!7 N% n9 J+ I# G, m0 W

$ |9 J0 \  Y* J8 k; G0 ^这是一个可以亮瞎无数人双眼的PAM4眼图。
  N* L, D7 Q+ a
作者: buzheng821    时间: 2015-3-14 21:36
stupid 发表于 2015-3-13 11:27) g0 [8 n+ H2 v9 _, s: V0 R
你猜!
; `$ x# p; {! X8 e9 z$ l+ i9 d# L+ H4 h2 E7 I8 ]5 A, @! Q
这是一个可以亮瞎无数人双眼的PAM4眼图。
9 s/ l2 J1 U8 r& y1 N& \, m
或者你这是低波特率????: F# Y. W, T! Z3 ?# T+ s; b

作者: stupid    时间: 2015-3-16 09:55
同志,




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2