微服务优缺点

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 微服务架构优势显著:易维护、技术栈灵活、升级隔离性强。但存在运维复杂、调用链路长、分布式事务难、学习成本高等挑战,需结合SpringCloud、Docker、Seata等技术协同解决,适合高并发、大体量系统构建。

3.1 优点
①易于开发维护
微服务基于领域模型拆分的应用,其内部模型高度统一,功能相对内聚,开发人员只需要对固定模型进行领域业务接口封装即可。
②技术栈开放
微服务因独立部署、独立开发,因此开发团队可以根据资深团队特点进行技术选型。如团队擅长关系型数据库则MySQL,擅长图形计算则Neo4j。
③升级错误隔离
A技术专项升级因单独部署,不再影响整个分布式架构中全部功能,只影响有接口交互的部分应用,而这种应用也可以通过灰度、服务降级、服务熔断的方式兼容和处理,不会因一个错误导致整个应用瘫痪。
3.2 缺点
①运维成本高
更多的服务意味着更多的运维投入,传统应用中只有一个应用,而为服务中,需要保障几十、上百个服务的正常运行和协作。
②调用链路复杂
微服务架构中,不可避免的会出现A服务依赖B服务,B服务依赖C服务,C继续依赖D服务的场景,一旦A调用异常,排查链路可能会从A->B->C->D,才能最终发现服务报错具体信息(后续skywalking可解决)。
③分布式事务问题
同上例A->B->C->D的长链路调用过程中,如果A先修改自己数据,但下游C却异常,此时预期是A回滚自己事务,这一点在单体应用因都是本地事务可以很好做到,但是分布式场景下却提升了复杂度(后续Seata可解决)。
④学习成本高
微服务学习除了需要一定基础之外:Spring、SpringMvc、MyBatis、SpringBoot、Maven、MySQL等,还需学习SpringCloud,中间件、缓存、Docker、文件服务器等多种技术,每一门学习都有很多难点需要克服。
4.如何实现

相关文章
|
2月前
|
运维 负载均衡 监控
微服务有哪些优缺点?
微服务将应用拆分为小型独立服务,具备技术异构、弹性好、易部署、可独立扩展等优势,适合复杂系统。但其也带来分布式复杂性、运维难、数据一致性挑战等问题,需权衡团队能力与项目需求后采用。
|
8月前
|
开发工具
HarmonyOS NEXT实战:倒计时
本教程介绍如何使用HarmonyOS SDK中的TextTimer组件实现倒计时功能。涵盖组件参数、控制器及格式设置,结合实战代码演示倒计时30秒的实现过程,适用于教育与开发学习场景。
310 0
|
8月前
|
开发工具 开发者
HarmonyOS NEXT实战:弹出底部菜单
本教程介绍如何使用HarmonyOS SDK中的半模态页面(bindSheet)实现底部菜单的弹起与关闭效果。内容涵盖半模态页面的生命周期、交互规则及使用约束,并通过实战示例BottomPopUpDemoPage演示构建底部菜单栏的具体实现方法,适用于教育学习与开发实践。
217 0
|
8月前
|
JSON 算法 安全
harmony-utils之SM3,SM3工具类
harmony-utils是一款HarmonyOS工具库,提供丰富的SM3加密工具类,支持摘要、分段处理及消息认证码计算,助力开发者高效构建安全应用。
339 0
|
监控 Java Shell
链路跟踪-SkyWalking系列(一)
链路跟踪-SkyWalking系列(一)
3165 2
|
JavaScript 前端开发 开发者
javascript事件大全
javascript事件大全
222 1
vscode——如何开启Edge进行调试
vscode——如何开启Edge进行调试
574 4
vscode——如何开启Edge进行调试
|
监控 应用服务中间件 网络安全
购买阿里云服务器后如何将自己的项目部署到服务器并上线?
在阿里云服务器上部署项目涉及准备项目、配置服务器、设置SSH密钥、连接服务器、安装所需软件、部署项目、配置Web服务器(如果需要)、测试项目、监控和维护,最后上线。确保项目完整并测试无误,配置安全组和云盾,使用SSH连接,安装OS、数据库和编程环境。通过Git同步代码,配置Nginx或Apache,测试正常后正式上线。利用阿里云文档和教程辅助操作。
2521 3
|
Kubernetes 容器
ETCD和api-server证书过期时间证书生成
ETCD和api-server证书过期时间证书生成
457 4
|
Java
Java CSV文件写入、特殊字符处理等
1、生成CSV文件时要处理双引号、逗号、回车和中文字符
986 1