【软件架构理论系列】简述分布式的定义、分类、技术发展历史进程

·  阅读 122

这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战


@[toc]

明确分布式定义

个人总结的分布式定义是:一种分散且协同的工作方式

==很多人对分布式的理解有一个误区,认为分布式只是web系统开发的分布式架构。实际上从这种工作方式来理解,分布式的分类有很多,应用也很广。==

造成误区的根源还是因为,大多数情况下,我们获取的信息中只表明了"分布式"(定语),缺少了主语 所以这篇文章会尽量带上主语来描述

首先借鉴自百度百科,结合个人想法,例举一下目前常见的分布式应用,分类如下

  1. 面向计算任务 的 分布式计算 (分布式数学计算,更细分的如分布式渲染)
  2. 面向网络服务 的 分布式网络服务架构 (如SOA、微服务)
  3. 面向数据管理 的 分布式数据管理系统 (如git、区块链)

面向网络服务广义上属于面向计算任务。但是强调的是业务处理。可以比喻为解答应用题和算术运算的区别

百度百科 分类和特征 在这里插入图片描述

一、应用和架构发展过程

1. 20世纪70年代末到80年代初的 原始分布式时代 (分布式计算)

参考资料 《凤凰架构》原始分布式时代

20世纪70年代末到80年代初。当时的计算能力非常有限,所以科学家就寻求通过多台计算机来完成一个功能,这个时代被称为原始分布式时代。但是这个时代对分布式系统的尝试并没有取得太大的成绩。但也不是一无所成,这个时代的探索,出现了远程调用(rpc),分布式文件系统的雏型,为后续计算机学科的发展奠定了基础

2. 1997年发布的vray (分布式渲染)

参考资料 维基百科 V-Ray

V-Ray是一种渲染引擎,它使用全局照明算法,包括路径跟踪,光子映射,辐照度映射和直接计算的全局照明。

V-Ray是由保加利亚公司Chaos Group(保加利亚语:ХаосГруп)开发的计算机图像渲染应用程序,于1997年在索非亚成立.V-Ray是第三方3D计算机图形的商业 插件软件应用程序,用于媒体,娱乐,电影和视频游戏制作,工业设计,产品设计和架构等行业的可视化和计算机图形学

(老大说在200x年时,公司里用分布式来做游戏渲染。做法是用公司的电脑一起去渲染,就是用的vray)

直到现在,VRay仍是目前业界最受欢迎的渲染引擎

3. 1994年提出,2006年崛起的 SOA时代 (分布式网络架构)

参考资料 SOA的发展历程 SOA的发展历史与标准规范 《凤凰架构》SOA 时代

==SOA(面向服务的架构)是一次具体地、系统性地成功解决分布式服务主要问题的架构模式==

SOA 的概念最早由 Gartner 公司在 1994 年提出

1996年,Gartner提出了SOA的预言,不过当时的软件发展水平和信息化程度还不足以支撑这样的概念走进实质性应用阶段。

2000年以后,人们普遍认识到基于公共互联网之上的电子商务具有极大的发展潜力,因此需要创建一套全新的基于互联网的开放通信框架,以==满足企业对电子商务中各分立系统之间通信的要求==。于是,人们==提出了Web服务的概念==,希望通过将企业对外服务封装为基于统一标准的Web服务,实现异构系统之间的简单交互

这一时期,出现了三个著名的Web服务标准和规范

  • 简单对象访问协议(Simple Object Access Protocal,SOAP)
  • Web服务描述语言(Web Services Description Language,WSDL)
  • 通用服务发现和集成协议(Universal Discovery Description and Integration,UUDI)

这也就是原始/传统WebService,后来被REST所取代。拓展阅读:什么是WebService?REST与WebService的区别和联系?

2002年12月,Gartner Group又提出了SOA是“现代应用开发领域最重要的课题”。据Gartner估计,到2008年,超过60%的企业在创建关键任务的应用程序时,将会使用面向服务的架构(SOA)作为主导原则。

从2005年开始,SOA推广和普及工作开始加速。不仅专家学者,几乎所有关心软件行业发展的人士都开始把目光投向SOA 2006年,由 IBM、Oracle、SAP 等公司共同成立了 OSOA 联盟(Open Service Oriented Architecture),用于联合制定和推进 SOA 相关行业标准 行业发展的人士都开始把目光投向SOA。一时间,SOA频频出现在各种技术媒体、新产品发布会和技术交流会上。 各大厂商也逐渐放弃成见,通过建立厂商间的协作组织共同努力制定中立的SOA标准。这一努力最重要的成果体现在3个重量级规范上:SCA/SDO/WS-Policy。SCA和SDO构成了SOA编程模型的基础,而WS-Policy建立了SOA组件之间安全交互的规范。这三个规范的发布,标志着SOA进入了实施阶段。

4. 2005年提出,2014年崛起的 微服务时代 (分布式网络架构)

参考资料 《凤凰架构》微服务时代

微服务架构(Microservices) 微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言,不同的数据存储技术,运行在不同的进程之中。服务采取轻量级的通信机制和自动化的部署机制实现通信与运维。 微服务是一种软件开发技术,是一种 SOA 的变体形式。 -- Wikipedia

2005年由Peter Rodgers 博士在 2005 年度的云计算博览会上首次使用。当时只是对SOA架构的修修补补,难以唤起广大技术人员的更多激情

2012 年,Thoughtworks 首席咨询师 James Lewis 做了题为《Microservices - Java, the Unix Way》的主题演讲,其中提到了单一服务职责、康威定律、自动扩展、领域驱动设计等原则,却只字未提 SOA。 微服务已经迫不及待地要脱离 SOA 的附庸,成为一种独立的架构风格,也许,未来还将会是 SOA 的革命者。

2014年, Martin Fowler 与 James Lewis 合写文章《Microservices: A Definition of This New Architectural Term》。此文中首先给出了现代微服务的概念,文中列举了微服务的九个核心的业务与技术特征 《Microservices》一文中对微服务特征的描写已经相当具体了,文中除了定义微服务是什么,还专门申明了微服务不是什么——微服务不是 SOA 的变体或衍生品,应该明确地与 SOA 划清了界线,不再贴上任何 SOA 的标签。如此,微服务的概念才算是一种真正丰满、独立的架构风格,为它在未来的几年时间里如明星一般闪耀崛起于技术舞台铺下了理论基础

由于与 SOA 具有一致的表现形式,这让微服务的支持者更加迫切地拒绝再被打上 SOA 的标签,尽管有一些人坚持认为微服务就是 SOA 的一种变体形式,也许从面向服务方面这个方面来说是对的,但无论如何,SOA 与微服务都是两种不同的东西,正因如此,使用一个别的名称来简明地定义这种架构风格就显得更有必要。 —— Martin Fowler / James Lewis,Microservices

二、相关的发展节点

1988年,《Distributed Systems Concepts and Design》第一版发布

分类:分布式网络服务

1988年,黑皮书《Distributed Systems Concepts and Design》(《分布式系统概念与设计》) 第一版发布。2012年发布最新版第五版

2003-2006年,Google的三篇分布式论文

参考:分布式系统与 Google 早期的三篇论文

许多对大数据技术感兴趣的人都听说过 Google 在十年前发表的三项重要成果: Google File System、 MapReduce 和 Bigtable。Google 在这些成果中,介绍了其利用通用计算设备成功搭建分布式集群的方法。其中的诸多设计思想在后来被广泛借鉴。

论文题目The Google File SystemMapReduce: Simplified Data Processing on Large ClustersBigtable: A distributed storage system for structured data
发表时间200320042006
内容概述分布式数据存储。容错、高性能的分布式文件系统,同时服务大量客户端。分布式批处理计算。分布式结构化数据管理。
分类
(没去看论文,根据内容概述分类)
分布式数据管理分布式计算分布式数据管理

2005年,git发布

分类:分布式数据管理

2005年,分布式版本控制软件 git 以GPL发布

2008年,区块链携比特币出现

分类:分布式数据管理 简单说:区块链=分布式系统+密码学

2008年,中本聪于《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币网络。

2009年,阿里巴巴启动去"IOE"战略

分类:分布式网络服务

2009年,阿里巴巴发起去"IOE战略"。 持续到直到2013的支付宝的最后一台IBM的小型机的下线。 此后,国内的web分布式才真正被带动着发展起来

2019年,HarmonyOS 1.0 发布

分类:分布式操作系统

首个真正为全场景时代打造的分布式操作系统。

以往的操作系统往往是跟随一种特定品类的硬件诞生的,但鸿蒙并不是一个只局限于手机的系统 随着科技的发展,智能设备会越来越多,不可能为每个设备都设计一个独立的系统,而鸿蒙解决了这个问题。 鸿蒙是将设备的硬件能力拆散,当成一个个共享资源,当用户需要某个能力,就可以将它从硬件库里提取出来跨界使用,它系统层级梗清晰,也更加模块化,可以依照不同的处理器性能让开发商去调整系统模块,从而运用于更多的智能设备

HarmonyOS可以让我们在IOT内的任何一个设备上进行操作,来实现跨终端无缝协同体验。真正做到万物互联


欢迎补充

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改