为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号

请选择:

请选择咨询类型

AnyShare
AnyBackUp
AnyRobot

扫码关注

爱数技术支持中心公众号

contact us

提交成功!

我们将在 24 小时之内联系你。

性能爆表
AnyShare
如何购买
我想先试用
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询

云计算之魂(上篇)

2016-11-01

我经常看到人们谈论云计算,或者云服务系统,或者云计算平台的架构。并且也会看到一些架构图,比如下面这张: 

对于一个搞软件系统研发的人而言,这其实算不上什么架构,至少不是系统架构。其实,应当算是某种服务体系的示意图,或者说“业务架构图”。 

在大家大谈架构的时候,我们比较多地会看到某一个子系统的设计架构,或者就像上面这样一个泛泛服务体系的示意图。我们却很少能够看到人们在谈论云计算的这些服务,以及更重要的,这些服务是如何来的。 

我们在谈论架构的时候,往往忽视了一个关键的基本原则:一个软件系统的架构必须遵从于所承载的业务。而业务又是如何确立,或者说如何确定一个云服务平台应当具备的业务,却是一个很少论及的话题。 

现在大多数的云计算服务商都一定程度地在模仿AWS。在模仿的过程中不断积累起自己的服务体系。但是,我们仍旧看到很多新兴的云计算服务商仅仅建立了一些基本的服务,然后贴上云计算的标签,扯起云计算的大旗。而那些更加传统的IT厂商,以私有云、混合云的名义为企业建立云计算平台,也跻身“云计算俱乐部”,却并不清楚云计算到底得有哪些东西。 

大部分的云计算厂商并不清楚应当提供哪些服务,提供什么样的服务。通常也只是根据常见的一些竞品确定自己的服务体系。也许,他们的竞品也并不清楚自己为什么要搞这样的服务。其结果就是,厂商所提供的服务,或者解决方案,往往只是提供了带着“云计算”标签的系统,在实际应用环境下捉襟见肘。 

比如,我正在参与的文档管理系统在很多云计算平台上落地困难,因为缺少对象存储。迫使我们不得不在虚拟机中搭建一套对象存储,且不说叠层架屋、累赘低效,仅仅这套对象存储,也足够系统的管理人员头痛不已。这种云计算除了把物理机换成了虚拟机,没有给我带来任何便捷,反而引来了一堆原本没有的问题。 

所以,我们应当搁下“云计算”这块招牌,从源头开始,认真地审视云计算需求方对于云计算服务平台的真正需求。 

先来确定云计算的需求方究竟是谁。

云计算终究是一门生意,需要赚钱。那么需求方自然就是那些付钱购买云计算服务,或者云计算系统的用户了。对于公有云,我们可以很容易识别出需求方,即应用开发者、公网资源需求者、合作伙伴等等。对于私有云,多半是企业、组织之类的实体。但是,仅仅研究这些需求者,很难得到真正的需求信息。因为他们不是直接使用云计算服务和云计算系统的人。云计算真正的需求方,是那些运行在云计算平台上的应用,是它们实实在在地从云计算平台上获取了一堆资源,并且加以利用。 

因此,云计算平台需要提供的服务,完全取决于它所面对的应用。 

应用系统有各种门类。所实现的业务、面对的用户都各不相同。但有一样东西是它们必不可少的,那就是计算机。因而云计算平台至少应当提供计算资源。云计算的计算资源是更加弹性,更加灵活的虚拟服务器。 

接下来,绝大部分的应用系统也不可避免地需要保存数据。于是,云计算平台也提供了存储。应用系统运行在虚拟服务器上,把虚拟服务器上的虚拟磁盘当做存储使用,读写上面的文件。而有些应用需要存储大量的数据对象,即所谓“非结构化数据”。如同运行在物理服务器上的应用一样,基于磁盘(或者虚拟磁盘)的文件存储无法承载大量的数据对象,无法承载巨大的数据量,也无法承载高密度的请求量。因此,应用又衍生出一种新的存储,即对象存储。用来存放一坨坨的,却又不需要解析其内容的数据,仅仅保存而已。 

于是,云计算的存储便演化出用于存储结构化数据的块存储和用于存储非结构化数据的对象存储。前者的读写特性接近磁盘,可以运行各种需要高密度随机访问的系统,如数据库。而后者则以保存为主要目的,海量、高可靠、高可用、强一致,以各种手段保障数据不丢失不错乱,随时可存,随时可取。 

大体上,有了计算资源和两种存储资源,基本上就能够建立起一个应用。但是,如果云计算止步于此,便同制造和贩卖计算机与存储设备的厂商没什么本质区别了。

云计算必须提供完全不同以往的东西,才能称得上革命。 

开发应用的目的是为特定的用户提供功能,使他们能够实现某种业务任务。应用开发过程中所有的努力都是为了达成这个目的。对于一个应用开发者而言,最希望的是能够集中精力,尽快实现用户的业务逻辑和功能。然而,实际上他们却不得不处理并非与业务直接相关的技术问题,比如建立和维护数据库,保证系统可用等等。所以,对于应用开发者而言,最好有人能够直接提供他们所需的基础设施,以减轻他们实现一个业务系统的负担。 

几乎每个应用系统都会使用某种类型的数据库。那么如果云计算平台能够提供成品的数据库服务,就会大幅减轻应用开发和部署的负担。同样,数据库的可靠性和可用性决定了应用系统的可靠性和可用性。尽管数据库都有成熟的可靠性可用性方案,但具体实施起来对于应用开发者而言很耗费精力。于是,应用开发者又希望云计算平台能够提供具备可靠性和可用性保障的数据库,他们只管用就是了。 

应用系统往往通过建立冗余来保障可用性,那么负载均衡又是必不可少的组件。云计算平台提供负载均衡,又是非常贴心的服务。 

有的应用有明显的大幅度负载变化。一段时间内需要处理密集的访问,过后又只需要少量计算能力即可满足要求。人工地应对这种变化,既困难,又麻烦。云计算平台则提供Auto-Scaling之类的自动伸缩服务,减轻应用的日常运作负担。 

如果应用需要向客户端推送消息,于是云计算平台就提供消息推送服务;如果应用需要把MP4变成FLV,或者反过来,那么就为他们准备视频转换服务;如果应用需要对一堆文档做全文检索,那么就给他们Elasticsearch服务……

这样的例子不胜枚举。应用总是需要各种各样的基础设施,实现业务功能。这些基础设施最好就是能够直接拿来使用的东西,不需要额外费心搭建,额外费心管理维护。这样,应用可以把资源投入到能够直接获得收益的业务上面,而不再是把大把精力扔到琐碎的基础系统中去。 

对于云计算平台而言,仔细观察和了解应用需要的基础设施,投入资源,开发和建立这些服务,满足应用的技术诉求,才能博取应用开发者和使用者的欢心,从他们手中获得订单。

ai-assistant
chat
support
trial
需求助手 (内容由 AI 大模型生成,请仔细甄别)