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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。

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

没有“银弹”

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

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

微服务的优势

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

复杂问题简单化

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

高内聚低耦合

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

独立自治

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

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

持续交付

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

灵活扩展

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

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

微服务的不足

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

服务拆分

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

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

分布式复杂度

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

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

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

测试运维成本

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

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

问题定位排查

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

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

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


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

相关文章
|
2月前
|
数据库 Android开发 开发者
构建高性能微服务架构:从理论到实践构建高效Android应用:探究Kotlin协程的优势
【2月更文挑战第16天】 在当今快速迭代和竞争激烈的软件市场中,微服务架构以其灵活性、可扩展性和独立部署能力而受到企业的青睐。本文将深入探讨如何构建一个高性能的微服务系统,涵盖从理论基础到具体实现的各个方面。我们将重点讨论服务拆分策略、通信机制、数据一致性以及性能优化等关键主题,为读者提供一个清晰、实用的指南,以便在复杂多变的业务环境中构建和维护健壮的微服务体系结构。 【2月更文挑战第16天】 在移动开发领域,性能优化和流畅的用户体验是至关重要的。随着技术的不断进步,Kotlin作为一种现代编程语言,在Android开发中被广泛采用,尤其是其协程特性为异步编程带来了革命性的改进。本文旨在深入
|
4月前
|
Kubernetes Java 数据库
Java性能优化: 什么是微服务架构,与单体架构相比有什么优势?
Java性能优化: 什么是微服务架构,与单体架构相比有什么优势?
58 1
|
5月前
|
前端开发 Java API
深度|低代码开发平台和微服务架构的优势与挑战
低代码开发平台和微服务架构是当前软件开发领域的两个热门话题。它们都是为了更高效、更灵活地构建和开发应用程序而出现的解决方案。本文将以一款基于微服务架构的OneCode引擎为案例来探讨低代码开发平台和微服务架构的优势和挑战。
|
7月前
|
监控 API 数据库
为什么选择微服务架构? 微服务架构的10个核心优势 总结
为什么选择微服务架构? 微服务架构的10个核心优势 总结
828 0
|
8月前
|
弹性计算 Kubernetes 应用服务中间件
微服务和 Serverless 架构-EDAS 基本操作讲解与 EDAS 优势总结
微服务和 Serverless 架构-EDAS 基本操作讲解与 EDAS 优势总结
427 0
微服务和 Serverless 架构-EDAS 基本操作讲解与 EDAS 优势总结
|
弹性计算 运维 微服务
微服务架构的优势
微服务架构的优势
102 0
|
运维 Kubernetes Cloud Native
【音频】微服务的优势和在云原生时代面临的挑战|学习笔记
快速学习【音频】微服务的优势和在云原生时代面临的挑战
82 0
|
开发者 微服务
语音直播源码开发,实现微服务架构的优势分析
语音直播源码开发,实现微服务架构的优势分析
|
存储 缓存 负载均衡
微服务注册中心 Nacos 比 Eureka的优势
微服务注册中心 Nacos 比 Eureka的优势
281 0
|
测试技术 API 数据库
微服务架构的优势与不足
这篇文章作者是Chris Richardson,他是早期基于Java的Amazonite EC2 PaaS平台CloudFoundry.com的创始人。现在他为企业提供如何开发和部署应用的咨询服务。
1522 0