博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微服务的漫长历史
阅读量:6260 次
发布时间:2019-06-22

本文共 1165 字,大约阅读时间需要 3 分钟。

与许多人认为的不同,微服务的概念已有相当长的历史,SOA(面向服务的体系架构)也不是90年代才被提出的。在最近举办的伦敦上,就微服务核心概念的前世今生进行了。其中他表示,在过去的50年间,我们一直在使用服务这一概念背后的核心思想。

\\

Young引用了对主要特性的描述,最重要的是其独立替换系统中单个服务的能力、对业务能力的组织以及智能端点(smart endpoint)与哑管道(dumb pipes)的使用,Young提到的这些特性SOA也同样具备。

\\

Young提及,在1970年代最初提出的中,可以将一个对象理解为一个小型的计算机,用户通过向它发送信息使其工作。同时期的也是基于相似的概念,将参与者作为一个小计算机,用户向参与者的邮箱发送信息。它们都是微服务核心概念的前身,虽然使用的工具或消息传递方式不尽相同,但是内在的思想并没有改变。如今我们认为SOA已经失败了,而微服务将会成功,但Young表示SOA的基础概念并没有任何错误,微服务的优点在SOA架构中也早已存在。

\\

回顾近50年的经验教训,Young引用了来概括:如果不是真正需要就不要让系统分布式。将应用分成多个服务,再将它们部署在同一台服务器上,甚至在同一个进程上,这样做并没有不对。Young表示,大部分系统,尤其是小型业务系统,并不需要分布式来提供可伸缩性,但是可以通过分布式来提升可用性。

\\

我们真正需要的是服务间的隔离。当各个服务在同一服务器的各自进程中运行时,我们可以确保服务间遵循相互的协议。进一步隔离的方式是将各个服务运行在独立的Docker容器中。这样减少了各服务间内容的共享,从而达到更好的隔离性。再进一步可以将每个服务运行在独立的节点上。

\\

选择一定层级隔离的原因之一是为了处理相关的错误。当在同一个进程中运行所有的微服务时,如果进程重启,所有的服务会被停止。而将服务运行在各自的进程中的话,单个进程重启只会影响一个服务。当然重启服务器会停止所有服务,所以将各个服务部署在独立的服务器上或双服务器双实例,会大大减少重启给服务可用性带来的影响。

\\

当然每一种隔离层级都伴随着相应的成本。使用一台服务器多个进程相对于每个服务一个节点更容易实现。这其中并没有谁对谁错,有的只是各因素间的权衡。在提升系统的隔离级别的同时,你也会相应增加系统的成本和复杂度。Young同时引用的话:

\\
\

如果你无法在单进程的独立应用上实现构建,那你如何确信在引入网络通信后问题可以得到解决?

\
\\

Young认为,使用不同的隔离策略的一个优势是我们不需要提前做出一些决定,我们也不需要保持生产环境和开发环境使用一样的隔离级别。他表示这也是使用微服务架构的一个主要好处。

\\

将与2017年11月6至7日举办。

\\

查看英文原文:

转载地址:http://gphsa.baihongyu.com/

你可能感兴趣的文章
SOUI Editor使用教程
查看>>
session多服务器共享的方案梳理
查看>>
bower 安装
查看>>
OpenCV 在mac下的安装以及在Xcode中的配置
查看>>
第三次Scrum meeting
查看>>
replace和replaceAll小题目
查看>>
下载python3.6,进行编译安装,运行django程序
查看>>
PCA人脸识别学习笔记---代码篇
查看>>
grep
查看>>
归档备份被删,GoldenGate无法抽取数据
查看>>
Could not create the view: An unexpected exception was thrown.
查看>>
codeforces 445A
查看>>
基础语法
查看>>
多线程和CPU的关系
查看>>
005 -- DuLinkList_add nodes, delete node, Caser print..
查看>>
HashMap、TreeMap、LinkedHashMap、hashtable的区别
查看>>
ajax之百度 应用实例
查看>>
单行文本溢出、多文本溢出
查看>>
yarn的学习-2-从 npm 迁移到 yarn-包管理工具
查看>>
vagrant特性——基于docker开发环境(docker和vagrant的结合)-1-基本使用
查看>>