微服务的崛起
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/418db3bf14d0143b5050fafd4e4791a2.jpeg)
Netflix是最大的、也是最有趣的成功案例之一,它从单体架构过渡到基于微服务架构的应用。这家媒体服务提供商永远不会忘记2008年的一天,一个分号的丢失导致了重大的数据库损坏,导致整个平台瘫痪了几个小时。Netflix意识到他们必须改变架构方法,从而考虑从单体架构转向微服务架构。
尽管Netflix从2009年开始转向微服务架构,并在2011年成功地运行了基于云的微服务架构,但微服务这个术语在2012年之前并没有出现。直到2014年Martin Flower和该行业的其他领军人物开始讨论这个问题时,它才开始流行起来。
Netflix的首席云工程师Adrian Cockcroft是一位有远见的人,他在架构格局的变化中扮演了重要角色,他将微服务解释为“具有有限上下文的松散耦合的面向服务的架构”。
由于他大胆的决定转向微服务,Netfix在可扩展性上取得了巨大飞跃。2016年初,Netfix宣布将服务扩展到130多个新的国家。
能够创建支持服务且独立运行的组件,这样,每个组件自身都是独立的,但是它们都通过API耦合在一起,作为应用程序以统一的方式工作。
独立测试和运行的组件,你可以很轻松的对一个组件运行测试与更改,而不必更改任何其他组件。
互连组件的同步工作,组件使用简单的通信通道和协议作为个体单元共存并协同工作。
一个非集中化的应用程序,每个组件都是独立的,可以单独开发和部署。因此,消除了由于一个小缺陷而导致整个应用程序崩溃的风险。
分散的数据管理 ,每个组件都有自己独立的数据库,因此,可有效地防止数据泄露导致接管整个应用程序,并将其限制在一个组件中,这增强了应用程序的安全性。
灵活和可伸缩的应用程序,应用程序的部分升级或扩展,无需对已经存在的组件进行任何更改。
尽管微服务架构有很多优点,但它也有自己的局限性。微服务面临的最大挑战之一仍然是如何大规模的提供这些服务。这种分段应用的持续集成和交付变得非常复杂,因为需要大量的协调才能同步地集成和部署一组微服务。只有非常高效的DevOps团队才能实现这一壮举。关键是在微服务和它们赖以运行的基础设施之间拥有无缝的通信通道。为了充分挖掘微服务的价值,必须将它们作为可自我维持和可移植的交付单元,这些单元由容器支持。
容器所做的与物理容器完全相同,但是更加数字化。简而言之,容器允许你将微服务放入专用的盒子中,其思想是将类服务及其所需的基础设施打包到其中。容器在虚拟化操作系统中提供了一个独立的工作负载环境。通过在单独的容器中运行微服务,可以独立地部署它们。由于容器在隔离的环境中操作,因此可以使用它们部署微服务,而不考虑用于创建每个微服务的代码语言。因此,容器消除了语言、库或者框架之间的任何摩擦或冲突的风险,从而使它们兼容。
由于容器非常轻量且可移植,因此可以使用它们快速部署微服务。通常,应用程序由小型自包含的微服务组成,每个微服务充当一个单一功能的应用程序,通过不依赖于特定语言的API一起工作。因此,容器在这种情况下提供了所需的隔离性,从而支持组件协同。
作为微服务使用容器好处的支持,Docker报告表明,使用Docker容器的软件发布频率增加了46%。
这些容器可以通过容器编排平台进行编排,如Kubernetes、Docker Swarm、Helios等。这些平台可以根据需要创建多个容器,并使它们易于应用的顺利部署。编排还控制如何连接容器,以便从多个微服务构建复杂的应用程序。
原文链接:https://hackernoon.com/https-medium-com-spruha-pandya-of-microservices-containers-6f0ea25dac3
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/90a28b334b7daae144040bed1b8000a6.jpeg)