本帖最后由 规划经理 于 2016-5-16 18:22 编辑
图解微服务,程序员友谊不翻船
延伸阅读:
(刚网上看到很才的一篇文文,观点不谋而合,忍不住分享给大家~)
据说程序员友谊的小船都是这样翻的:
为了让程序员好基友们友谊地久天长,我们今天就来开一课,扯扯微服务和容器的那点事儿……
微服务是个啥?还是让我们先从它的演变历程讲起吧:
在过去的10多年中,绝大多数应用采用的都是“单块架构”。这种架构系统通常是以技术分层,例如“分层架构”中的表现层、业务逻辑层、数据层,而在物理部署层面则可看作是一个“单块”,整个应用都包含在一个进程当中,作为一个整体去编译、打包、部署和运维,因其便于开发、测试和部署的特性被业界广泛采用… 直到这两年,随着互联网时代对架构敏捷性和适用性的需求大幅提升,人们发现单块架构已经不足以支撑那些新兴的应用和业务,尤其在云端部署时更是如此。 应用越来越复杂,每一次小的变动都要对整个架构进行重新构建和部署,这样一来,随着时间的推移,系统难以保持完好的模块化结构,于是给开发人员带来了各种各样头疼的问题… 眼看着以后的坑越来越多,有人就开始暗地里另寻新欢了,希望能找到一套具有可扩展性的自动化系统,在简单的商业化架构上运行速度更快、更有弹性且用户体验更好的应用。这帮架构师们研究了各种架构以后,最终把目标锁定在了微服务上… 话说这微服务架构啊,就是把应用分成各种细小的服务,每个服务专注于单一的业务功能,在独立的进程中各司其职。各个服务之间边界清晰,采用轻量级通信机制(如HTTP/REST)相互沟通、配合来实现完整的应用,就像下面这样:
当然优势也是非常明显,瞧瞧下面这些特点,在互联网时代简直就是开发人员的福音…
看起来很赞对吧 ~可是下面问题来了,这种新型的架构到底要怎么运行呢? 微服务之所以称为“微”,就在于它的执行环境的粒度必须足够小,否则是对资源的巨大浪费。 虽然微服务也可以跑在虚拟机上,但是虚拟机粒度太大了,即使最小的虚拟机,也至少有1个核。况且,虚拟机还缺少了一套方便的管理机制,难以快速的让这些服务组合和重构。 于是寻寻觅觅中,人们终于发现了微服务天生的好基友——Docker!小、快、灵的特性简直就是为微服务量身定做,轻松搭建完美的运行环境… 当我们把这对好基友凑在一块,微服务所具备的优势就会被进一步放大。微服务鼓励开发者将整个软件解耦为较小的功能片段,并且这些功能片段能够应对外界的故障,而Docker独立的执行环境和足够小的计算粒度恰恰匹配了这样的需求。 Docker将软件从底层的硬件中进行解耦,秒级创建/销毁的特性搭配上众多的容器编排管理工具让你的系统发挥出最强的敏捷性和适应性,灵活应对各种应用场景需求……
总而言之,面对各种各样的互联网业务和应用,微服务走了一条拆解之路,但要想完整的实现特定的业务,还要根据需求自由融合、彼此协作,而 Docker无疑是这条路上的最佳搭档。 无论是协同不同的语言技术栈,降低运维的成本,还是支持分布式系统的自动化测试和持续交付,甚至是从单体架构向微服务的逐步演化,容器技术都可以为微服务提供最有力的帮助!
|