深入浅出:分布式系统如何更好地支持业务?

一、故事背景

之前,写过一个故事《深入浅出:系统以前不慢啊?》,目的是把工作中遇到的一些经验总结下来。

这次,为加深自己对“分布式计算”的理解,用于今后的系统架构设计,支撑业务发展,就用同样的讲故事的方式总结如下。

二、故事开始了...

沿用上一集《深入浅出:系统以前不慢啊?》的故事背景,佟掌柜开的“下午来”书店生意规模确实比以前大了不少,但这两个月的销售额基本持平,不再增长了...

2.1 新业务模式

书店每月的销售额不再增长,一定是遇到了什么瓶颈!佟掌柜立马出发向虫大请教。

佟掌柜:请问如何进一步提高销售额呢?
虫大:坐等顾客上门已经不够了,是时候搞促销活动了!

佟掌柜:为什么促销活动可以进一步提高销售额?
虫大:因为促销可以通过优惠、折扣或赠品等手段,激发消费者的购买欲望,还可以吸引潜在用户,有助于商家在短期内快速回笼资金,提升业绩。

佟掌柜:这太好了!
虫大:不仅如此,促销也是商家进行品牌宣传和市场推广的有效手段。更高的知名度,有助于销售业绩持续不断地增长。

2.2 抡起膀子开干

找到了“杀手锏”,佟掌柜马上召集5大金刚(白展堂、莫小贝、郭芙蓉、吕秀才、李大嘴)开会,策划在中秋节开展促销活动。

促销活动方案

  1. 中秋节当天“下午来”所有门店卖书一律三折。
  2. 把促销消息公示在城里所有的告示牌上,同时让邢铺头(有偿)发动所有捕快广而告之。
  3. 为了客户满意,当天下单必须当天送货。
  4. 为了“下午来”的品牌价值,决不能对书虫们说不。

促销活动分工

  1. 莫小贝、郭芙蓉、李大嘴分别坐镇3个分店,只收单,不发货(因为分店小,货不全、量不足);
  2. 佟掌柜亲自坐镇总店,汇总所有门店的订单,并按收单时间排序;
  3. 白展堂轻功好,按顺序取得订单后,到仓库取货、然后送货给客户;
  4. 吕秀才做事仔细,坐镇仓库,根据订单出货给白展堂。

促销活动流程

看到大家参与如此热情、部署如此周密,佟掌柜想:这个月的销售额一定会翻倍的!!!

2.3 额滴个乖乖!!!

终于中秋节到了。一大早,“下午来”各门店就排满了人,9点一到书虫们就涌进店内开始下单。各门店也按促销流程把订单发送给佟掌柜进行汇总、排序。

看到几分钟不到就收到了平时一天的订单量,佟掌柜高兴极了,暗呼一声:“额滴个乖乖!老白马上按订单送货!”

可没过多久,佟掌柜就发现了不对劲,因为她看到桌子上已经排好序、待处理的订单已堆满了。白展堂轻功再好,一个人也忙不赢啊!照这样下去,显然不可能做到“当天下单必须当天送货”。

佟掌柜想到捕快们的腿脚也利索,立马联系邢捕头。

佟掌柜:老邢,赶紧给我安排几个人!
邢捕头:怎么了?

佟掌柜:就是“下午来”中秋促销活动,订单太多了,要加派人手送货!
邢捕头:行啊,掌柜的,我马上安排燕小六、姬无命、殷十三,腿脚费你可要给够喽。

新的人手加入后,订单处理速度快了许多,虽然还是赶不上新订单增量,但好歹是个赚钱的生意,得接住这泼天的财富!

但紧接着,佟掌柜接到越来越多的不利消息:

  • 书虫甲下单后一直没收到货,比他晚下单的书虫乙都收到了。
  • 书虫丙买了三本不同的书,但收到的三本书是完全相同的。
  • 还有一大帮书虫嚷嚷着赶紧送货,等不及了。

佟掌柜一边继续给新订单排序,一边联系各大金刚询问原因:

佟掌柜:什么!燕小六把送货的业务转包给他七舅姥爷啦!那个老头子还能跑腿?!(服务器太老旧)
佟掌柜:什么!姬无命翻越了几座大山后,才发现前方是绝壁?!(网络卡顿、断线)
佟掌柜:什么!殷十三送货路上被车撞到水里漂走了?!(程序意外崩溃)
佟掌柜:什么!因为七舅姥爷没有及时更新订单,所以白展堂又送了相同的书?!就是觉得吕秀才认真才安排他配货,喊他回话为什么不检查重复订单?
佟掌柜:什么!吕秀才身子骨太弱,已经扛不住配货压力晕倒了?!正在抢救?!(服务重启)
佟掌柜:什么!书虫丁等不及已经退货了,但白展堂还在在给他送书的路上?!赶赶...赶紧让他停下!(杀死进程)

佟掌柜冷汗直冒:“额滴个乖乖!各门店注意,请马上停止接新订单。”

2.4 究竟是怎么回事?

接下来,佟掌柜给还未收到货的书虫们致歉、承诺一定送到。并和5大金刚们开始通宵达旦地处理剩下的订单,核对造成的损失。

善后工作忙完后,佟掌柜做了个事件过程的记录,又来请教虫大。

虫大:嗯,促销活动前期宣传很好,业务流程也很清晰。但你们经验不足,没有遵守“CAP定理”。
佟掌柜:请解释一下。

虫大:中秋促销活动的业务依托三个系统来完成,即:门店系统、订单系统、仓储系统。所以,这是一个“分布式计算”的场景,要考虑三个核心需求:

  • C = Consistency 一致性,是指所有的子系统、程序在同一时间点看到的数据都是相同的。
  • A = Availability 可用性,是指不管是否成功,确保每一个请求都能接收到响应。
  • P = Partition Tolerance 分区容错性,是指系统任意分区后,哪怕在网络故障时,仍能正常操作。


在分布式计算场景下,同时满足“一致性、可用性、分区容错性”是不可能的(有兴趣的可以去查阅相关证明),只能同时满足两个需求:

  • 满足CA:就是放弃分区容错性,举例来说,就是让书虫们在各个门店完成“下单+取货”的完整业务。
  • 满足CP:就是放弃可用性,举例来说,就是告诉书虫们现在忙不赢了,请稍后再试或下回再来。
  • 满足AP:就是放弃强一致性,但可以追求最终一致性。举例来说,就是告诉书虫们下单后不能马上到货,预计3~5天到货。

虫大:CA、CP、AP,有各自的不足和特点,可以根据业务需求、投入产出,来评估选用哪种模式,它们都可以规避分布式计算场景下意外故障造成的损失。
佟掌柜:我好像明白了...

2.5 那还干不干?!

佟掌柜回去和5大金刚们分享了“分布式计算、CAP定理”。

白展堂:也许是最近通宵达旦的送货,我是听的头晕脑胀的。不能同时满足“一致性、可用性、分区容错性”,那咱们下次别搞促销活动了吧,费力不讨好呀!

佟掌柜:大家确实辛苦了,但我们迈出了关键一步,不能浪费宝贵的经验,遇到挫折就退缩了。虫大说了,可以根据业务需求、投入产出,来选用合适的模式。比如...

莫小贝:比如“秒杀”活动,可以用CP。反正抢到就得,抢不到就拉倒。

郭芙蓉:比如我们能够提前备货到各个门店,就可以用CA。但要考虑备货成本、货品安全(数据安全)、售后对账。

李大嘴:如果在资源不足(投入有限)时我们仍然想接到大量的订单,且用户“想买到爆品”的心情能容忍“延迟发货”,就可以用AP。只要不出差错,用户就不会抱怨。

佟掌柜:恭喜你们,都学会抢答了!

吕秀才:其实,中秋促销活动来了那么多书虫,证明我们有好的创意和产品,也收到了大量订单。作为账房先生,我觉得“能够创收、增大销售额”,这么好的事情就应该继续做下去。

佟掌柜:总结经验、完善业务,干就完了!!!

三、故事讲完了

也许这个故事不那么完美,但深入浅出地说明了在分布式系统面对大并发量的情景下,技术应该如何与业务联动,达到促销的目标。

所有公司最大的风险是停业破产,各个部门都应该想法设法帮助公司存活下去。在互联网时代,如果没有IT部门的参与,大部分市场营销项目将无法实现,个性化的市场营销尤其需要高科技的支撑。

一个伟大的团队并不代表他们拥有最聪明的人。使团队变得伟大的因素,是每个人都互相信任。当那种神奇的动力出现,就会让整个团队充满力量。


IT不只是一个部门,为了实现战略目标,IT是在整个公司层面都需要发展的一种能力


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

推荐阅读更多精彩内容