http://www.infoq.com/cn/articles/the-evolution-of-distributed-systems

分布式系统(确切地说应该是分布式计算机系统)从它诞生到现在已经过去了很长的时间。在很久以前,一台电脑一次只能完成一项特定的任务。如果我们需要同时完成多项任务,则需要多台计算机并行运行。但是,并行运行并不足以构建真正的分布式系统,因为它需要一种机制来在不同计算机或者那些运行在计算机上的程序之间进行通信。这种在多台计算机之间交换/共享数据的需求催生了面向消息通信的想法,即两台计算机使用包含了数据的消息来共享数据。文件共享、数据库共享等其他机制当时还没有出现。

图片来源:https://dzone.com/articles/building-integration-solutions-a-rethink

接着,我们进入了多任务操作系统和个人电脑的时代。利用Windows、Unix、Linux等操作系统,我们可以在同一台计算机上运行多个任务。这使得分布式系统开发人员能够在一台或者几台通过消息传递连接的计算机内构建和运行整个分布式系统。这催生了面向服务的架构(SOA),其中每个分布式系统可以通过一组集成在一台计算机或多台计算机上运行的服务来构建。我们通过WSDL(用于SOAP协议)或WADL(用于REST协议)等语言适当地定义服务接口。接着,服务的使用者将利用这些接口来进行客户端的实现。

图片来源:https://www.akuaroworld.com/telecom-oss-new-network-architecture/soa-model/

随着计算能力和存储价格的降低,世界各地的组织都开始使用分布式系统和基于SOA的企业IT系统。但是,一旦服务或系统的数量增加,这些服务之间的点到点连接就不再是可扩展和可维护的了。这催生了集中式“服务总线”概念的产生。服务总线通过类似集线器的架构将所有系统连接在一起。这个组件被称为ESB(企业服务总线)。它作为一个“语言”翻译者,就像一个中间人在帮助一群使用不同“语言”但希望相互通信的人进行沟通。在企业应用中,“语言”代表着在通信时不同系统的消息传递协议和消息格式。

图片来源:http://ibmwebsphereenterpriseservicebus.blogspot.com/2015/09/enterprise-requirements-for-esb.html

这种模式工作得很好,即使在今天也能正常工作。随着万维网的普及和模型的简化,基于REST的通信比基于SOAP的通信模型变得更加流行。这促进了基于应用程序编程接口(API)的REST模型通信的发展。由于REST模型的简洁特性,我们需要在标准REST API实现之上实现安全(身份验证和授权)、缓存、流控和监控等各种类型的功能。但我们并不想独立地在每个API上实现这些功能,而是需要一个公共组件将这些功能应用于这些API之上。这样的需求催生了API管理平台的发展。现在,它已经成为了任何分布式系统的核心功能之一。

图片来源:https://www.infoq.com/presentations/api-management-architecture

随后,我们见证了分布式系统大爆炸的时代。Facebook、Google、Amazon、Netflix、LinkedIn、Twitter等互联网公司变得异常庞大。他们开始想要构建跨越多个地理区域和多个数据中心的分布式系统。这样的需求使他们的技术焦点转向了一切开始的地方。工程师们开始思考单台计算机和单个程序的概念。他们不再把一台计算机当作一台计算机来看,而在同一台计算机内创建多台虚拟计算机。这催生了关于虚拟机的想法,即同一台计算机可以充当多台计算机并且全部并行运行。尽管这是一个还不错的主意,但在宿主计算机的资源利用方面,这并不是最好的选择。运行多个操作系统需要更多的资源,但在同一个操作系统里运行多个程序并不需要这些资源。

这些问题最终催生了关于容器技术的想法。容器只使用一个宿主操作系统(Linux)的内核,就可以运行多个程序并分别依赖于相互独立的运行时。这个概念在Linux操作系统上已经有一段时间了。随着基于容器技术的应用程序部署的普及,它变得更加流行并且有了很多改进和提升。容器可以像虚拟机一样工作,却不需要多一个操作系统的开销。您可以将应用程序和所有相关的依赖项放入容器镜像中。它便可以被放在任何可以运行容器的宿主操作系统中运行。Docker和Rocket是两个热门的容器构建平台。

图片来源:https://techglimpse.com/docker-installation-tutorial-centos/

容器技术为Netflix、LinkedIn和Twitter等组织提供了底层框架,用于构建他们要求苛刻的永远在线的多区域、多数据中心应用平台。但这并不意味着利用容器技术没有任何难点。基于容器的部署带来的轻量特性让跨多个容器的平台维护和编排变得非常复杂。随着微服务架构(MSA)的出现,单体式应用程序被分成更小块的微服务。这些微服务能够完成整个服务里的某一个特定功能并部署在容器中(在大多数情况下都可以)。这给分布式系统生态系统带来了一系列新的需求。要让系统最终保持一致,并且彼此之间没有太多复杂的通信。

图片来源:https://martinfowler.com/articles/microservices.html

这些新的需求最终帮助工程师们构建了一个容器编排系统。该系统可用于维护更大规模的容器部署的一致性。毋庸置疑的是,这个领域的顶尖技术来自Google。因为它们的规模非常大。他们构建了名为“Kubernetes”(又名k8s)的容器编排平台,并成为大规模容器编排需求的事实标准。k8s让工程师可以:

  • 在大型集群中运行容器
  • 将数据中心视为一台计算机
  • 控制服务之间的通信(在容器上运行)
  • 动态伸缩与为多个服务进行负载均衡

Kubernetes和Docker让应用程序员的生活更加轻松。他们不用再考虑他们的应用在不同的环境(操作系统、开发环境、测试环境、生产环境等)下的不同表现。他构建的容器镜像在所有环境中运行表现几乎完全相同,因为所有依赖项都被打包到镜像中了。

图片来源:https://redmondmag.com/articles/2017/08/01/container-orchestration-with-kubernetes.aspx

但是,尽管我们有了容器和编排框架,我们仍然需要一个管理这些服务器的团队。这意味着数据中心需要使用像Docker和Kubernetes这样的技术进行管理,以确保它对于应用程序来说就像一个单台计算机一样。如果不是你自己来做这些事情,而是别人来为你管理这部分工作,这正是serverless架构所带来的便利。您的服务器将由第三方云提供商(如Amazon(Lambda),Microsoft(Azure Functions)或Google(Cloud Functions))进行管理。现在,分布式系统将由应用程序员进行编程,而基础设施管理将由云提供商完成。这是分布式系统发展的最新状态,并且会不断地发展下去。

查看英文原文:https://medium.com/@chanakaudaya/the-evolution-of-distributed-systems-fec4d35beffd

转载于:https://www.cnblogs.com/davidwang456/p/9354171.html

分布式系统发展史--转相关推荐

  1. 大数据之旅--Hadoop的发展史

    一. 大数据概念: 大数据(Big Data):指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样 ...

  2. 浅谈数据库发展史和 OceanBase 的诞生

    浅谈数据库发展史和 OceanBase 的诞生 原创 杨传辉 OceanBase 昨天 本文作者:杨传辉(花名:日照)蚂蚁集团资深总监.OceanBase 研发总经理,全面负责 OceanBase 研 ...

  3. 百度发展史,百度发展历程

    2006-6-14 2:19:57   www.emct.org.cn 搜索引擎发展史1990年以前,没有任何人能搜索互联网. 所有搜索引擎的祖先,是1990年由Montreal的McGill Uni ...

  4. 从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史

    abstract: 当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而 ...

  5. Spring Cloud入门系列(1)- Spring生态体系发展史+全系框架介绍

    Spring发展史 2000年,Java EE和EJB迅速发展,很多知名公司都是采用此技术方案进行项目开发,但是EJB 属于重量级框架,开发繁琐.于是一个叫Rod Johnson的大佬写了一本叫做&l ...

  6. 【REST系列】详解REST架构风格 —— 带你阅读Web发展史上的一个重要技术文献

    文章目录 REST详解 词组解释 论文摘要 REST架构约束 一.Client–server:客户端-服务器 二.Stateless:无状态 三.Cacheability:缓存 四.⭐Uniform ...

  7. 数仓建模—数仓架构发展史(02)

    发展史 时代的变迁,生死的轮回,历史长河滔滔,没有什么是永恒的,只有变化才是不变的,技术亦是如此,当你选择互联网的那一刻,你就相当于乘坐了一个滚滚向前的时代列车,开往未知的方向,不论什么样的技术架构只 ...

  8. hualinux 1.25:Web开发技术发展史

    目录 一.web的诞生 二.动态内容的出现:CGI 三.Web编程脚本语言:PHP/ASP/JSP 四.分布式企业计算平台:J2EE/.Net 五.框架横飞的年代:MVC,ORM 六.回归Web本质: ...

  9. 数据库发展史(引用1)

    数据库发展史(引用1) 引用目录 文章目录 数据库发展史(引用1) 引用目录 1. 数据管理的诞生 2. 关系数据库的由来 3. 结构化查询语言 (SQL) 4. 面向对象数据库 5. 数据管理的变革 ...

最新文章

  1. 推荐|深度学习领域引用量最多的前20篇论文简介
  2. Git使用入门 - 在Git上新建项目
  3. c语言设置程序自动执行,c语言如何设置程序进程执行优先权
  4. IOS FRAMEWORK,动态库 等几个问题
  5. 因服务器升级维护 造成不便敬请谅解,《梦幻西游》2020年5月20日维护公告
  6. oralce或sql中join的用法
  7. npm突然找不到D:\nodejs\node_modules\npm\bin\npm-cli.js的解决方法
  8. 基于 Python 与 mxget 的音乐下载器
  9. python爬数据是什么意思-这python爬虫是什么意思?爬虫怎么抓取数据?
  10. [em] [/em] 表情 代码 如何使用 qq空间代码
  11. 群发邮箱的软件哪个好?2021协议邮件群发软件推荐?
  12. windows多网卡叠加网速
  13. “修真院”修行九九八十一难(1)
  14. [2]十道算法题【Java实现】
  15. 电脑中删掉的照片怎么恢复
  16. Opencv 笔记8 霍夫变换
  17. 计算显卡算力测试软件,380显卡算力多少
  18. API入门系列之五 -一个正儿八经的SDK程序
  19. 用js javascript 创建网页快捷方式
  20. SQL server2012 安装

热门文章

  1. 以下哪个不是迭代算法的缺点_海量数据分库分表方案(一)算法方案
  2. 暗黑三使用服务器维护,《暗黑3》本周更新修复内容及维护时间公布
  3. 0xc0000225无法进系统_电脑无法启动,出现0xc0000225一到错误,该怎样解决!
  4. ajax后台返回数据中文乱码_ajax提交 返回中文乱码问题
  5. centos7 python3.7 ssl_centos6.8安装python3.7无法import _ssl的解决方法
  6. php下字符与二进制互转函数,PHP 字符串与二进制互转
  7. C++重载>>和<<输入和输出运算符)
  8. c++ 类中静态变量 static
  9. sql substr切割字符串
  10. 数据中台建设是噱头还是黑科技?