【从零开始学微服务】05.微服务的优势和不足

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。

大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家

没有“银弹”

在一些电影中,“银弹”被视作能迅速杀死狼人的武器,是杀死狼人的灵丹妙药。“银弹”常被比喻为解决复杂问题的良方或高招。

由于软件的复杂性本质,而使真正的“银弹”并不存在。同样的,架构设计是一门权衡、取舍的艺术,没有十全十美的架构,微服务架构为我们带来了如:可扩展性、灵活性等诸多优点。我们收获这些好处的同时,也一定会带来一些新的问题与不足。当我们完全了解了微服务的优势和不足,就可以在应用它的时候扬长避短。

微服务的优势

微服务架构有很多重要的优势,我们来主要看以下几个:

复杂问题简单化

首先就是,复杂问题简单化。微服务架构能有效解决系统复杂性的问题,将大型单体应用拆解为一组服务,虽然功能总量不变,但应用已被分解为可实现、可管理的模块或服务。

高内聚低耦合

微服务架构中,每个服务都可以由专注于此服务的团队独立开发。服务间定义了明确的API边界,责任划分清晰,同时内部设计和实现细节都被隔离开,相互之间没有强依赖。

独立自治

各服务可以各自独立的发展自己的系统,选择合适的技术栈和研发模式,包括开发语言、工具以及中间件等技术,这也有助于试验和引入更先进和创新的技术。

从一些边缘服务开始尝试,技术、工具、中间件、研发模式,孵化成熟以后,再逐步大范围推广,实现技术和研发能力的持续更新换代,让研发组织保持长期的优势和活力,充分获得技术发展的红利。

持续交付

服务实例独立部署,也便于利用自动化测试和自动化部署来加速功能的迭代,配合 CI/CD 等基础设施,实现业务功能的持续交付,保障研发能够紧跟业务发展变化的节奏。

灵活扩展

每个服务都可独立扩展。既可以按照服务的实际负载进行局部的扩展伸缩,比如扩容某个服务的实例数;或者按照服务要求的配置、容量等条件进行调整资源使用,比如我们可以在计算优化实例上部署CPU密集型服务,在内存优化实例上部署内存数据型服务。

一句话概括来说,微服务架构支持快速、频繁和可靠地交付大型、复杂的应用程序。它还使组织能够不断演化发展其技术堆栈。

微服务的不足

微服务架构同样也会面临一些问题和不足,我们来主要看以下几个:

服务拆分

微服务强调了服务大小,但实际上这并没有一个统一的标准。业务逻辑应该按照什么规则划分为微服务,这本身就是一个经验工程。

虽然建立小型服务是微服务架构崇尚的,但要记住,微服务是达到目的的手段,而不是目标。微服务的目标是充分分解应用程序,以促应用的持续迭代和演进。

分布式复杂度

开发人员需要基于RPC或者消息实现调用和通信,任何一次远程调用都有可能失败,如何保障服务之间的可靠交互。

数据一致性,非中心化的架构下,由于CAP原理的约束,强一致性的要求可能需要转向最终一致性方面考虑。

分布式场景下的资源竞争、主从选举、状态同步也是非常棘手的问题。

测试运维成本

对微服务进行集成测试,需要有相关服务的配合,部署对应的服务,很有可能是多个,甚至有可能存在级联的关系。

微服务架构体系中服务治理的能力往往需要一系列基础服务(比如注册中心、配置中心、APM系统等等)提供支持,这无疑也是增加了运维的成本。

问题定位排查

微服务之间的拓扑关系十分复杂,一个请求可能跨越好几个服务、中间件,出现业务bug或是线上问题时,排查或定位会很困难,需要有完善的机制和方案。

对于上面的问题,任何一个微服务开发人员都不能绕过去的,因此大部分的微服务产品都针对每一个问题提供了相应的组件来解决它们。

最后,感谢你这么帅,还给我点赞


《从零开始学微服务》总目录

相关文章
|
1月前
|
JavaScript Java Go
探索Go语言在微服务架构中的优势
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出。本文将深入探讨Go语言在构建微服务时的性能优势,包括其在内存管理、网络编程、并发模型以及工具链支持方面的特点。通过对比其他流行语言,我们将揭示Go语言如何成为微服务架构中的一股清流。
128 53
|
23天前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
56 1
|
4月前
|
运维 监控 API
后端开发中的微服务架构:优势与挑战
【8月更文挑战第16天】在软件开发的世界中,微服务架构已经成为一种流行和强大的设计模式。它通过将应用程序分解为一组小型、独立的服务来促进敏捷开发和快速迭代。本文旨在深入探讨微服务架构的核心优势以及实施过程中可能遇到的挑战,帮助读者更好地理解这一现代软件设计方法。
|
1月前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
23天前
|
监控 持续交付 API
深入理解云计算中的微服务架构:原理、优势与实践
深入理解云计算中的微服务架构:原理、优势与实践
37 0
|
1月前
|
负载均衡 Cloud Native 持续交付
云原生时代的微服务架构:优势、挑战与实践
云原生时代的微服务架构:优势、挑战与实践
33 0
|
1月前
|
API 持续交付 网络架构
深入解析微服务架构:原理、优势与实践
深入解析微服务架构:原理、优势与实践
28 0
|
2月前
|
运维 Go 开发者
Go语言在微服务架构中的应用与优势
本文深入探讨了Go语言在构建微服务架构中的独特优势和实际应用。通过分析Go语言的核心特性,如简洁的语法、高效的并发处理能力以及强大的标准库支持,我们揭示了为何Go成为开发高性能微服务的首选语言。文章还详细介绍了Go语言在微服务架构中的几个关键应用场景,包括服务间通信、容器化部署和自动化运维等,旨在为读者提供实用的技术指导和启发。
|
2月前
|
负载均衡 Go API
探索Go语言在微服务架构中的应用与优势
在这篇技术性文章中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构时的独特优势。文章将通过对比分析Go语言与其他主流编程语言,展示Go在并发处理、性能优化、以及开发效率上的优势。同时,我们将通过一个实际的微服务案例,详细说明如何利用Go语言构建高效、可扩展的微服务系统。
|
2月前
|
安全 Go 云计算
探索Go语言在微服务架构中的应用与优势
在本文中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构中的独特优势。文章将分析Go语言的并发模型、简洁的语法以及高效的编译速度,以及这些特性如何使其成为微服务架构的理想选择。我们将通过一个简单的微服务示例,展示Go语言在实际开发中的表现,并讨论其在性能和可维护性方面的优势。
下一篇
DataWorks