`

软件架构设计的变革及演进

阅读更多

架构变革及演进

 

     IT技术发展的历史,就是架构不断发展和演进的历史,新架构不断带来新的生产力,进而推动IT时代的变革浪潮。

     架构和技术,这对CP有点类似厨师和厨具的关系,好的厨师能够恰当运用不同的厨具做出色香味俱佳的菜肴;好的架构也能将不同技术有机组合,通过合适的通信机制,构建功能完备的计算系统。为什么是计算系统呢?因为IT的本质就是远古以来人类孜孜不断追求的计算,从结绳记事到算盘,从齿轮计算器到现代电子计算器,在IT发展过程中也是人们不断追求计算能力和性能的过程。

 

      在机电技术、电子管技术、半导体晶体管技术、集成电路技术、大规模集成电路技术先后出现时,都有力的推动了计算机及其架构的发展。

     

       1937年可判断问题及图灵机模型的提出,带来了架构设计中的简单原则,也为非生物首次赋予了计算能力。而这正是凯文·凯利在《失控》里说“人造无机物表现得越来越像生命体”的主要依据,这也是很多科学家对AI进化产生担心的起源。

 

       1945年冯·诺依曼提出了存储程序(数据和指令混在一起,统一编址)的架构设计,即我们耳熟能详的“冯·诺依曼”体系架构,该架构由五部分组成,即输入、输

出设备,中央控制单元(CPU)、存储器以及连接CPU和存储的总线。这种简单的架构设计模式在当代依旧流行,如Intel及ARM的芯片架构。

      但正所谓“成也萧何败萧何”,程序指令和数据共用总线,带来了“冯·诺依曼瓶颈”——计算机并行能力差,数据处理速度慢。

      而现代的CPU还有一种架构设计模式,即哈佛架构,(数据和指令分开),当代的中央处理器和微控制器大都采用此类设计。虽然哈佛架构下计算效率高,但架构复杂,应用场景较为局限,这也是基于冯·诺依曼设计的X86在市场份额中拔得头筹的重要因素。

       对比“冯·诺依曼”体系架构和哈佛架构,不难看出,简单、完备、通用、兼容/开放、可拓展的架构更有前景和竞争力,因此这五个原则也一直影响了后续架构的设计规范。

 

       可以说图灵机模型奠定了现代计算机的理论基础,冯·诺依曼架构主导了70多年来计算机的发展,即大中型机时代、以PC为主的客户端/服务端(Client/Server)时代、互联网时代、云计算、大数据时代、互联网+时代。具体表现如下所述。

 

         大中型机时代充分发挥单机的能力及其垂直扩展的能力。为了更好地提升资源利用率,虚拟化技术大行其道。而虚拟化其实就是我们现在云计算的起源。

        随着信息化时代的到来,大型机无论从成本、开放性和扩展性方面都不能满足日益多元化、大众化的信息处理的需求。于是,20世纪70年代网络技术在UNIX操作

系统和C语言的加持下,在开放、互联的理念催动下应运而生。现在我们熟悉的以太网技术、TCP/IP技术、OSI开放网络七层架构就诞生在这个时期。

 

        20世纪80年代,个人对计算的需求及局域网的发展引领着PC机时代的到来,客户端/服务端(Client/Server,CS)分布式架构产生。远程程序调用(RPC)、分布式计算环境(DCE)、普通对象请求代理(CORBA)也都是分布式框架下的产物。分布式架构改变能节省了成本,提高效率,提升了个人PC带来的便捷计算的体验。

 

        20世纪90年代,互联网普及老百姓。CS架构逐渐向BS架构(Browser-Server,浏览器-服务端)转变,这一时期,架构设计更关注开放性和可移植性。于是,具备高移植性的高级编程语言Java诞生了。

 

      在21世纪,应用越来越多,IT架构开始强调组件的专业化和分工协作。架构原则“Separation of Concerns”(SOC,对不同的问题要用不同的组件

分开处理)被提倡并推广,具备该原则的“Model—View—Controller”(MVC)的三级架构开始流行,同期的著名架构还有Roy Fielding在博士论文中提出的REST架构(表示性状态传输,资源用URI表示),该架构目前在超媒体(超链接)中广泛应用。REST架构极具扩展性,兼具简单性、兼容性和扩展性现已超越SOAP模式,成为互联网的主流架构。

 

        在这20多年的架构发展背后,是分布式理论的发展。分布式理论主要解决CAP问题,即一致性(Consistency,常见的ACID就是一致性的体现)、可用性(Availability)和分区容错性(Partition Tolerance)。

这个原则也是任何一个分布式系统的设计都要根据应用场景的不同而要做出取舍,三取其二。特别是互联网时代,一般的应用都对可用性和分区容错性有很高要求。

大部分互联网应用需要满足BASE(Basic Available,基本可用;S表示Soft State,软状态;E代表Eventual consistent,最终一致)要求。

 

       随着谷歌GFS、MapReduce和BigTable的3篇论文的发表,海量数据下全新的分布式存储、分布式并行计算和分布式数据库的架构设计浮出水面,掀开了大数据时代的帷幕,云计算、大数据时代从此到来。

       其中,MapReduce框架极大的扩展了冯·诺依曼架构,将集群的并行编程简答化、将并行处理计算能力发扬光大。当然MapReduce不是一个人在战斗,MapReduce依赖了具有大规模扩展性、分布式容错特性的文件系统BigTable,而BigTable是基于大规模的分布式文件系统GFS而生的。

 

         这里插一句,虽然云计算一词是谷歌提出并推广,但它并不是凭空出现的,也是有历史沿革的。它最早的祖先可以追溯到公用计算(Utility Computing)的概念。

公用计算(Utility Computing)在20世纪60年代美国科学家约翰·麦卡锡(John McCarthy)提出,值得一提的是人工智能(Artificial Intelligence)概念也是他首发提出。

 

     在云计算时代,我们基于容错、并行调度程序将大量、廉价、标准的服务器组成资源池,把资源池的IT能力(具体包括计算能力、网络能力、存储能力、应用能力)转化成服务,以弹性按需的方式对外提供。因此云计算时代的架构设计依旧是中心化的,而且更考虑经济成本因素。而经济性对传统的架构设计模式带来了很大的冲击力,这也是云服务愈发普及的原因之一。

 

       这个过程中其实有一个有意义的思考,为什么云计算会出现在21世纪,而不是更早?这个人类的信息化有一定的关系,简单来说大数据的出现是人类几十年的社会信息化、数字化的产物,特别是从模拟信号向成数字信号转变的过程中,数字化进程被加速。

        现在,不仅业务和管理信息化、数字化,人与人交流、物与物的交流(物联网时代)都在数字化,而谷歌的业务就承载了这些数字化。随着大数据的出现,我们呼唤更大的计算处理能力,呼唤对应的IT架构的发展。Google的3篇论文实际上就是在这种时代和业务背景下产生。

 

        而大数据与行业的深度融合,就带来了互联网+时代(2015年开始),其实质是企业的数字化转型。

       在互联网+时代,传统行业采用“互联网思维”来创新业务模式,利用互联网和大数据技术,通过线下、线上的紧密结合,为客户提供更好价值的服务和产品。于是互联网+金融、互联网+制造、互联网+教育、互联网+金融、互联网+交通、互联网+能源等各类词汇喷涌而出。

      在国内,就是我们常见的P2P公司像雨后春笋般兴起,犹如昙花一般转瞬即逝。

而在国外,互联网+金融更单纯一些,国外称之为Fintech,即金融科技。常见的金融科技的形态有包括P2P借贷、众筹、移动支付、虚拟货币、客户行为大数据分析等。

 

      在这个过程中,去中心化的架构设计模式开始出现。这种设计模式最早在亚马逊的Dynamo架构中出现,而随后中本聪的比特币架构设计将去中心化推向了技术风口浪尖。

       比特币完全无中心化的分布式架构可以在公网环境下通过合适的经济模型(挖矿激励)和共识算法形成信任,规避了传统中心化分布式架构在中心节点的致命弱点,也顺带解决了信任建立和维护及信息防伪的问题。金融元素的引入使得DDOS攻击成功的可能性极大降低,因此,这也带来了架构设计的另一种思想——金融属性的结合。区块链技术从此被认为是下一代互联网颠覆性技术。

 

        目前看来,互联网+时代,互联网技术和行业业务越融合,对信任的建立、维护以及安全的渴望越高,因此未来互联网+与区块链的结合恐怕是不可避免的。那区

块链架构的独特之处有哪些呢?除了耳熟能详的去中心化,还有公正性和透明性、防伪&防篡改&匿名性&安全性、全网共识机制、数据可追溯、合约自动执行、数据全网分布式最终一致性保证。

 

 

 

 

 

 

分享到:
评论

相关推荐

    软件架构设计最佳实践

    4. **架构设计驱动因素及质量分析** - **业务驱动**:软件架构设计必须紧密围绕业务目标展开,确保技术选型和服务设计能够支撑业务发展。 - **技术驱动**:选择合适的技术栈和工具链对于构建高性能的软件系统至...

    演进式架构的平台化落地(42页).pdf

    2. 高度灵活性:演进式架构强调了架构设计的灵活性和可适应性,能够快速地响应业务发展和技术变革的需求。 3. 可靠性:演进式架构能够保持稳定变化,能够满足业务发展和技术变革的需求。 演进式架构的应用场景包括...

    数字化转型企业架构设计手册.pptx

    企业架构将企业战略转化为企业变革的需求、原则及蓝图,并通过持续的提升流程和管控流程推动企业变革,促进企业战略的实现。 业务架构是企业架构的一部分,旨在描述组织如何运用业务的关键要素来实现其战略意图和...

    淘宝商品体系架构的历史和演进.pdf

    #### 一、淘宝体系架构的演进背景及目的 淘宝作为中国最大的电商平台之一,在其发展过程中,商品体系架构经历了多次重大变革。这些变革的主要目的是为了适应快速变化的市场需求以及不断提高用户体验的需求。 - **...

    IT系统架构演进与趋势.pdf

    企业IT架构正面临着重大的变革,新的技术和架构模式不断涌现,例如云计算、移动应用、大数据、社交媒体等。这些技术的出现,改变了企业IT架构的发展方向和模式。企业IT架构需要拥抱这些新的技术和架构模式,以适应新...

    Web架构设计的演进

    随着互联网技术的不断发展,Web架构设计经历了多次演进,以适应不断变化的需求和挑战。本篇文章将深入探讨Web架构设计的演进历程,特别是针对大型Web应用的设计原则和方法。 一、早期的Web架构:静态HTML与CGI 在...

    明星讲师-黄浩-ASSZ2018-下一代分布式体系架构的理念与演进-黄浩

    在过去的二十年里,随着互联网技术和业务需求的飞速发展,分布式系统架构经历了多次重大变革。从最初的单体应用到如今的微服务架构,每一步演变都反映了技术进步和业务需求的变化。本文将围绕分布式环境面临的三大...

    互联网时代的软件革命-SaaS架构设计

    在互联网飞速发展的今天,软件行业的面貌正在发生深刻变革,其中最具代表性的一种模式就是SaaS(Software as a Service,软件即服务)。SaaS不仅改变了传统软件的交付方式,还为企业的信息化建设带来了全新的可能性...

    拥抱变化:演进式架构(英文演讲).pdf

    演进式架构是一种应对快速变化和业务需求的现代软件架构设计模式。在“拥抱变化:演进式架构”这个主题中,演讲者探讨了如何构建能够适应不断变革的系统,以满足技术和业务发展的双重驱动。 首先,我们看到两种主要...

    基于云原生架构的PaaS平台演进之路.pdf

    云原生架构是一种基于云计算环境的软件开发、运行和管理的最佳实践集合,它支持更快的创新速度、极致的用户体验、稳定可靠的用户服务以及高效的研发效率。云原生的核心理念包括微服务架构、容器化、持续集成/持续...

    微信ANDROID客户端架构演进及其对开发流程的影响.pdf

    这些变革不仅反映了软件工程实践中对于架构设计的深入理解和实践经验的积累,而且对于解决诸如性能瓶颈、用户体验提升等问题具有重要意义。 #### 架构演进历程 **1. 微信客户端架构V1(1.0~)** - **多Activity...

    车载智能计算基础平台SOA软件架构白皮书CAICV.pdf

    第一章介绍了研究背景及意义,其中提到了汽车电子电气架构的演进趋势,从传统的分布式架构向集中式、高性能的计算平台转变。车载智能计算基础平台是这一变革中的核心,它集成了复杂的计算和通信功能,支持高级驾驶...

    小米微服务架构的演进之道

    架构的重要特性在于它反映了对系统设计决策的重要性,这种重要性可以通过实施变革时所引入的成本来衡量。 架构师的角色与建筑师有相似之处,但也有区别。架构师不仅需要理解技术,还要懂业务,明白如何通过技术手段...

    移动通信系统架构演进

    ### 移动通信系统架构演进 随着信息技术的迅速发展,移动通信系统经历了多次重大变革。从最初的2G网络到现今的5G网络,每一次变革不仅带来了通信速度和容量的显著提升,还促进了多种新技术和服务的诞生。本文将重点...

    软件定义汽车- E/E架构从分布式向域集中演进

    综上所述,软件定义汽车的核心在于通过软件的灵活性和创新性来驱动汽车功能的变革,这需要E/E架构的集中化和SOA的引入,以及通信方式的升级,以实现汽车软硬件的解耦、软件的快速迭代和整车的智能化。这一变革不仅...

    企业层面的架构设计力提升之道-温昱

    【企业层面的架构设计力提升之道】是温昱在2009年软件大会上发表的演讲主题,这个主题深入探讨了如何在企业层面上提升架构设计能力,这对于任何规模的企业,尤其是快速发展或转型中的IT组织来说,都是至关重要的。...

    云原生架构下的软件生产力体系演进.pdf

    《云原生架构下的软件生产力体系演进》 随着信息技术的快速发展,云原生架构已成为推动软件生产力体系变革的关键力量。这一概念的核心在于利用云计算的灵活性、弹性和可扩展性,构建更加高效、敏捷的软件开发和运营...

Global site tag (gtag.js) - Google Analytics