最佳体系结构设计的10种微服务最佳实践

本文摘要:微服务从基础上改变了服务器端引擎的构建方式。微服务不是一个单一的巨型单块代码库来托管您的应用法式的所有业务逻辑,而是反映了漫衍式系统模型,在该模型中,一组应用法式组件协同事情以满足业务需求。通过遵循十项基本的微服务最佳实践,您可以实现一个高效的微服务生态系统,而制止不须要的架构庞大性。 微服务架构的利益当正确完成从单片应用法式到微服务体系结构的迁移时,应实现以下利益:· 您应该能够使用自己选择的语言来开发微服务,根据自己的节奏独立公布它,并独立扩展。

LOL比赛押注

微服务从基础上改变了服务器端引擎的构建方式。微服务不是一个单一的巨型单块代码库来托管您的应用法式的所有业务逻辑,而是反映了漫衍式系统模型,在该模型中,一组应用法式组件协同事情以满足业务需求。通过遵循十项基本的微服务最佳实践,您可以实现一个高效的微服务生态系统,而制止不须要的架构庞大性。

微服务架构的利益当正确完成从单片应用法式到微服务体系结构的迁移时,应实现以下利益:· 您应该能够使用自己选择的语言来开发微服务,根据自己的节奏独立公布它,并独立扩展。· 由于组织中的差别团队可以独立拥有某些微服务,因此随着并行开发和重用的增加,上市时间应该更快。· 您可以更好地隔离故障,因为可以包罗一种特定的微服务中的错误,因此不会影响生态系统的其余部门。可是,如果在构建微服务时未遵循正确的原则,则最终可能会遇到这样的纠缠意大利面。

这很难维护,因为需要与多个团队举行大量协调才气举行更改,公布或实现容错。充实使用微服务是一门科学,涉及一些学科。以下微服务最佳实践和设计原则将资助您构建松散耦合,漫衍式和优化的微服务,以实现最佳价值。10种微服务最佳实践1.单一责任原则就像代码一样,在类中只有一个更改的原因,微服务应该以类似的方式建模。

建设肿的服务可能会改变多个业务情况,这是一种欠好的做法。示例:假设您正在构建用于订购披萨的微服务。

您可以思量凭据各自支持的功效(例如InventoryService,OrderService,PaymentsService,UserProfileService,DeliveryNotificationService等)构建以下组件。InventoryService仅具有可获取或更新比萨类型或浇头库存的API,同样,其他API也会带有这些API 为其功效。2.为您的微服务有一个单独的数据存储如果您使用的是所有微服务共享的整体数据库,那么就无法实现微服务的目的。

该数据库的任何更改或停机都将影响使用该数据库的所有微服务。选择适合您的微服务需求的数据库,针对其维护的数据自界说基础结构和存储,并使其专属于您的微服务。

理想情况下,任何其他需要会见该数据的微服务都只能通过具有写会见权的微服务公然的API对其举行会见。3.使用异步通信实现松散耦合为了制止构建精密耦合的组件的网格,请思量在微服务之间使用异步通信。

一个。异步伐用您的依赖项,例如以下示例。示例:假设您有一个挪用服务B的服务A。

服务B返回响应后,服务A将乐成返回给挪用方。如果呼叫者对服务B的输出不感兴趣,则服务A可以异步伐用服务B并立刻乐成响应呼叫者。b。

更好的选择是使用事件在微服务之间举行通信。您的微服务会将事件公布到消息总线,以指示状态更改或失败,而且无论哪个微服务对该事件感兴趣,都市对其举行处置惩罚。示例:在上面的披萨订单系统中,一旦捕捉到客户的订单,或者使用订单完成和交付状态消息时,就会使用异步通信向客户发送通知。

通知服务可以侦听订单已提交的事件,并向客户处置惩罚通知。4.通过使用断路器来实现容错的快速故障如果您的微服务依赖于另一个系统来提供响应,而且该系统需要永远响应,那么您的整体响应SLA将会受到影响。

为了制止这种情况并快速响应,您可以遵循的一种简朴的微服务最佳实践是使用断路器使外部挪用超时并返回默认响应或错误。断路器模式在以下参考文献中举行了说明。

这将隔离您的服务所依赖的失败服务,而不会导致级联失败,从而使您的微服务保持良好的运行状况。您可以选择使用Netflix开发的热门产物,例如Hystrix。这比使用HTTP CONNECT_TIMEOUT和READ_TIMEOUT设置更好,因为它不会启动超出设置规模的其他线程。5.通过API网关署理您的微服务请求取代系统中的每个微服务都执行API身份验证,请求/响应日志记载和限制的功效,让API网关预先为您执行这些操作会增加许多价值。

挪用您的微服务的客户端将毗连到API网关,而不是直接挪用您的服务。这样,您将制止从微服务举行所有这些其他挪用,而且服务的内部URL将被隐藏,从而使您可以灵活地将流量从API网关重定向到服务的较新版本。当第三方会见您的服务时,这甚至更有须要,因为您可以限制传入的流量,并在API网关到达您的微服务之前拒绝来自API网关的未授权请求。

您还可以选择具有单独的API网关,以接受来自外部网络的流量。6.确保您的API更改向后兼容您可以放心地对API举行更改,并在不中断现有挪用者的情况下快速公布它们。一种可能的选择是通知您的呼叫者,让他们通过举行集成测试来为您的更改提供签名。

可是,这很昂贵,因为所有依赖项都需要在一个情况中排队,这会使您的协调事情变慢。更好的选择是为您的API接纳条约测试。API的使用者凭据他们对API的预期响应提供条约。

作为提供者,您将把这些条约测试作为您的构建的一部门举行集成,这些将防止破坏更改。使用者可以针对您作为使用者构建的一部门公布的存根举行测试。

这样,您可以通过独立测试条约更改来更快地投入生产。7.对您的微服务举行版本控制以举行重大更改并非总是可以举行向后兼容的更改。举行重大更改时,请公然端点的新版本,同时继续支持旧版本。

消费者可以在利便时选择使用新版本。可是,API版本过多会给那些维护代码的人带来噩梦。因此,有一种规范的方法可以与您的客户一起使用,或在内部将流量重新路由到较新的版本,从而弃用较旧的版本。8.具有专用的基础架构来托管您的微服务您可以设计最好的微服务来满足所有检查的要求,可是如果托管平台的设计欠好,它的性能仍然很差。

将您的微服务基础架构与其他组件隔离,以实现故障隔离和最佳性能。隔离微服务所依赖的组件的基础结构也很重要。示例:在上面的比萨订单示例中,假设库存微服务使用库存数据库。

拥有专用主机的库存服务不仅重要,而且库存数据库也需要专用主机也很重要。9.建立一个单独的公布系列您的微服务需要拥有自己的单独的公布工具,该公布工具不应与组织中的其他组件绑定。

这样,您就不会相互踩脚,也不会浪费时间与多个团队举行协调。10.建设组织效率只管微服务为您提供了独立开发和公布的自由,可是对于跨领域的关注,需要遵循某些尺度,以便每个团队都不会花费时间为这些解决方案建立奇特的解决方案。

这在诸如微服务之类的漫衍式体系结构中很是重要,在该体系结构中,您需要能够毗连难题的所有部门以检察整体图。因此,企业解决方案对于API宁静性,日志聚合,监视,API文档,秘密治理,设置治理,漫衍式跟踪等都是必须的。***通过遵循这些微服务最佳实践,您应该最终获得一个松耦合,漫衍式和独立的微服务系统,在其中,您可以实现本文开头列出的微服务体系结构的真正利益。

参考文献API网关模式微服务模式:API网关模式让我们假设您正在建设一个使用微服务架构模式的在线商店,而您正在…microservices.ioCircuit Breakerbliki:CircuitBreaker软件系统通常会远程挪用以差别流程运行的软件,可能在差别的系统上……martinfowler.com最初公布于https://www.capitalone.com。披露声明:©2020 Capital One。看法是个体作者的看法。

除非在本帖子中尚有说明,否则Capital One不与任何提及的公司有隶属关系或认可。使用或显示的所有商标和其他知识产权均为其各自所有者的产业。(本文翻译自Sandeep Jandhyala的文章《10 Microservices Best Practices for the Optimal Architecture Design》,参考:https://medium.com/capital-one-tech/10-microservices-best-practices-for-the-optimal-architecture-design-capital-one-de16abf2a232)。


本文关键词:最佳,体系,结构设计,的,10种,微,服务,实践,微,LOL押注官网

本文来源:LOL竞猜平台-www.victor-elec.com

0
首页
电话
短信
联系