微服务架构实践原则

2022-02-02  本文已影响0人  DeepNoMind

好的微服务架构可以帮助团队加快产品发布,为用户提供更好的服务体验。但什么才是好的微服务架构?这篇文章简单介绍了微服务架构的设计原则。原文:Medium Microservice Architecture Practice[1]

许多初创公司的技术栈会从单体Node.js应用开始,然后构建几个卫星通信服务,但并没有系统采用微服务架构。随着系统变得越来越复杂,团队必须构建一个更好的解决方案来最小化对系统的影响。微服务体系架构的目标就是帮助工程师团队更快、更安全、更高质量的交付产品。

在微服务体系架构中,多个松散耦合的服务一起工作,每个服务专注于一个目标,并与相关行为和数据保持高度内聚。其定义包括3条设计原则:

  1. 单一职责——每项服务都应该专注于一个目的并把它做好
  2. 松耦合服务——服务之间没有太多的联系,对一个服务的变更不应该要求更改其他服务,服务之间的通信只能通过公开的服务接口进行。
  3. 高内聚性——每个服务都将所有相关的行为和数据封装在一起,如果需要构建新功能,所有的更改都应该局限于一个服务中。

这些原则是充分利用微服务体系架构潜力的唯一途径,任意两者的缺乏都将使之成为一种反模式。如果没有一个单一的职责,每个微服务最终都会做很多事情,并成长为多个“单体”服务,因此我们没法从微服务架构中获得好处,但却需要支付运营成本。如果没有松耦合,对一个服务的更改会影响到其他服务,因此我们没法快速安全的发布变更,而这正是微服务体系架构的核心优势。更重要的是,由紧耦合引起的问题可能是灾难性的,比如数据不一致甚至数据丢失。如果没有高内聚性,我们将最终得到一个分布式的单体系统,一组混乱的服务,必须在构建单一功能的同时进行更改和部署。由于多服务协调(有时跨多个团队)的复杂性和成本,分布式单体系统通常比集中式单体系统还要差劲。

此外,微服务不是代码行更少或处理小任务的服务,只要满足了这3个原则,服务就可以实现复杂而重要的功能。事实上,由于我们可以直接从单体服务中提取逻辑,因此微服务并不总是采用新技术或者从头开始构建的。


Node.js单体应用在很多方面已经成为瓶颈。首先,最大的瓶颈是性能。某些计算量大、I/O量大的任务不适合Node.js。我们一直在逐步改进这个整体应用程序,但事实证明这种努力收效甚微。其次,另一个紧迫的瓶颈是单体应用程序减缓了产品开发。所有工程师都在一个应用程序中构建功能,所以这些服务通常是紧密耦合的,因为对系统某一部分的更改也会影响到其他部分,因此很难对系统进行灵活的变更。因为影响难以预测,我们也害怕做出重大变更。整个应用程序作为一个整体部署,如果部署由于不正确的提交而停滞,则无法完成其他所有变更。在这种情况下,微服务体系架构适合于交付更好的复杂系统。在我们新的微服务体系架构中,更改可以一小时内发布到生产环境,工程师不必担心会影响系统的其他部分。第三,单体应用程序很难为特定任务扩展系统。单体应用程序只能扩展整个系统,这将导致其他简单任务的过度配置。我们分割了不同类型的请求来分离Node.js进程,但因为这些单体服务的迷你版本仍然是紧耦合的,因此伸缩性仍然受限。最后,最紧迫的瓶颈是它阻止我们尝试新技术。微服务体系架构的主要优点之一是,每个服务都可以使用不同的技术栈构建,并与不同的技术集成。这样,我们就可以为特定的工作找到合适的工具,并安全快速地完成任务。


在采用微服务体系架构时,我们会面临什么问题?

微服务也有可能出问题,并在实际上损害生产环境。有7种策略可以帮助我们:

  1. 用清晰的思路构建新的服务
  2. 单一的持久化存储是有害的
  3. 解耦“构建服务”和“运行服务”
  4. 详细一致的可观测性
  5. 注意失败
  6. 从一开始就避免“微服务综合症”
用清晰的思路构建新的服务
单一的持久化存储是有害的

参考文献

Microservices Best Pratices: https://medium.com/@kmdkhadeer/microservices-best-practices-5fe3e28394b3

References:
[1] Medium Microservice Architecture Practice: https://jinlow.medium.com/medium-microservice-architecture-practice-5a2d61fff9fa

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

上一篇 下一篇

猜你喜欢

热点阅读