文章目录
明确分布式定义
我总结的分布式定义是:一种分散且协同的工作方式
很多小白对分布式有一种误解,认为分布式只是软件开发中的分布式架构。实际上分布式的种类有很多,应用也很广泛。
造成这种误解根源在于,每每说到"分布式"(定语)的时候,都缺少了主语。所以这篇文章会尽量带上主语来描述。
首先借鉴自百度百科,结合个人想法,例举一下目前常见的分布式应用领域,分类如下
- 面向计算任务 的 分布式计算 (分布式数学计算,更细分的如分布式渲染)
- 面向网络服务 的 分布式网络服务架构 (如SOA架构、微服务架构)
- 面向数据管理 的 分布式数据管理系统 (如git、区块链)
“面向网络服务"广义上或许属于"面向计算任务”,但前者更专注于面向IO的操作(如web服务),而后者则不是。
或者也可以把他们比喻为解答应用题和算术运算的区别。
百度百科 分布式系统的分类和特征
一、应用和架构发展过程
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 架构(Service-Oriented Architecture),即面向服务的架构。定义了一种通过服务接口使软件组件可重用和互操作的方法
SOA中的每个服务都体现了执行一个完整的、独立的业务功能所需的代码和数据(例如,检查客户的信用,计算每月的贷款支付,或处理抵押贷款申请)。服务接口提供了松散的耦合,这意味着它们可以在很少或根本不知道下面的服务是如何实现的情况下被调用,从而减少应用程序之间的依赖性。
SOA旨在解决"如何使用多个独立的分布式服务共同构建一个更大型系统",是一次具体地、系统性地成功解决分布式服务主要问题的架构模式
发展
SOA 的概念最早由 Gartner 公司在 1994 年提出,不过当时的软件发展水平和信息化程度还不足以支撑这样的概念走进实质性应用阶段。
2000年以后,人们普遍认识到基于公共互联网之上的电子商务具有极大的发展潜力,因此需要创建一套全新的基于互联网的开放通信框架,以满足企业对电子商务中各分立系统之间通信的要求。于是,人们提出了Web服务(WebServices)的概念,希望通过将企业对外服务封装为基于统一标准的Web服务,实现异构系统之间的简单交互
这一时期,出现了三个著名的Web服务标准和规范
- 简单对象访问协议(Simple Object Access Protocal,SOAP)
- Web服务描述语言(Web Services Description Language,WSDL)
- 通用服务发现和集成协议(Universal Discovery Description and Integration,UUDI)
它们构建起了早期的WebServices体系,后来被RESTful WebServices所取代。拓展阅读:【WebServices系列】详解WebServices (SOAP-WebServices & RESTful WebServices)
WebServices开始流行以后,互联网迅速出现了大量的基于不同平台和语言开发的Web服务组件。为了能够有效地对这些为数众多的组件进行管理,人们迫切需要找到一种新的面向服务的分布式Web计算架构。该架构要能够使这些由不同组织开发的Web服务能够相互学习和交互,保障安全以及兼顾复用性和可管理性。由此,人们重新找回面向服务的架构(Service-OrientedArchitecture,SOA),并赋予其时代的特征。需求推动技术进步,正是这种强烈的市场需求,使得SOA再次成为人们关注的焦点。
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进入了实施阶段。
衰落
就像当初的"WebServices"一样,从一个"Web服务"的广义概念,被大厂构建成了一种基于SOAP的用于构建Web服务的技术标准。
SOA实际发展起来后,大厂也开始为SOA构建一种事实标准,其中最重要的就是ESB
ESB是一个服务集成平台,它就像一根管道,用来连接各个服务节点。ESB的核心功能在于集成基于不同协议的不同服务,提供不同协议、报文服务之间通过 ESB 实现互联互通。ESB 提供协议转换、解释以及路由寻址等功能。在整个服务调用过程中起到至关重要的作用。
然而,ESB实在太笨重了,维护、更新和扩展集中式ESB变得不堪重负和昂贵,以至于ESB常常延迟了它和 SOA 旨在产生的生产力收益,这使那些期待更快速度的业务团队感到沮丧。
SOA 在 21 世纪最初的十年里曾经盛行一时,有 IBM 等一众行业巨头厂商为其呐喊冲锋,吸引了不少软件开发商、尤其是企业级软件的开发商的跟随,最终却还是偃旗息鼓,沉寂了下去
4. 2005年提出,2014年崛起的 微服务时代 (分布式网络服务架构)
参考资料
《凤凰架构》微服务时代
最初
“微服务”这个技术名词最早在 2005 年就已经被提出,它是由 Peter Rodgers 博士在 2005 年度的云计算博览会(Web Services Edge 2005)上首次使用。
最初的微服务是作为一种 SOA 的轻量化的补救方案而被提出的。时至今日,在英文版的维基百科上,仍然将微服务定义为一种 SOA 的变种形式,所以微服务在最初阶段与 SOA有所牵扯也完全可以理解,但现在来看,维基百科对微服务的定义已经颇有些过时了。
A microservice architecture – a variant of the service-oriented architecture structural style – is an architectural pattern that arranges an application as a collection of loosely coupled, fine-grained services, communicating through lightweight protocols.
—— Wikipedia,Microservices
发展
微服务的概念提出后,在将近十年的时间里面,并没有受到太多的追捧。如果只是对现有 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》。准确地说,今天大家所了解的“微服务”是这篇文章中定义的“微服务”。在此文中,首先给出了现代微服务的概念:“微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言,不同的数据存储技术,运行在不同的进程之中。服务采取轻量级的通信机制和自动化的部署机制实现通信与运维”。
此外,文中列举了微服务的九个核心的业务与技术特征:围绕业务能力构建(Organized around Business Capability)、分散治理(Decentralized Governance)、通过服务来实现独立自治的组件(Componentization via Services)、产品化思维(Products not Projects)、数据去中心化(Decentralized Data Management)、强终端弱管道(Smart Endpoint and Dumb Pipe)、容错性设计(Design for Failure)、演进式设计(Evolutionary Design)、基础设施自动化(Infrastructure Automation)
《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 File System、 MapReduce 和 Bigtable。Google 在这些成果中,介绍了其利用通用计算设备成功搭建分布式集群的方法。其中的诸多设计思想在后来被广泛借鉴。
论文题目 | The Google File System | MapReduce: Simplified Data Processing on Large Clusters | Bigtable: A distributed storage system for structured data |
---|---|---|---|
发表时间 | 2003 | 2004 | 2006 |
内容概述 | 分布式数据存储。容错、高性能的分布式文件系统,同时服务大量客户端。 | 分布式批处理计算。 | 分布式结构化数据管理。 |
分类 (没去看论文,根据内容概述分类) | 分布式数据管理 | 分布式计算 | 分布式数据管理 |
2005年,git发布
分类:分布式数据管理
2005年,分布式版本控制软件 git 以GPL发布
2008年,区块链携比特币出现
分类:分布式数据管理
简单说:区块链=分布式系统+密码学
2008年,中本聪于《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币网络。
2009年,阿里巴巴启动去"IOE"战略
分类:分布式网络服务
2009年,阿里巴巴发起去"IOE战略"。
持续到直到2013的支付宝的最后一台IBM的小型机的下线。
此后,国内的web分布式才真正被带动着发展起来
2019年,HarmonyOS 1.0 发布
分类:分布式操作系统
首个真正为全场景时代打造的分布式操作系统。
以往的操作系统往往是跟随一种特定品类的硬件诞生的,但鸿蒙并不是一个只局限于手机的系统
随着科技的发展,智能设备会越来越多,不可能为每个设备都设计一个独立的系统,而鸿蒙解决了这个问题。
鸿蒙是将设备的硬件能力拆散,当成一个个共享资源,当用户需要某个能力,就可以将它从硬件库里提取出来跨界使用,它系统层级梗清晰,也更加模块化,可以依照不同的处理器性能让开发商去调整系统模块,从而运用于更多的智能设备
HarmonyOS可以让我们在IOT内的任何一个设备上进行操作,来实现跨终端无缝协同体验。真正做到万物互联
拓
看到这里,其实分布式的定义已经没有神秘感了,各种分布式的场景也都不再新鲜。
除了上边提到的哪些场景外,还有很多,比如 DDos 也是分布式的。
欢迎补充