登录/注册 账户

Microservices

microservices是什么?

Microservices是一个构建应用程序的体系结构方法。作为一个架构框架,微服务分布和松散耦合的,所以一个团队的变化不会破坏整个应用程序。使用微服务的好处是,开发团队能够快速构建应用程序的新组件,以满足不断变化的业务需求。

一种构建应用程序的方式,优化了DevOps和CI/CD

微服务体系结构与传统的单一方法的区别在于它如何将应用程序分解为其核心功能。每个功能都被称为服务,可以独立构建和部署,这意味着单个服务可以正常工作(或失败),而不会对其他服务产生负面影响。这有助于你拥抱DevOps和make的技术面不断的迭代和交付(CI/CD)更无缝和可实现的。

单片体系结构与微服务体系结构

回想一下你上次光顾的在线零售商。您可能使用站点的搜索栏浏览产品。必威体育吧该搜索代表一种服务。也许您还看到了相关产品的推荐——来自购物者偏好数据库的推荐。必威体育吧这也是一种服务。您是否将商品添加到在线购物车?你猜对了,这是另一项服务。

因此,微服务是应用程序的核心功能,它独立于其他服务运行,但微服务体系结构不仅仅是应用程序核心功能的松耦合—它是关于重组开发团队以及服务间通信,为不可避免的故障、未来的可伸缩性和新功能集成

这是如何实现的?通过调整面向服务的体系结构(SOA)的基础来部署微服务。


这听起来很熟悉?

如果将应用程序分解为其核心功能并避免单一功能的缺陷听起来很熟悉,那是因为微服务体系结构风格类似于面向服务的体系结构(SOA),后者是一种已经建立起来的软件设计风格。

在应用程序开发的初期,对现有应用甚至极小的变化需要有自己的质量保证(QA)周期批发版本更新,有可能减慢许多子团队。这种方法通常被称为“单片”,因为对整个应用程序的源代码被构建在一个部署单元(像的.war或的.ear)。如果更新的应用程序导致的错误的一部分,整个事情必须脱机,缩手,并固定。虽然这种方法仍然是可行的小型应用,越来越多的企业无法承受的停机时间。

进入面向服务的体系结构,它将应用程序结构为离散的、可重用的服务,这些服务通过企业服务总线(enterprise service bus, ESB)进行通信。在此体系结构中,每个服务都围绕特定的业务流程组织,遵循通信协议(如肥皂,ActiveMQ,或Apache节俭)来通过ESB共享它们自己。综合起来,这套服务,集成通过ESB,包含一个应用程序。

一方面,这允许同时构建、测试和调整服务——不再有单一的开发周期。然而,另一方面,ESB代表了整个系统的单点故障,因此在某种程度上,消除单一系统的努力只创建了一个新的系统:ESB,这可能会成为整个组织的瓶颈。


从SOA到微服务

有什么区别呢?微服务可以彼此通信(通常是无状态的),因此以这种方式构建的应用程序可以有更强的容错能力,更少地依赖于单个ESB。这也允许开发团队选择他们自己的工具,因为微服务可以通过语言无关的方式进行通信应用程序编程接口(蜜蜂)。

由于SOA的历史上,微服务实际上并不是所有新的想法。然而,微服务已经变得更加可行得益于集装箱技术的进步。同Linux容器,你现在可以在同一硬件上独立运行的应用程序的多个部分,超过其个人作品和生命周期更大的控制权。随着API和DevOps的团队,集装箱微服务是云计算的本地应用程序的基础。

微服务体系结构的好处是什么?

微服务通过分布式开发促进了您的团队和例程。您还可以并发地开发多个微服务。这意味着更多的开发人员在同一时间开发同一款应用,从而减少了开发时间。

更快进入市场

由于开发周期缩短,microservices体系结构支持更敏捷的部署和更新。

高度可扩展的

随着对某些服务的需求增长,您可以跨多个服务器和基础设施进行部署,以满足您的需求。

有弹性的

这些独立的服务,如果构造正确,不会相互影响。这意味着,如果一个部分失败了,整个应用程序不会崩溃,不像单一应用程序模型。

易于部署

因为您的基于微服务的应用程序比传统的单片应用程序更模块化、更小,这些部署带来的担忧就被消除了。这需要更多的协调服务网格层可以帮忙,但回报是巨大的。

可访问的

因为较大的应用程序被分解成更小的碎片,开发人员可以更容易地理解,更新和增强这些部分,从而导致更快的开发周期,特别是当与敏捷开发方法相结合。

更开放的

由于使用了多语言api,开发人员可以自由地为必要的功能选择最好的语言和技术。


和挑战?

如果您的组织正在考虑转向微服务体系结构,那么希望改变人们的工作方式,而不仅仅是应用程序。组织和文化的变化是确认为挑战部分原因是,每个团队将有自己的部署节奏,并将对自己的一组客户负责独特的服务。这些可能不是典型的开发人员关注的问题,但它们对于microservices体系结构的成功至关重要。

除了文化和流程之外,复杂性和效率是基于微服务的体系结构面临的两个主要挑战。John Frizelle,红帽移动平台的架构师,在他的博客中列出了这八个挑战类别2017年在谈话红帽峰会:

  1. 建筑:您必须花时间确定服务之间的依赖关系。请注意,由于这些依赖关系,完成一个构建可能会触发多个其他构建。您还需要考虑微服务的影响在你的数据上
  2. 测试:积分测试以及端到端测试会变得比以往更加困难和重要。要知道,体系结构某个部分的失败可能会导致几跳之外的某些部分失败,这取决于您如何对服务进行体系结构设计以相互支持。
  3. 版本控制:当您更新到新版本时,请记住您可能会破坏向后兼容性。您可以构建条件逻辑来处理这个问题,但这样做会变得笨拙而麻烦,而且速度很快。或者,您可以为不同的客户机支持多个活动版本,但是在维护和管理方面可能更加复杂。
  4. 部署:是的,这也是一个挑战,至少在最初的设置中是这样。为了使部署更容易,您必须首先在许多方面进行投资自动化由于微服务的复杂性对人工部署来说变得难以承受。考虑一下您将如何推出服务,以及以何种顺序推出服务。
  5. 日志:对于分布式系统,您需要集中日志来将所有内容集中在一起。否则,规模是无法管理的。
  6. 监控:对系统有一个集中的视图来确定问题的来源是非常重要的。
  7. 调试:通过本地进行远程调试集成开发环境(IDE)不是一个选项,它也不能在数十或数百个服务中工作。不幸的是,此时对于如何调试没有唯一的答案。
  8. 连通性:考虑服务发现,不管是集中的还是集成的。

VM迁移节省计算器

您的容器策略是否受到基础设施的限制?

一些虚拟化基础设施的结合,你越来越多地企业许可协议限制软件的选择。迁移到开源虚拟化可以打开容器的路径。betway手机地址

必威体育吧

对于微服务架构的基础

红帽子OpenShift标志

在以开发人员为中心的、基于云的容器平台上运行微服务,该平台主要关注通过Kubernetes与企业编排的持续集成。

红帽保险丝标志

将基于微服务的应用程序、数据、服务和设备与健壮、灵活和易于使用的平台集成在一起。