分布式技术“上位”进行时
图片来源@全景网
文丨脑极体
我们身处数据大爆炸的时期,想必没人会质疑这一点。网络用户规模越来越大,由此产生的访问数据也在指数倍增长,最典型的,每逢大型年度购物节、流量明星出轨、春晚抢红包等特殊事件,都如同一场服务器系统性能的"极限挑战",某几家互联网公司总会被拉出来示众,成则顶礼膜拜,败则集体吐槽。
如何在极限繁忙的情况下,依然能流畅、安全地提供服务,又不过度增加服务器成本?想要解决这一问题,传统的服务器架构就有些力不从心了。
分布式技术,作为一种专门针对海量数据场景的解决方案,就成为了一剂"特效药"。
在基础"疗效"之外,更关键的是,技术本身还埋藏着交给未来的"彩蛋"。
分布式技术为什么 "上位"?
如果关注一下互联网公司的技术趋势,会发现大规模或超大规模的分布式应用已经成为主流,而随着云计算逐步向大众生活渗透,中小规模的分布式应用也在各个领域开始广泛出现。最为直接的体现就是,今天的开发工程师想要找到一份工作,"熟悉分布式系统""能对分布式常用技术进行合理应用"等都是常规要求了。
但对于非专业人群来说,恐怕就有不少疑问了,分布式技术为什么会上位,它是如何运行的,相比传统系统究竟强在哪里,又是如何影响我们的"冲浪"体验的?
简单来说,所谓分布式(distributed),就是将不同的服务模块部署在多台不同的服务器上,然后通过远程调用协同工作,共同对外提供服务。对于用户来说,就像是一台计算机在服务一样。
我们知道,初代的服务器架构往往比较简单,应用程序、数据库、文件、代码等所有资源都放在一台服务器上,也就是单机结构。随着企业业务量的增多,一台服务器已经难以满足数据处理的需求了,那么就对单机进行"复制粘贴",就能收获一个处理能力高出好几倍的"服务器集群"。
不过,集群式扩展很容易到达物理上限,最直接的反映就是无论怎么增加节点,整个集群的性能似乎也没有被提升多少,这时候,就需要分布式系统登场了。
在实际业务中,分布式系统可以将不同的业务功能对应到一个个独立的子系统中去,比如针对电商平台,可以将用户服务、产品服务、店铺管理、数据分析等不同的数据处理项目部署在不同的计算机集群上。这些独立的集群可能是在不同的机房,甚至是不同的城市中,有的大型数据中心还会分布在不同的国家和地区。它们之间通过RPC消息传递进行通信和协调,再向用户提供服务。
通过几种架构的运行逻辑不难发现,分布式系统至少具备三个特点:
首先是能够实现高并发、低延迟的网络服务需求。面对超大规模的访问请求,很容易造成网页打开很慢、游戏拥堵卡顿甚至App直接宕机的情况。这时候需要多台服务器共同高效协作,去处理尽可能多的任务,才能达到相应流量的吞吐量。这就要企业需要将多个服务器部署在不同的地域,才有可能规避全球用户可能导致的网络拥堵和延迟问题。换句话说,分布式系统是全球网络业务发展的基础前提。
另外,分布式系统的可扩展性能够大幅度降低企业的网络成本。由于分布式系统的多台计算机可以在空间位置上随意分布,机器性能也可以独立运行和随时变动,这就使得多个独立服务可以得到针对性地升级,而不是传统架构下的"大锅饭"。比如在商城大促期间,只需要针对产品系统、订单系统等跟下单量级直接相关的节点,其他服务模块维持原有水平,可以有效降低网络使用成本。一些基础模块也可以为其他新增服务所复用,无需重复开发,又进一步降低了企业的经营风险。可以说,在各行业竞争进入精益时期和白热化的当下,分布式系统无疑是竞争力的前提。
更关键的一点,是分布式系统的高安全性。由于该系统中计算机没有主/从之分,也就是说所有计算机节点都是对等的,在对外服务时分布式系统都会对数据和服务进行副本处理,从而直接有效地防止了企业关键数据丢失无法找回等"惨剧",也因此成为网络防灾的重要保障。
正是出于这些技术特征,毫不夸张地说,计算机系统正在经历一场从集中式向分布式过渡的整体变革。
分布式云计算:受益人与鼓吹手
如果说分布式系统代表着网络服务的发展方向,那么云计算的社会化,可能是其快速普及的重要推手。
今天,我们在诸多云服务商的技术架构里,能够看到不少分布式技术的身影,比如分布式存储、分布式数据库、分布式消息中间件等等。某种程度上,分布式系统在资源池化、硬件故障容错能力、性能提升等方面的技术优势,赋予了云计算真正触摸服务市场的可能性。
这种影响,主要体现在三个关键环节:
一是分布式存储。云服务作为智能化的输出载体,对数据的存储和分析是不可或缺的能力之一,而传统的数据存储模式往往都有容量大小限制或是空间局限,云端需要的可支撑庞大数据的存储方案恰恰只有分布式能够实现,比如 Apache Hadoop HDFS。
二是分布式计算。资源池的规模越大,对于资源使用效率,即计算效率的要求也就提出了更高的要求。传统的集群结构采用的并行计算往往需要耗费相当长的时间,而分布式计算会将任务拆分成诸多子任务再分配给多台计算机,这种高效率的计算方式也有效提升了云服务的整体性能。
三是分布式管理。我们知道,云服务的核心价值之一,就是能够帮助客户随时获得IT资源及应用,并且按需付费。这意味着云厂商的应用和服务,也需要基于可扩张性、灵活性与可靠性来进行设计。因此,能够将不同服务模块进行分割、复用的分布式框架就显得非常必要了。
当然,除了以受益人角色不断与分布式技术产生化学反应之外,云服务商也成为企业部署分布式系统的最佳选择。
之所以大部分企业需要借助云厂商的力量,核心原因还是在于分布式系统的复杂性,大大提升了网络运维和调用的难度。
对于大中型企业来说,越来越多的服务和业务被切割和部署在不同的网络计算单元上时,服务间的依赖关系也因此变得错踪复杂,不仅管理配置的难度变得越来越大,有时候甚至连编写系统的架构师都不能完整描述应用之间的关系,分不清应用启动的先后顺序,进而引发一系列扩容、调用、线路故障等问题。
另外,敏捷开发模式要求工程师不断更新程序,来满足新业务、新功能的网络需求。要让企业自己紧跟IT产业的前沿技术,及时引入最新算法模型,修正安全bug,并对成千上百个服务器完成迭代升级,无疑是一个极其庞大且效率低下的工作。
在这种背景下,引入云服务模式,借助虚拟服务器操作系统,即SaaS技术,在云服务商的统一运行环境下实现部署,就大大降低了需要维护的硬件数量,从而让分布式系统管理不再消耗企业大量时间和精力。
从这个角度来讲,云计算和分布式技术捆绑在一起,两种技术方案相互补益,成就了新数据规模背景下最佳收益比的网络基础设施。
走入 "硬件虚拟化"的美妙时代
前面我们感受到了云计算与分布式技术相结合所蕴含的可能性,随着基础设施迭代升级的完成,技术如何向应用端释放自己的迷人之处,恐怕才是我等普通人真正关心的焦点。
目前看来,分布式系统与云计算结合,首先带来的就是服务能力的共享。
云端计算能力结合虚拟化技术,能够将许多业务端模型抽象成的固定软件统一起来,进而利用分布式系统进行管理和输出。
许多原本需要专门开发对应应用才能实现的功能,比如AI运算,通过云端进行虚拟化之后就能够变成共享资源。比如Nvidia 与 VMWare 针对 VMWare Cloud on AWS 推出的GPU加速服务,就能够让AWS的客户将各种VMware vSphere 的应用与容器无需变更即可无缝转移至云端,实现AI运算分析。
除此之外,终端能力也可以被虚拟化到云端,再通过分布式技术释放给其他硬件。
举个例子,智能音箱的语音功能、智能手机的视频功能、无人机的实时拍摄功能、笔记本电脑的多功能操作,这些原本各自独立的终端能力通过云端虚拟化之后,再借助分布式系统进行调用,就能够实现终端之间不同能力的灵活组装。
比如手机来电可以通过车载音箱来接听,无人机画面可以实时通过视频通话直播,手机与电脑无缝传输……对于用户来说,不再需要浪费精力去考虑某个产品的性能,只需要看当下场景需要什么硬件能力发出调用指令就好。同时,分布式系统的分工协同调用,能将硬件设备之间通讯的功耗降到最低。
从为不同场景设计不同硬件,到不同硬件主动适配不同场景,AIoT智能互联后可能面临的跨终端体验割裂问题,正在被分布式技术消弭于无形之中。
同时,分布式系统也让不同机器之间的安全通讯成为可能,从而进一步推动万物智联的到来。
我们知道,如果攻击者利用漏洞获取对整个主机的存取权,那么在很长一段时间内就可以攻击主机上运行的其他每个设备,从而危害整个系统的安全。由于这种攻击方式很难被标准的IDS/IPS检测到,正在变得越来越流行。
试想一下,如果在车联网、工业物联等场景中发生迁移式攻击,亦或是黑客通过空调/咖啡机访问家中任何一个联网设备,这将会引发怎样可怕的连锁反应?
因此,不少云服务商和硬件厂商都已经开始着手将分布式技术引入安全服务。一方面分布式系统各个网络节点之间之间通讯都需要验证并批准,能够有效保护和控制复杂设备网络,在恶意软件进行控制之前实现检测和隔离;与此同时,分布式网络的"副本"模式,也能够很好地保证数据被复制并存储在每个设备中,避免因黑客入侵而发生无可挽回的损失。
今天,我们看到万物智联已经在AI、5G、云计算等基础设施的共同铺陈下,展示出了越来越清晰的未来图景。
如何让其变得可靠、可用、可信,还需要像分布式技术这样的助攻搀扶下,迈出实用化的关键一步。
更多精彩内容,关注钛媒体微信号(ID:taimeiti),或者下载钛媒体App
作者暂无likerid, 赞赏暂由本网站代持,当作者有likerid后会全部转账给作者(我们会尽力而为)。Tips: Until now, everytime you want to store your article, we will help you store it in Filecoin network. In the future, you can store it in Filecoin network using your own filecoin.
Support author:
Author's Filecoin address:
Or you can use Likecoin to support author: