专栏名称: 林湾村龙猫
资深后台开发
目录
相关文章推荐
天玑-无极领域  ·  1、明码标价,概不赊欠。2、自由交易,愿者上 ... ·  6 小时前  
野球帝  ·  久等了!短袖来了!29元起! ·  23 小时前  
野球帝  ·  再冲一波!自家球袜,33元3双! ·  2 天前  
野球帝  ·  再冲一波!自家球袜,33元3双! ·  3 天前  
全国妇联女性之声  ·  “这是春吗?这不是春” 她的文字为何火爆全网? ·  3 天前  
全国妇联女性之声  ·  “这是春吗?这不是春” 她的文字为何火爆全网? ·  3 天前  
51好读  ›  专栏  ›  林湾村龙猫

互联网架构的三板斧

林湾村龙猫  · 掘金  ·  · 2018-04-09 07:46

正文

【作者简介】 本文来自蚂蚁金服技术经理于君泽的分享。于君泽是蚂蚁金服高级技术专家、支付核算技术部负责人、成都研发中心技术团队创建者之一,先后负责或参与过转账类业务、账单类业务、社区支付、开放平台、支付平台、资金核算平台、类营销类支付工具的建设;之前有数年电信业务研发经验,涉及BSS|OSS|针对性营销等平台。推荐一下本文作者的公众号,一个认真、有内涵、但更新不太频繁的技术公众号:TheoryPractice。作者同时也是中生代技术(微信公众号:freshmantechnology)发起人。


本文普及一下传说中的互联网架构三板斧,以便有些场没赶上滴,有些会没参加滴,听完没有来得及消化滴,也能get到技能(学习也是棒棒的)! 有人问了为啥是三板斧,是[三],不是[四],这也是习惯的力量!比如为啥是煎饼果子让西乔姐苦恼了一样。

9fbe56b2fe8dab0d63daa406c9b9bf0c42d489de

可多层包裹的煎饼

a1aea490516b6218dc1e5286e58289fa397cb7ee

可无限扩展的单元化豆腐 Ps:关于[三]的流行参考,百度可得
  • 宅男有三好;Dota、基友、破电脑。
  • 萝莉有三好;柔体、轻音、易推倒。
  • 屌丝有三废;在吗、忙不、早点睡。
  • 女神有三宝;干嘛、呵呵、去洗澡。
“ 与传统意义上的红包相比,近两年火起来的互联网“红包”,似乎才是如今春节的一大重头戏。春晚直播期间讨论春晚的微博达到5191万条,网友互动量达到1.15亿,网友抢微博红包的总次数超过8亿次。看得见的数据背后,隐藏的是什么看不见的技术呢?”
按照各家公布的数据,除夕全天微信用户红包总发送量达到10.1亿次,摇一摇互动量达到110亿次,红包峰值发送量为8.1亿次/分钟。而支付宝的红包收发总量达到2.4亿次,参与人数达到6.83亿人次,红包总金额40亿元,峰值为8.83亿次/分钟。春晚直播期间讨论春晚的微博达到5191万条,网友互动量达到1.15亿,网友抢微博红包的总次数超过8亿次。”

本文会以一些公开的内容聊聊万变不离其中的所谓绝招,为了吸引要求,素材主要参考淘宝大秒系统和各家红包系统的情况。


第一板斧

第一板斧:活下来 [Stability]
俗话说身体是革命的本钱,首先要活着。大凡架构还没有舍身成仁的死法,都是好死不如赖活着。关于如何活着,其实是有模式可循的,活着这事在技术界也有一个蛮好听的名字--稳定性(花名 Stability)。 稳定性实践笔者印象比较深的有2篇内容,一是由淘宝小邪在2011年分享的[淘宝稳定性实践]。

该材料经墙内搜索百度查询,基本没有别的存档了,唯有百度文库硕果仅存,地址就不贴了。这个slide主要讲了4招: 容量规划、集群容灾、依赖降级、运行监控。

84052ecabe69d273aa50b3e8366dededbaee7061

就容灾可以区分为同机房内、同城异机房、异地机房几个层次考虑。

4819880fa575c36103ae48ec4532dd8ca98d68d0

上图机房1种C系统故障切换机房2的情况。

保护自己是很重要的,如下图所示,C挂了,则A调用C超时,如何保障A不被拖累呢?

03aa209d63d819fdfffb0e410c5257e8d358a1eb

阿淘也给出解法,就是stable switch。如下图所示:

4910b41325cdaed990d7b59fb652b9b9a334bda5

随着淘宝、天猫的业务发展,本着更优雅运维的思路,阿淘在稳定性方面的建设肯定有更多精细化,更好、更优雅的做法,但是其本质原则:活着胜过一切!


多个备份、无缝切换、超限限流、断尾求生又称优雅降级等是指导同类互联网应用的常见招数。另外,特别安利一下服务治理,随着微服务兴起,大有不微不能出来见人的姿势。但服务治理是在服务管理中一块重要内容,亘古弥新。如果有上千应用,服务接口不计其数。做一次功能升级,我得知道谁调用了我,我调用了谁;做性能和容量改进,我得知道那条链路是瓶颈;做链路优化,我得通过工具来看那些强依赖可以调整为弱依赖等等。

41d5416a3cc3e2cf2790a742266ab419fe893c4c 一片信手普及的基础文也写得这么干,江湖也不禁为自己点赞了。(话说龙姑娘的红包,啥时候发一下…)

第二篇高大上的ppt是来自国外的一个ppt。

2d72452f4b5423f77580eaaae6b08bf116457844

c527e7c0a6c8a9fde3d63a854118d7de90800b4a

作者把可用性和稳定性,做了一些区分。可用性偏大局,比如FO,MM模式等。而稳定性强调单区域应用中的手段比如开关,降级等。

2d9c4561a25887d7cd156bf7bde171aa661ff669

第二板斧

第二板斧:简单可扩展(scalability)
啥叫可扩展,就是可以不断加资源以达成更大容量,支撑更高的并发、迎接更多用户 。这里的资源可以是应用服务器,也可以是数据库服务器,或者是缓存服务器。

[可扩展Web架构探讨]这个材料中也有对可扩展有所定义。

e3f453532db84769bcb4d5386e1042c22085f3a5

e00949939711e3275b267d4b08ba93cdb3517d6b

这里也提及scalability是系统适应不断增长用户数量的能力。特别提及扩展容易(所有组件都应当简单扩展)、无共享架构(shared arch)。
负载均衡是的作用有几个,一是接入接入保护、失效检测;二是提供在用户和服务器之间做中介,让增减服务器对用户不可见;三是通过负载均衡算法让流量相对均衡的分布。负载均衡有硬件设备也有纯软件比如LVS,负载均衡对于页面请求以及rpc调用都能较均衡的分配,是一个重要的考量因素。
(关于负载均衡的具体内容,此文不赘述)

有一个很古老的文档,叫LiveJournal's Backend - A history of scaling 叙述了网站的发展历程。

4240b1bb7d95199aa1cafcac6a034f24eeb70ee9

一台server有啥坏处,自不必说了。然后…

0b81e077a80730dc0b0d0d7c18566504478571e3

某一天发展到5台了,3个web server;2台db。使用mysql replication来做复制。

随着用户数的增加,用户需要cluster

ceee24c639671c661f93a2eac3a7a7b221e87ddd

后来因为性能的原因,需要使用cache,包括Mogile Storage等。详情可参见

bd7781c319409743a75c810b7e0d97e2e6df0aca

一个网站的发展后来成了很多架构文章的标配。上更多webserver、上更多dbserver、读写分离、分库分表、上搜索引擎等等。架构之道在合适的时间做合适的决定(tradeoff),运用之道,存乎一心。

第三板斧

第三板斧:拦河大坝、去并发
由于营销活动(创造营销节点、扩大影响力的需要),总有很多产品策划、运营乐此不疲的玩着一个game---在足够集中的时间内比如秒级处理足够多的用户请求,让世界为此狂欢,同时也是彰显技术实力的一次大考。

小米卖着抢号的手机、天猫发明了双11光棍节、微信和支付宝连续2年做着新春红包。营销活动的时候要使用前2板斧,保证可用性和简单可扩展性,同时还要祭出第三板绝杀—拦河大坝、缓存为王、去热点资源的并发。





请到「今天看啥」查看全文