左耳听风_063_62_性能设计篇之边缘计算
你好,我是陈浩网名猪耳朵house.前面呢我们通过一个秒杀的事例,展示了如何在CDN节点上简单的部署小服务,然后又可以完成在数据中心很难完成的事儿,我想你应该能看到边缘检验的一些威力。
那今天呢我会和你聊一聊我所认识的边缘计算,那这个呢也是我创业的方向。
首先呢,一说起边缘计算,网上大多数文章呢都会说这个是和LOT相关的一个技术。
那其实呢我觉得这个说法只说对了边缘计算的一部分。
那边缘计算可以做的事情还有很多很多。
呃,所谓边缘计算,它是相对于数据中心而言。
那数据中心呢喜欢把所有的服务放在一个机房里啊,集中处理用户的数据和请求。
那集中式部署呢一方面便于管理和运维,那另一方面呢也便于让服务间的通讯有一个比较好的网络保障。
的确没错,不过呢我们依然需要像CDN这样的边缘式的内容发布网络,把我们的静态内容推到离用户最近的地方,然后呢获得更好的性能。
那如果我们让CDN的这些边缘节点拥有可定制的计算能力,那么就可以像秒杀那样可以在边缘节点上处理很多的事情,从而为我们的数据中心带来更好的性能,更好的扩展性,还有更好的稳定性。
而我们的用户呢也会觉得响应飞快,从而有了更好的用户体验。
那接着呢让我们来看一看,为什么边缘计算会变成一个必然的产物。
那这里呢我有两个例子,首先呢我们得看一下整个时代是怎么发展的。
我们处在信息化革命的时代啊,也有人叫数字化革命。
总之呢就是电脑时代。
那在这个时代,把各式各样的信息都给数字化掉,然后呢交给计算机来处理。
所以呢我们要清楚的知道,整个计算机发展的本质,就是我们人类生活信息化建设的过程。
在这个过程中呢,计算机硬件的发展也是非常迅猛的,CPU的处理速度,硬盘的大小和速度,还有网络的带宽和速度啊,都在拼命的升级和降价。
我们用越来越低的成本获得越来快的速度越来越大的带宽,还有越来越快的存储等等。
那所有的这一切呢其实都是和信息还有数据有关,我们的信息和数据越来越多,越来越大。
所以呢我们需要更好更快,还有更便宜的硬件和基础设施。
那这个演化过程啊在我参加工作这二十年来啊就没有停止过。
而且呢我也不认为未来会停下来这个过程啊,只会越来越快。
你看我在文中画了这个时代的变更图。
那从一开始呢我们处在MB的时代,在那个时候呢,电脑也是几百兆的,硬盘就够了。
因为那个时候的信息量不够大,只有内容服务的提供商啊在提供内容。
那他们呢主要以新闻资讯为主,所以呢数据还不多。
然后呢就开始进入UGC时代,用户开始产生数据。
他们写博客,发帖子、拍照片、拍视频,于是呢信息就越来越多。
于是啊我们的数据啊就进入了这笔时代。
于是呢计算机的硬件,还有网络的基础设施啊都在升级。
那再然后呢我们进入了大数据时代,那这个时代呢也是移动互联网的时代。
以前你要打开电脑才能上网,现在呢你只要手机有电啊,你就是在线的。
而且这个时代大量的线下服务走到了线上,比如说外卖啊,叫车等等。
于是呢就有了各种各样的app在收集你的行为和数据。
那这个时候呢是计算机在记录每个人的上网行为的时候,所以呢数据量也不是一般的大,然后呢这个趋势啊只会越来越大。
在下一个阶段,我们的数据和信息啊只会越来越大。
因为计算机正在吞噬可以被数字化的一切事情。
那除了继续吞噬线上的业务,一定还会开始吞噬线下的信息和数据。
比如说通过摄像头啊识别线下的各种活动,比如车牌啊,还有通过一些传感器来收集线下的各种数据,比如说农业,还有水利等等。
嗯,于是呢数据只会变得越来越大。
在这个时候,我们想一想,如果把这么大量的数据都拿到数据中心来做分析和计算,那一个数据中心顶得住吗?我现在呢已经接到好几个用户和我说数据量太大了啊,不知道怎么架构数据中心了,各种慢,各种贵,各种痛苦。
而且呢还有另外一个需求啊,就是要实时对于大数据处理的实时需求啊,越来越成为刚需了。
因为如果不能实时处理实时响应,那么怎么能跟得上这个快速的时代呢?这就好像是一个人脸识别的功能。
那如果苹果手机的人脸识别需要到服务器上算,然后再把结果返回,那么用户的体验呢就很糟糕了啊,这就是为什么苹果在手机里直接植入了神经网络的芯片。
我们可以看到数量呢越来越大,分析的结果速度呢需要越来越快。
那这两个需求只会把我们啊逼到边缘阶段上去。
那如果你还是在数据中心处理呢,你会发现你的成本只会越来越高到一定时候啊,就完全玩不下去了。
我刚刚说到了,这是第一个事例,我们再来看一看数据中心的成本。
当一个公司需要支持几十万用户的时候呢啊并没有什么感觉。
但是当他们要支撑上千万乃至上亿用户的时候,我们就会发现一个几十万用户的系统架构和一个支撑上千万用户的架构。
在成本上来说呢,完全不是一个数量级的,就像文中的图片所描述的那样。
那在这个图中呢,我们可以看到,当需要处理的数据或者用户请求的规模越来越大的时候,我们的成本呢是呈现快速上升的曲线,而不是一个线性上升的成本关系。
你们可以来算一下,呃,根据我过去服务过的四十多家公司的经验呢,可以干到这样的投入。
几十万用户的公司呢只需要处理百级QPS的量啊,只需要十台左右的服务器。
但是上百万用户的公司呢只需要处理千级QPS的量,需要有五十台左右的服务器。
呃,上千万用户的公司呢,它需要处理万级到十万级,QPS的量,需要七百台左右的服务器。
而上亿用户的公司呢,他需要处理百万级QPS的量,需要上万台服务器。
我们可以看到从十万用户到上亿用户也就多了一百倍。
那为什么服务器需要一千倍呢?完全不是呈线性的关系。
那这个是因为啊当架构变复杂了以后呢,你就要做很多非功能性的东西了。
比如说缓存啊、队列啊、服务发现啊,还有网关、自动化运维,还有监控啊等等。
那么我们啊不妨开个脑洞。
如果我们能够把那上亿的用户拆成一百个百万级的用户,那么只需要五千多台机器,我们还是同样服务了这么多的用户。
但是呢我们的成本下降的很快,只不过呢我们需要运维一百个小数据中心。
不过呢请相信我运维一百个五十台服务器的小数据中心。
那这个难度啊应该是远远低于运维一个一万台服务器的数据中心的。
好了,问题来了,什么样的业务可以这么做呢?我觉得啊有地域性的业务是可以这么做的,比如说外卖啊、轿车啊,还有共享单车啊之类的。
然而呢一百个五十台服务器的小数据中心啊,也会带来一些复杂的问题。
因为当你的公司有一百万用户的时候呢,他的业务形态和有一亿用户的业务形态是完全不一样的。
那一亿用户的业务形态呢可能会复杂的多得多。
也就是说呢,我们不可能在一个小数据中心,只有五十台服务器。
因为那是百万用户的业务形态啊,只有十几个服务。
那当公司成长到上亿用户的规模的时候呢,可能会有上百个服务。
那五十台服务器呢是不够来部署的。
所以呢我前面那种多个数据中心的理想只存在于理论上,而实际上呢不会发生。
但是呢我们依然可以沿着这条路啊思考下去。
我们不难发现啊,我们完全可以用边缘节点处理高峰的流量。
那这样呢我们的数据中心啊就不需要花那么大的成本来建设了。
于是啊还是到了边缘计算。
那我们接着来说边缘计算的业务场景。
那通过前面两个案例分析呢,我觉得边缘计算啊一定会成为一个必然的产物。
它会作为以数据中心为主的云计算的一个非常好的补充。
那这个补充在我看来啊,它主要是做这么几件事情。
那第一呢就是处理一些实时响应的业务,它和用户靠得很近。
所以呢可以实时响应用户的一些本地请求。
比如说某公司的人脸门禁系统,还有共享单车的开锁。
那第二呢就是处理一些简单的业务逻辑,比如说像秒杀抢红包这样的业务场景。
那第三呢就是收集并结构化数据。
比如说把视频中的车牌信息给抠出来啊,转成文字,再传回数据中心。
那第四呢就是实时的设备监控啊,主要是线下设备的数据采集和监控。
那第五呢是p to p的一些去中心化的应用。
比如说边缘节点作为一个服务发现的服务器啊,可以让本地设备之间啊进行p to p通讯。
那第六呢是云资源调度边缘节点啊,非常适合用来做云端服务的调度。
比如说允许用户使用不同生产商的云存储服务,或者使用不同生产商。
但是功能相同的API服务。
因为是流量接入,所以呢可以调度流量。
那第六呢就是云资源聚合。
比如说呢我们可以把语音转文字的API和语义识别的API相结合,啊,聚合出来一个识别语音语义的API,从而简化开发人员的开发成本。
其实呢还有很多。
所以我觉得啊边缘计算带来的想象力还是很令人激动的那关于现实当中的一些案例呢,你可以看一看netflix的边缘计算架构的PPT啊,我在本中呢放到链接。
那在我看来呢,边缘计算的关键技术啊有这些,那第一呢就是API gateway.那关于网关呢,这个就不说了,我们在管理设计篇里有一些课,就专门讨论这个东西的那第二呢就是serverless和fans啊,就是服务函数化。
那这个技术就像是AWS姆达服务一样。
你写好一个函数呢,然后不用关心这个函数,运行在哪里,直接发布就好了,然后呢就可以用了。
那servilless这个词第一次被使用啊,大约是二零一二年由conform所写的一篇文章,名字叫做why the future of software and appis is surillness.那这篇文章谈到的内容呢是关于持续集成和源代码控制的啊,并不是我们今天所特指的这种架构模式。
但是amazon在二零一四年发布的AWS达,让lambserverless这个范式啊提高到了一个全新的层面,给云端运行的应用程序呢提供了一种全新的系统体系结构。
那至此呢,我们再也不需要在服务器上持续运行进程,以等待日TTB请求或者API调用,而是可以通过某种事件机制去触发代码的执行。
那通常来说呢,这个只需要在AWS的某台服务器上配置一个简单的功能。
那此后呢,anststany在二零一五年七月的一篇名字叫做service addead.这篇文章里当中呢更是围绕着AW lambda和刚刚发布的AWSAPI gateway.这两个服务解释了他a don't的diless service addead, they just don't know idiot.那如果说微服务是以专注于单一责任与功能的小型功能块为基础,利用模块化的方式组合出复杂的大型应用程序。
那么我们还可以进一步认为啊,service架构可以提供一种更为代码碎片化的软件架构范式。
我们把它叫做function netter service啊,也就是fuas.那所谓的函数呢提供的是相比微服务更加细小的程序单元。
那我在文中呢列的目前啊比较流行的几个开门项目,你课后有兴趣呢可以点开链接看一看。
好了,我们来总结一下今天分享的主要内容。
那首先呢我描述了边缘计算的初始模样。
那接着呢我讲了,从计算的发展趋势上来看啊,数据量的不断增大呀,迫使边缘计算成为了一个必然。
那大数据中心的成本问题呢也需要通过边缘计算来降低。
然后呢,我列举了边缘计算的业务场景。
在最后呢我介绍了实现边缘计算所需的关键技术啊,希望能对你有帮助。
也欢迎你来分享一下你对边缘计算的看法如何啊,有没有什么好的想法呢?文末呢我给出了分布式系统模式系列文章的目录,希望你能在这个列表里啊找到自己感兴趣的内容。