如何用大数据技术搭建一个高效的搬砖系统?

放假回老家,老爸正在修围墙,喊彭小贝去帮忙搬砖。果然放假还是别到处乱跑的好,在家吹着空调唱着歌,他不香吗?

图片

没搬两下,彭小贝就累屁了。这不行啊!想到平时老板对他的教导,要用大数据技术驱动业务发展。于是他找了一个阴凉的地方开始进行技术选型。

技术选型可以简单分为三步:需求理解、提出方案、落地及优化。  

  

一、需求理解

图片

搬砖是指对砖头的运输, 从A点运输到B点。期望越快越好(这话怎么这么熟悉?)。影响搬砖速度的因素有:

    1、A、B两点的距离;

    2、砖头的数量

    3、搬运工的人数

    4、异常天气的影响;

    5、搬砖工艺。

二、提出方案

彭小贝分析了一下这5个因素,其中距离和天气是不可抗力,emmm砖头的数量好像也是不可抗力,毕竟老爸会打死他。看来能优化的就是搬运工的人数和搬砖工艺了。


所以方案一出炉:增加一个搬运工,由单线程变成多线程,效率增加50%!

优化效果是非常明显的,但是会有1个问题:AB两地的距离恒定,两个人都要跑来跑去


于是优化版方案二出炉:优化搬砖工艺~~串行执行任务。由于不需要移动,因此效率比两个人跑来跑去还要快,效率再次提升30%。

三、落地及优化

于是彭小贝喊来彭小宝,一起来搬砖。不一会儿就搬了很多砖,效率贼高。但是没一会儿搬砖系统就出故障了:天气太热,彭小宝又累又热,罢工了,给冰棍也不好使!于是又回到最初的单线程时代彭小贝快要崩溃了!此时老板的话又萦绕耳边:要用大数据技术驱动业务!突然,一个念头闪过:可以用kafka(MQ的原理去解决!

彭小贝翻出了以前的学习笔记,上面写的很清楚。


kafka(MQ)对信息传输流程的优化点有:

  • 上下游解耦

  • 同步变异步

  • 削峰填谷

  • 可靠性增加

图片图片图片

  最终方案出炉


在彭小贝和彭小宝之间增设一个消息中间件,生产者彭小贝把砖头放在MQ里,彭小宝从MQ中拉取砖头,堆放到B地。任何一方短暂罢工或者爆发都不影响整个链条的砖头搬运工作,完美!

同时可以做更多:

  • 生产者只需要不断搬砖到MQ,实现最大运力(最大吞吐量)

  • 把A地的无序砖头有序码放在MQ中,写入速度更快(有序写入)

  • 消费者按需搬砖,不怕上游一次性搬太多砖(削峰填谷)

  • 生产者把砖头放在MQ就行,不用交给消费者,俩人各做各的(业务解耦)


图片

彭小贝和彭小宝终于搬完了砖头,兴冲冲的去跟爸爸报告他的发现。他爸听完之后给他看了一张图:

图片


猜你喜欢

转载自blog.51cto.com/15127541/2665019
今日推荐