我的Docker之路DockerAwesome Docker

开脑洞 | 从微服务到人工智能操作系统

2015-10-27  本文已影响100人  灵雀云

编者按:虽然微服务还是个比较新的技术,但是歪果仁已经开始思考替代微服务的下一代技术了!作者认为随着微服务架构本质上还是一个层级结构,系统的监控和自动化存在着局限性。网状结构才是未来,构建一个“自给自足”的智能系统将是下一个技术转折点,脑洞大开有木有!‌‌‌‌‌‌‌‌

以下为开脑洞译文:

Adrian Cockcroft(前Netflix的云架构师)曾经表述过一个观点:如果一个系统由数千个紧密互联的微服务构成,而每个微服务的生命周期只有几秒甚至更短时间(仅足够处理一次单独的请求),这样的系统是非常难理解的。所有的监控工具和可视化工具变得毫无用武之地,因为它们无法处理如此动态化的过程。

所以虽然微服务还是个相对较新的概念,行业领袖们却早已将相同的原则应用多年了,它们就是——细粒度的设计、隔离以及自动化。并且有人预测不久我们将要面临一个技术转折点——理解的转折点(the crisis of comprehension)。

当一项技术达到它的极限时,就会出现这样的转折点。幸运的是,这标志着一项新技术的诞生。就像下图Kondratiev波形中所展示的创新的力量。(如果你对这一经济学概念感兴趣,可以去阅读PaulMason所著的《Postcapitalism》,本书对长短波以及伴随的转折点都做了讨论。)

虽然微服务刚刚开始得到关注,在本文中,让我们思考下哪些技术将会替代它们,我会结合当今所能观察到的技术趋势描述它们的特性。

软件系统

比如当前正在经历的DevOps的趋势,它的本质在于:大家逐步意识到,对于复杂的软件系统,基于编程技术来构建系统,会比传统IT运维的概念(负载均衡器、子网、存储选项等),更有效率。最近新产生的技术热词,如可编程的基础设施或不可变的基础设施,也预示了这种变化。

软件系统与软件应用程序遵循相同规则,所以有人预测软件系统的未来就是应用程序,但并不是我们今天所熟知的应用程序。

首先看下如今的应用程序和软件系统,以及他们处理稳定性(stability)的方式。

对于应用程序来说,稳定性没有功能性(functionality)重要,这也是类似动态软件更新(dynamicsoftware updating)的技术一直没有普及的原因;

而软件系统的情况恰好相反,高可用性(highavailability)比系统功能更重要,所以IT运维极少关注系统在做什么,只要它在运行着就行。

这些差异影响了实现策略。亚马逊网上商店就是个好例子,当动态数据没有及时处理时,它会无缝地切换到静态内容。这就是说,可以牺牲软件系统的功能性,确保业务连续性。

这就引出了一个结论,软件系统将演变成一类新型的应用程序。对于这类应用程序,可用性比功能性更重要,比如当资源稀缺时,减少功能从而避免宕机,是很自然的事情。这种适应力同时也是最简单的生物行为模式。

人类

近年来围绕系统支持的运维自动化,如配置或备份,已经比较成熟了。这是个自然的过程,因为依赖人工的运维昂贵且容易出错。但是自动化要求持续的监控,尤其是关键业务系统。随着系统规模的扩大,这也会成为一个复杂的任务,所以我们开始将监控变得自动化。而通过自动恢复程序,我们又更进一步了。

但是现在我们走向了一个悖论。即使所有运维都自动化了,同时有一个自动化监控系统来随时恢复故障的软件系统,而这个监控系统也需要被监控。如果启用另一个监控系统,同样这个监控系统需要被监控。最终,不论自动化实现了多少层,顶层仍然必须是人,只有这个人能确保整体运维的连续性。所以永远也无法达到完全的自动化。

这一推论揭示了一个层级结构,而软件系统最终在人的控制之下。

接下来就是我的结论:一旦我们意识到了分层结构,我们就可以将工程学、生物学,甚至心理学等领域的系统理论发现应用到其上。

层级结构的研究者之一 HowardH. Pattee 教授曾发表过这样的结论:

当系统成为一个精细的层级结构,它的行为就变的简单

Yaneer Bar-Yam 教授(物理学家和系统科学家)的观点更为详细,他指出:

层级结构限制了系统集体行为的复杂度。(….)由系统集体行为所引起的,系统某一部分对其它部分的影响,不能超过控制器的复杂度。(…)概括的说,集体行为的复杂性必须低于控制单元。

他的观点是层级控制结构的集体行为不会比单体结构更复杂,所以软件系统受限于人类,因为系统复杂性不会增长到超过运维人员的理解能力。Adrian Cockcroft也曾论证过,我们正在快速接近对于系统的理解能力的极限。

生态系统

为了摆脱层级结构的限制,战胜理解危机,显然需要一个新的策略。下面我要用一个比喻,说明它会是什么。

如果将软件系统比作水族馆里的鱼,为了维持鱼的生存,我们会不断向水族馆内添加自动化装置:人工照明,氧化剂,精制水过滤器,加热器等。它耗时、昂贵,但是最终仍然需要人去花费精力去照料。

但是我们还有其它选择,我们可以种植植物提供氧气,放养小动物过滤水质等等。这样水族馆就不再是一个水族馆了——它变成了一个小型的(人工)湖或海洋,在这里鱼可以自由生存多年,而不需要人类干预。

类比到IT技术领域,软件工程需要摆脱层级结构,并发明一种技术,用它可以创造一个自组织,且互相联系的生态系统,软件系统可以“自给自足”,而不需要人的支持。复杂系统 的集体智慧 将不会受到我们的理解能力的限制。

自组织决定了人工生命的质量(AL),自然也成为我们构建复杂系统的灵感来源:

通过观察生物体这一现有最复杂的系统,可以得出,自然界的复杂系统在结构上比超复杂的系统更健壮。类似的,人工的超复杂系统也可以通过增强组件的健壮性和连接性,转化为更健壮的复杂系统。

通过类比生物学,我们能够定义这项技术的主要特性:

系统可以在线更新100%的代码(主要目标是生存);

新的编程技术(响应式)可以用来描述它们(软件系统即应用程序);

应用程序将在新的操作系统中执行,而这个新的操作系统将是今天云计算(海洋)的后续;

应用程序将由细粒度的服务(细胞)组成,它们相对简单,主要实现了升级与扩展(生物术语中的成长和发芽);

应用程序的基本需求(计算能力、内存)将由操作系统满足(生物系统中的水和氧气);

自愈能力将被内置到应用程序中(在细胞水平),并由操作系统支持。

虽然构建一个自组织的生态系统是个复杂的任务,但所需的基本技术需求已在软件工程的不同学科出现了。

总结

克服我们理解极限的方法,是创造一系列让软件系统自组织的新技术。随之而来的技术成果就是,软件系统将从传统的监管控制模型,转变为按照我们意图运行的系统( Cotsaftis,2007 [3]):

通过赋予人工系统更多的“智能”,使它们更高效、更有自主性(…)这一新台阶暗示了将向系统引入“意图”,而不是停留在由传统的控制者指定的固定轨迹内做出简单行为的水平。

微服务朝这个方向迈出了第一步。技术进化的下一波浪潮将带来第一个方案,这时将不再需要人类的控制,因为软件系统的集体行为表现出的原始人工智能(“SmallAI”),类似于生物学领域中的微生物智能(从相互作用中产生的行为)。

如果这个推论正确,过渡到这些新技术将深刻改变软件工程。

参考文献

[1] John von Neumann, Theory of Self-Reproducing Automata (1966)

[2] Yaneer Bar-Yam, Complexity rising: From human beings to human civilization, a complexity profile, Encyclopedia of Life Support Systems (EOLSS UNESCO Publishers, Oxford, UK, 2002); also NECSI Report 1997-12-01 (1997)

[3] Michel Cotsaftis, What Makes a System Complex? an Approach to Self-Organization and Emergence(2007)

原文链接:http://www.alauda.cn/2015/09/28/microservice-ai-system/

上一篇 下一篇

猜你喜欢

热点阅读