深度学习
到了20世纪90年代,互联网开始普及。互联网突破了局域网的限制,使得计算可以跨越时空的限制。CS架构逐渐向BS 架构(Browser-Server,浏览器-服务端)转型。BS架构将客户端统一到浏览器,使得应用在任何平台环境下都可以运行。这一时期,IT架构最 关注的是开放性和可移植性,因为IT系统的资源非常宝贵,希望应用开发一次,可在所有IT系统上运行。在这个理念下,催生了Java这个高移植性的高级编 程语言。
进入21世纪,随着应用越来越多,IT架构开始强调组件的专业化和分工协作。一个著名的架构原则叫 “Separation of Concerns”(SOC),意思是对不同的问题要用不同的组件分开处理。这期间一个名叫“Model-View-Controller”(MVC)的 三级架构开始流行,该架构就很好地体现了SOC原则。在MVC中,Model负责数据实体操作,View负责呈现,Controller负责控制逻辑。这 个三级架构可以用在各个层面,小到简单的网站应用,大到企业CRM或ERP,MVC三级架构都得到广泛应用。
而互联网中最著名的HTTP协议的主要起草人Roy Fielding在他2000年完成的博士论文中提出了REST(Representational State Transfer)的架构理念,该架构理念奠定了互联网的架构基础。意思是“表示性状态传输”,单从字面上不好理解它的意思。实质上它是把世界上所有资源 都用一个唯一的标志表示(Universal Resource Identifier,URI),对客户端每次请求,服务端都回复一个资源的表示性状态,而不是资源本身。
举个例子,用户在网页上浏览一条新闻,该请求会将指向新闻资源的URI发到服务端。服务端将根据URI找到该条新闻资源,并将其“表示性状态”,也就是用HTML或XML格式编写的新闻内容反馈给客户端;而新闻资源本身还是留在服务端。
在REST架构下,客户端/服务端的多个请求之间没有上下文的关联,上例中新闻资源的内在表示状态和回复给客户的表示 状态就没有必然联系,如服务端的新闻资源可能是以数据库的形式存放的,接下来用户可能发一个观看视频的请求,这个请求和上面的请求完全无关,没有上下文的 关联关系。服务端在接到请求后,将视频资源的“表示性状态”,也就是视频码流发给客户端。用户也可以通过发指令来修改资源的“表示性”状态或删除资源。没 有“上下文”关系,也就意味着请求是无状态的,这样也就意味着可以不用担心状态的管理,而方便地扩展支撑互联网的基础设施,比如增加Web服务器来增强处 理请求的能力等。
REST架构是超媒体(Hypermedia)浏览的最佳选择。超媒体就是用超链接(Hyperlink)的方式,将 各种不同空间的文本或多媒体信息组织在一起的网状媒体,互联网的网页就是一个超媒体。REST架构在扩展性上具有无与伦比的优势,最后成为互联网的主流架 构。REST架构能够成为主流,最重要的归结于它在架构上的简单性、兼容性和扩展性。当时以IBM和微软为首主推的基于SOAP的Web服务架构就因为过 于复杂,而逐渐被REST边缘化。
分布式系统要比集中式系统更复杂,因为分布式系统要解决的问题是一致性(Consistency)、可用性 (Availability)和分区容错性(Partition Tolerance)。一致性指的是在同一时刻,在每个节点都能读到最新写入的数据。可用性指的是一个运行的节点在合理的时间内总能响应请求,不会发生错 误或超时。分区容错性指的是当网络分裂发生时,系统仍能继续工作。这些问题在集中式系统中都不是大问题。但在分布式系统,特别是在大规模的互联网分布式系 统中却成为最大的挑战。
2000年,Eric Brewer教授提出了一个猜想,就是一致性、可用性和分区容错性三者无法在分布式系统中被同时满足,并且最多只能满足其中两个。而后这个猜想被证明,上 升为大名鼎鼎的帽子理论(CAP Theorem)。CAP理论给分布式系统设计者的启发是:任何一个分布式系统的设计都要根据应用场景的不同而对一致性、可用性和分区容错性做取舍权衡, 三者取其二,不能什么都想要,什么都不想舍。
传统企业级IT应用主要处理的是交易型数据,比如账务、库存数据,因此一致性是根本要求。大部分企业应用需要满足 ACID要求。A代表Atomic,原子性,也就是一个交易要么全完成,要么全不完成,不能处在一个中间状态;C代表Consistency,一致性,指 的是在交易开始前或结束后,关联数据必须保持一致;I代表Isolation,隔离性,也就是不同交易必须相互独立,完全隔离;D代表 Durability,持久性,指的是交易后的数据能持久保存。
到了互联网时代,互联网应用主要是处理交互型数据,像分享的网页、图片等。交互型的数据比交易型的数据的体量大很多, 这些数据对一致性没有很高的要求。但对计算的处理能力的要求比传统计算的要求要大得多。互联网环境和企业内网环境不一样,网络出现问题是常态而不是异常现 象,因此互联网应用对可用性和分区容错性有很高要求,大部分互联网应用需要满足BASE要求。BA代表Basic Available,基本可用,也就是即使某个节点发生故障或网络断开发生,系统应该仍能正常工作而不报错;S表示Soft State,软状态,也就是暂时状态,指的是在某一时刻的某些节点上,允许不一致的暂时状态出现;E代表Eventual consistent,最终一致,也就是系统最后通过补偿机制或者其他纠错机制使得最终状态保持一致。
相比ACID应用,BASE的应用更具良好的扩展性,更适合于在互联网上运行的分布式系统。在互联网上如何做CAP三者的权衡?如何支持BASE的应用?如何满足处理不断增长的海量数据的计算能力的需求?
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=990
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区