首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何理解微服务架构

本文翻译自 How To Understand Microservices Architecture,原作者:OLEKSII

单体式架构的问题随着应用程序的增长而出现。为了克服这些挑战,可以使用微服务架构。然而,这并非灵丹妙药。这种架构有其自身的优点和缺点。

微服务架构概览

一个应用程序被分成多个小型服务(用户服务、航班服务、计费服务等),负责特定的有限范围。每个服务都在自己的数据库上运行,并具有各自的特性。用户界面通常向网关发出请求。网关负责将请求路由到特定服务。

网关还可以包含交叉问题,如身份验证。每个服务都可以单独支持、管理和部署。但是,它们应该以某种方式相互通信。不同的通信方法不在本文讨论范围之内,我们将单独讨论。

微服务架构的优势

高内聚、低耦合

除通信点外,每个服务都是独立的。因此,每个组件可以由不同的团队开发。错误和功能可以在单个服务中修复和部署。服务规模小,部署时间短。

服务范围有限

这些服务通常规模较小。因此通常更容易理解。在单个服务范围内,调试过程和测试都很简单。

灵活性

服务可以在自己的数据库上运行,并具有所需的特性。它可以是 RDBMS,也可以是 NoSQL,还可以两者都是或都不是。此外,服务可以用不同的编程语言编写。

可扩展性

各组件可独立扩展和优化。性能特征没有限制。例如,一个应用程序可以有两个用户服务实例和十个飞行服务实例。针对特定服务,RDBMS 数据库可以替换为单一用途的 NoSQL 数据库。正因为如此,微服务对于大型应用程序来说也很划算。

尖端技术,微服务规模小

因此,可以通过实验来验证某些想法或解决方案。它们可以快速重写。此外,迁移到新的平台版本也非常简单。例如,从 Java 8 迁移到 Java 11。● 开发速度快。很多框架都经过优化,可用作微服务(如 Spring Boot)。另一个优势与 CI/CD 管道有关。服务规模小,因此管道速度快。

微服务架构的劣势

调试

在单个组件范围内工作时,一切都很简单。然而,整个架构却是复杂的。一个请求可以在多个服务上运行。很难跟踪它并理解系统。数据流通常很难理解,尤其是对于新团队成员来说。

测试

由于组件是分布式的,因此测试具有挑战性。

部署

服务可以单独部署。不过,它们通常会以某种方式进行通信。服务之间的交互合约必须严格定义。一个服务的更改不应破坏其他服务。

沟通

每个组件可以由不同的团队开发。因此,必须对变更进行通信。这会带来通信开销。

基础设施开销

一方面,数据位于不同的地方。另一方面,从业务角度看,一个服务中的数据应该用于另一个服务。应该以某种方式处理服务之间的交互。这通常要么是数据复制,要么是服务间的额外调用。

贯穿各领域的问题

应在每个服务中实施安全、日志、监控、配置等功能。

总结

总而言之,微服务架构为小型项目带来了额外的复杂性和更高的成本。不过,对于大型应用程序来说,微服务可以节约成本,影响系统的高性能,并加快开发速度。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OvQyVFHK74CdeeyT66rWZ3fg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券