近年互联网主要技术综述(DEV篇)

计算机软件技术的生命周期简单划分可以分为开发和运维两个阶段。开发阶段围绕业务模型对现实世界模拟,数据沉淀,计算分析,得出结论创造价值。运维阶段是为了维护好开发阶段创造的软件成果,帮助软件成果更平稳的服务好真实世界。运维阶段关注在任何时间,以任意资源,在任意机器上启动服务,并帮助客户及时发现服务,合理分配流量,监控服务的运行状态,平稳处置服务失败,升级等等。本文将分DEV和OPS两个阶段对近年来的主要技术发展脉络做一些简要介绍。(当然资源管理和任务调度的技术也在一些离线分布式计算DEV场景中使用,如yarn技术,这里不做详细区分。)

前言

软件作为一种商品,是通过在计算机世界模拟现实世界来为人类贡献价值。在这个过程中有两个核心元素:数据和计算(还有一个应该是通信或者叫数据传输)。数据是生产过程中的基础原料,也是真实世界在计算机世界中的属性沉淀,是真实世界与计算机世界连接的纽带。计算是计算机世界的原力,是计算机能够为人类提供的最重要最强大的能力之一。为了能够帮助计算机为真实世界产出价值,存储软件和计算软件是两个重要的基石。近些年来,大部分的技术变革都围绕这两点进行。

存储篇

刚刚提到数据是现实世界的属性沉淀。那么人们最原始的开荒动力就是将这些数据存储起来,以备查阅。最原始的方式就是通过文件系统。但是文件系统查阅很不方便,除了替代现实世界中的记事本并没有额外收益。如果在翻看的时候能够做到想看哪一天,想看哪一块的内容就能所想即所得,生活一定很美妙。于是便有了。

关系型数据库

关系型数据库是一种加持了计算能力(简单数据分析能力)的存储系统。这种能力很大程度上是通过精妙的存储结构设计实现的,计算能力体现并不多,因此我并不把他归类到计算的范畴。上面提到人们迫切的需要一种随时按照条件翻阅记事本的能力(公司查账,个人快速查看某天的日记)。于是工程师们通过设计了一系列精巧的数据结构,索引,B+Tree等等,帮助人们实现了快速按照条件查找,拉取数据,统计count,不同实体数据关联等等功能。顿时世界变得很美好,借助数据库工程师们迅速在计算机世界构建了很多现实世界的模型。财务报表,报纸媒体,商场都搬到了计算机世界。

分布式NOSQL

本来人类的生活因为关系型的数据库的诞生变得很美好,自动化程度空前。那么为什么后来还会有类似于HBASE的NOSQL系统产生那。那是因为数据太多,关系型数据库太昂贵。关系型数据库的技术一直被几家大公司所垄断,所以使用成本很高。随着通信技术的发展,使得互联网用户越来越多,更多的现实世界属性被搬迁到计算机世界,生产了大量的数据资料。这些数据资料的存储如果全部用关系型数据库那么成本太高,而且如此海量的数据也突破了单机极限,需要采取集群的方式存储。在Google的带领下,分布式浪潮席卷全球。分布式文件系统,分布式非关系型数据库应运而生。但是与关系型数据库相比,分布式存储作为一个新生儿在基本统计计算能力上有很大的短板,这与分布式存储的分布式和海量特性也有一定的关系。用户无法通过简单的SQL语句对数据进行简单的分析处理了(此处分布式计算框架呼之欲出HIVE就是对这一块的补充,参看计算章节)。

搜索引擎

数据越来越多,又没有了SQL我们怎样才能继续美好的生活那。答案就是搜索引擎,搜索引擎的底层技术与关系型数据库的索引技术相似。为了帮助人们在海量数据中快速找到自己感兴趣的信息,工程师设计了分布式的索引,搜索引擎。典型的代表就是开源的ElasticSearch实现。搜索引擎帮助人们实现了类SQL的搜索,关联,聚合分析功能。人们又能欢快的使用便捷的信息服务,在网站上查资料,在git上搜索感兴趣的项目。这一技术也加速了计算机技术的普及,帮助远在千里外的工程师快速找到手头BUG的解决方案(面向搜索引擎编程)。

当然在这一过程中,为了应对现实世界海量的计算机操作行为对计算机模拟世界的影响,工程师们还创造了分布式缓存,消息队列等多种存储形态,此处不一一展开。

计算篇

开篇提到计算能力是计算机的原力,是计算机能够为人类创造价值的最原生手段。人类在各种计算机活动中沉淀了很多数据。早上阅读的新闻,上班路上发表博客评论,公司财务录入的财务数据,商家上架的商品数据,店铺销售数据,以及网民点击各种网站的行为数据,都被存储到存储软件中。这些数据如何才能产生价值,对现实世界造成正向影响那。答案就是——计算。数据是计算的原材料,因此计算模式的发展也收到了存储软件的发展的影响,当然更多的还是现实世界不断膨胀的需求。

SQL计算

在前面的存储介绍时,我们介绍了关系型数据库借助于巧妙的存储结构设计获得了很好的计算能力加持。人们借助于这种能力可以方便的进行数据关联分析,随时拿到自己感兴趣的计算结果。这一技术帮助人们形成了很多自动化能力,这种计算至今还深刻影响着我们的生活。此处不在多说(前面提到过这更多的是存储带来的变革不是由计算推动的)。

批处理计算

随着人们计算机生活的频繁化,生产出的数据资料也越来越多,而且随着存储技术的变革,很多数据资料是以非关系型的形式沉淀下来的。如何对这些数据进行二次生产产生价值,这个时候传统的SQL关联分析已经无法使用了,跟重要的是随着现实世界需求的膨胀,我们需要超越关联分析的手段。分布式批处理技术就此诞生,这一技术以Hadoop的MapReduce组件为代表。简而言之,批处理技术是希望通过计算手段构建一个数据集合全局结果。就是说我们需要通过对整个数据集(海量的分布式存储中)进行一次全局的数据分析之后得出一个结论。这个计算逻辑可以是任意的,用户自定义的不局限于SQL提供的原子能力。这种计算模式的出现为数据生产提供了无限的可能。批处理后来为了应对性能问题,发展衍生出了SPARK这种纯内存的计算框架。有了批处理技术,工程师们可以对计算机世界中的海量的存量数据进行分析,提取出每个用户昨天,上个月或者全年的兴趣热点,为业务提供无限的可能。

流处理计算

批处理技术提供了存量数据的分析手段,但是需求是不断膨胀的,永远无法得到真正的满足。我们需要更快更及时的分析手段,比如在交通场景,通过对城市交通历史数据批处理能够知道城市历史上最拥堵的路口,可是又能怎么样。我们最迫切的需求是要知道此时此刻我们这个城市哪里正在拥堵。比批计算更具时效性的流计算模式出现了。工程师从内心深处发出一个疑问,数据一定要先存到一个地方才能进行分析么?批计算发生在数据持久化之后,而流计算发生在数据持久化前,在数据流动的过程中就顺便进行了计算。流计算框架的代表有Storm,Spark和Flink。数据在流动的过程中,流过一个个计算算子组成的处理流程图,每个算子通过用户自定义的计算逻辑得到想要的结果,这些结果可以立刻推送到用户的眼前,实现准实时的数据分析。有了流计算,我们就能够在手机导航里实时看到拥堵情况,切换路线如丝般顺滑。生活更加美好。

智能计算

有了批处理和流处理,似乎世界变得很完美,我们已经实时获取到想要的信息了,我们还想要什么,人类自己也不知道。是的,人类不知道,那就让机器来回答。AI技术来到了最好的时代。前面的计算模式的短板在于分析的深度,不管是批处理还是流处理更多的还是基于逻辑计算,反应的还是人为设定的计算规则。更为深度的信息是人脑无法参透的,比如大多数人更感兴趣哪条新闻哪个商品,人眼是如何从一幅画里找到一辆车的。这些都是逻辑规则无法做到的。

AI计算的快速落地得益于算法,计算能力,数据积累三个因素在恰当的时间碰撞到了一起。前面两个因素不再赘述。AI技术需要大量的优质标定数据进行喂养。但是标定数据是一项成本很高的工作,需要耗费大量的人力财力。但是,随着互联网时代的全面到来,我们每个人每天都在生产大量的优质的自标定数据。每天你在点击商品标签页时我们标定了一条商品数据,我们在浏览新闻时标定了一条媒体数据。这些优质数据都是零成本的,这为AI算法的落地提供了坚实的数据基础(还有一点是互联网众包业务大大降低了非自标定数据的标定成本,如视频图像数据)。有了海量优质的数据和规模化的计算能力,变革式的深度学习算法使得AI技术在这个时代大放异彩。

从上面的发展历程看,代表了不同阶段人类对计算的不同需求,计算模式也由轻变重。ES可以看做一种轻量级的工具,用户只需要很少的工作量就可以得到一些简单的分析结果(通过组合ES提供的一些原子能力实现)。如果想结合自己的业务自定义一些复杂的逻辑计算,那么在海量数据条件下就需要动用分布式计算框架(如MR,MR其实是在YARN上面的一个应用模板,基于YARN用户可以实现任意的自定义处理逻辑)。如果有时效性要求则需要使用流计算框架,流计算和批计算其实本质上区别不大,流计算可以看做由无数个小批处理连接而成,由于是级联形成所以可以引入流水线机制实现性能优化,因此才有了批流一体的思想。再进一步,如果希望深度分析数据的潜在规律,则需要通过机器学习的方法。数据分析的深度逐渐深入,框架也逐步变重,学习使用成本逐步变大。因此在实践中要科学选择,贴合自己的业务实际需求。

存储与计算是实现价值的两个重要的基石。人们将自身的属性数据交给计算机存储,计算机通过计算,将真实世界的数据属性进行加工后反馈给人类,从而影响了人们的行为决策,计算改变了世界,创造了价值。下一篇OPS篇将介绍资源管理,任务调度,流量分配负载均衡,以及系统监控相关的技术发展脉络。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值