免费注册,打造高效身份管理
博客/开发者/技术小百科:“微服务”概念详解
技术小百科:“微服务”概念详解
Authing 官方2023.01.04阅读 542

“微服务”是什么(Microservices)?我们在技术小百科:云原生是什么?这篇文章中为大家详细介绍过云原生的概念,微服务是云原生的特点之一。

微服务是一种软件架构风格,它将单个大型应用程序划分为许多小型服务,这些服务相互协作以提供整个应用程序的功能。在云原生中,微服务通常是使用容器技术(例如 Docker)在云计算环境中运行的。

微服务倡导运用化整为零,将应用拆分成多个核心功能,每个功能都被称为一项服务,从而实现各个功能的独立开发与部署,各项服务在工作或出现故障时不会相互影响,提升了应用架构的灵活性以及对业务的响应速度。 组织架构决定产品形态,微服务是按照康威定律的理论来切分服务的。根据功能进行切分之后,服务解耦,内聚更强,变更更易。

一般来说,软件设计有两个关键目标:高内聚、低耦合

软件含义上的内聚其实是从化学中的分子的内聚演变过来的,化学中的分子间的作用力,作用力强则表现为内聚程度高。在软件中内聚程度的高低,标识着软件设计的好坏。 低耦合是用来度量模块与模块之间的依赖关系。简单理解,可以想象一下CPU与主板之间的关系,CPU如果是特殊的CPU必须使用特殊的主板来支持,那么如果说这个CPU不唯一依赖唯一主板,那么就认为这个CPU与主板的关系是低耦合的关系。

围绕软件这 2 个核心目标,又提出了单一职责、开闭原则、里氏替换、依赖导致、接口隔离、最少知识等设计原则,这也即是微服务的原则。在提倡敏捷的今天,微服务已经成为应用架构的一种默认的选择。

微服务具有许多优点,其中包括

  • 可维护性:由于微服务是小型的,因此可以更轻松地维护和测试。
  • 可扩展性:微服务可以独立扩展,这意味着您可以根据需要增加更多实例以扩展应用程序的容量。
  • 可重用性:微服务可以独立使用,因此可以在多个应用程序中重用。
  • 可替代性:微服务可以独立替换,这意味着您可以更轻松地替换或升级某些部分,而不会影响整个应用程序的功能。
  • 容错能力:微服务的架构允许您在某些服务失败时仍然保持应用程序的可用性,因为其他服务仍然可以运行。

一个项目开始搭建时总会有预料不到的后续问题,随着用户和业务的增长,性能就会出现瓶颈,或者项目的架构难以满足业务需要,这时候除了常规的代码优化外,就需要拆分服务了

举一个具体的例子,一个项目刚刚创建,谁也不知道它未来要服务多少客户,5 个人的团队就能完成全部的开发任务,每个开发人员都对项目的代码心中有数,但随着业务的增长,复杂度的提升,团队从 5 个人变成了 50 个人,代码也从几千行到了几十万行,这时候单一的开发人员就很难对所有的代码都做到“心中有数”了,而当代码数量再度增加,业务也更上一个层级的时候,单纯的某一个子业务的代码就已经复杂到需要一个团队来开发维护了,此时老的架构已经不能支持业务的需求,对代码的维护也成了一个难题。

更好的做法是,在某个合适的时间点把代码按照核心功能拆分成一个个微服务,每个服务只关注自己的实现,每个服务都可以单独开发和部署,每个服务都可以交给一个团队,服务之间通过预先定义好的接口进行通讯。这样,每个团队只需关心自己负责部分的代码和功能,而个别服务出现故障也不会影响其他服务,而且采用这种架构我们可以快速进行迭代开发,提高交付效率。

Authing 就采用了微服务架构,这样可以带来最大的灵活性、可靠性和开发效率。 

 

点击右侧文字链接了解更多【行业实践】与【解决方案

文章作者

avatar

Authing 官方

0

文章总数

authing blog rqcode
关注 Authing 公众号
随时随地发现更多内容
authing blog rqcode
添加 Authing 小助手
加入 Authing 开发者大家庭