生产环境中保持微服务井然有序的五大措施

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

监控是一种明智的做法。系统会逐渐变得高度碎片化,为了对系统的运行状况获得更全面的了解,人们对集中式监控和日志会产生越来越高的需求。

Alex谈到了在最新一期播客节目中所涉及的一个场景,这个场景中需要对有问题的版本进行回滚,这就要确定相应的微服务,并确定进行回滚可能会对其他服务产生的影响。他认为:

结论1:如果你认为对单层(Monolith)体系结构进行监控已经很困难,微服务的监控要比这个难十倍,需要事先做好极为充分的规划和更大的投入。

对于第二个问题,Alex谈到了我们已经从Sam Newman和Adrian Cockcroft等人处多次听到的一种观点:

单层体系结构的日志文件很可能已经分散在不同位置,就算心里想着“单层”,但最终依然可能会使用多个不同技术层,并可能将日志保存在不同地方。微服务则会让日志进一步分散。现在如果需要调查有关某些用户事务的场景,为了理解实际发生的一切,你可能需要从不同位置获取所有服务的全部日志。

这就产生了他的下一个结论:

结论2:微服务的目标就是将所有东西拆分为零散组件。但这种做法的副作用之一是运维规程和监控工作也需要分别应用给每个服务,进而导致无法发挥“整体系统”的强大之处。通过恰当的工具以统一方式管理这一切已成为此时最大的挑战。

第三个问题引述自Leslie Lamport对于分布式系统的定义中的一句话:“分布式系统是指某台我从未听说过的计算机也能导致我的程序崩溃的体系。”或者按照Alex的说法:“一个服务引发的问题,会造成其他地方出现连锁反应。”那么这个结论也就不言自明了:

结论3:对于单层体系,遇到问题后通常你会知道需要调查哪些方面,微服务使得人们难以确定问题根源以及要从哪里拿到所需数据。

在分布式系统中,“确定问题根源”这一需求进一步产生了下个问题,此时日志可以提供一定的帮助,但日志只是解决方案的一部分:

大部分情况下,你寄希望于日志文件中获得的前几位变量数据,但这些可能根本无法解决你的问题。这些信息只能让你继续追查下一条线索,进而需要进一步深入这样的“魔法世界”,继续运行更多日志语句。随后部署改动,期待着问题能够重现或永不再现,因为… 有时候仅仅添加一条日志语句似乎就能解决问题。这类似于墨菲法则的一次糟糕的大逆转。

这也产生了我们的下一个结论:

结论4:如果微服务中一个问题的根源涉及到多个服务,就很有必要使用一个集中的根源检测工具。

Alex提到的最后一个问题是版本管理和服务之间的循环依赖。同时他也提到了在检查依赖性时需要注意的两个问题。

1,如果服务之间存在循环依赖,一旦某个事务卡在循环中,就很容易产生分布式堆栈溢出错误。2,如果两个服务共享同一个依赖项,并且使用会影响到这些服务的方式更新了其他服务的API,那么就需要同时对这三个服务进行更新。这就造成了另一种问题,例如:要先更新哪个服务?如何确保所有服务能顺利地完成更新?

相互独立的服务越多意味着可移植性越高,不同服务可以使用互不干涉的发布周期,但同时这样做也会增加整个系统的复杂度,尤其是在可再生性(Reproducibility)方面。那么这就引出了我们的第五个,也是最后一个结论:

结论5:在微服务体系结构中,更容易产生依赖性问题所导致的错误。

很高兴看到在生产环境中运用微服务的人就此展开的讨论,更让人高兴的是,很多人已经就其中的一些核心问题和解决这些问题的常见方法达成了一致。
本文转自d1net(转载)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
21天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
79 6
|
21天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
32 1
|
3月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
3月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
4月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
4月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
125 0
|
20天前
|
消息中间件 供应链 架构师
微服务如何实现低耦合高内聚?架构师都在用的技巧!
本文介绍了微服务的拆分方法,重点讲解了“高内聚”和“低耦合”两个核心设计原则。高内聚强调每个微服务应专注于单一职责,减少代码修改范围,提高系统稳定性。低耦合则通过接口和消息队列实现服务间的解耦,确保各服务独立运作,提升系统的灵活性和可维护性。通过领域建模和事件通知机制,可以有效实现微服务的高效拆分和管理。
44 7
|
2月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
58 8
|
2月前
|
消息中间件 负载均衡 Cloud Native
云原生之旅:从容器到微服务的架构演变
在数字化转型的风潮中,云原生技术以其灵活性、可扩展性和弹性而备受青睐。本文将通过一个虚拟的故事,讲述一个企业如何逐步拥抱云原生,实现从传统架构向容器化和微服务架构的转变,以及这一过程中遇到的挑战和解决方案。我们将以浅显易懂的方式,探讨云原生的核心概念,并通过实际代码示例,展示如何在云平台上部署和管理微服务。
|
3月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
216 3