网站首页 > 博客文章 正文
围绕“微服务架构”的讨论到底是什么?本文分解了好处和常见挑战,并提供了一些见解。
最近,我一直在探索所有关于“微服务架构”的讨论到底是什么。从它出现在所有其他社交媒体辩论中,到它日益成为职位列表的必备技能,是什么导致了传统单体方法的支持者和那些接受微服务范式的人之间的强烈分歧?在本文中,我将为您分解它,概述其好处和一些常见挑战,并为考虑这种方法的人提供微服务专家的一些见解。
简而言之,单体与微服务
如果您还不熟悉单体架构与微服务架构,则可以将您的软件应用程序想象成由乐高积木制成的结构。在单体架构中,您拥有一块大型乐高积木,涵盖整个应用程序及其所有功能。另一方面,微服务架构可以与拥有一组更小的、专门的乐高积木相媲美,每个积木都作为具有特定任务的独立组件。
从技术上讲,微服务架构是一种构建软件的方法,它涉及将应用程序分解为小型的独立服务。每个服务都专注于一个特定和显式的任务,并通过定义良好的接口与其他服专家将其总结为:
- 小即是美
- 让每个程序做好一件事
- 尽快构建原型
- 轻松共享或传输数据
- 利用软件优势
- 让每个程序都成为过滤器*
简而言之,微服务架构封装了 Unix 的理念,即“只做一件事,就把它做好”,其中一些关键特征是:
- 服务规模小、分散且可独立部署
- 服务彼此独立,并通过定义良好的接口进行交互,从而允许使用不同的语言进行开发
- 服务围绕业务功能进行组织
微服务架构的优势
可扩展性 由于微服务在代码库和功能方面存在明确的界限,因此在调整系统以满足不断变化的需求时,可以通过添加或删除微服务(乐高积木)来扩展或缩减,而不会影响应用程序的其余部分。这与单体应用程序形成鲜明对比,在单体应用程序中,修改或删除功能可能很麻烦。此外,微服务架构的可扩展性适合云部署,例如,它允许云资源以与应用程序相同的速度进行扩展。
可维护性和弹性 在开发和可维护性、新功能、错误修复和改进方面,团队可以专注于为单个微服务执行此操作,而不会影响应用程序的其余部分。由于微服务彼此独立,因此应用程序恢复能力也更强,因为一个微服务的故障不会导致系统完全关闭。
开发人员可扩展性和团队生产力 在组织层面上,通常很难以与项目本身相同的速度来扩展项目开发人员的数量;按功能构建的微服务可以帮助应对这一挑战。例如,即使只有一个开发人员,从技术角度来看,从技术角度对每个部分进行逻辑安排,使用按功能分隔的微服务也是有益的,原因我们刚刚探讨了。
对于较大的开发团队,不同 IT 部门之间通常缺乏对彼此项目的认识,这可能导致复杂性和混乱,以及重叠或未分配的任务。同样,通过拥有基于功能进行细分并提供更清晰边界的微服务体系结构,这允许微服务的结构在很大程度上反映您的组织结构图。团队可以在很大程度上独立地按照自己的节奏完成任务,并且通过减少对广泛协调的需求,这转化为提高生产力和提高输出质量。
微服务架构的挑战
尽管有明显的优势,但我认为还有各种挑战需要强调。值得注意的是,如果提前考虑和计划,它们都是可以避免的。团队最终坚持使用传统单体方法的一个常见原因包括微服务带来了更高的复杂性。这种复杂性表现为团队需要了解如何设计、构建和管理分布式系统。更具体地说,不知道如何为微服务实现可靠的通信协议以便能够进行通信是一个反复出现的痛点,它会导致系统性能下降,进而让团队切换回其整体系统。交互次数增加带来的另一个挑战是系统测试和调试。
除了这些困难之外,在考虑微服务时,另一个主要问题包括安全性。在每项服务中实施可靠的身份验证、授权和加密至关重要。
尽管这些都是合理的担忧,并且是非常真实的日常挑战,但使用微服务并不必如此混乱,而且在预先考虑时,这些都是可以避免的。
微服务提示和技巧
如果您正在考虑进行单体到微服务的切换,微服务专家的首要建议是确保微服务是可独立部署的。更具体地说,微服务在功能方面保持简单是关键。它应该“做一件事,把它做好”,不应该依赖其他服务来完成它的任务。
下面我们可以看到这种方法如何影响发布过程。例如,在发生故障的情况下,使用微服务时,只需要重新测试和重新部署一个微服务。
虽然有几种构建微服务的设计方法,但推荐使用一种是事件驱动架构 (EDA)。此设计模式支持微服务体系结构中所需的松散耦合、异步通信和分散控制。简而言之,这是因为微服务可以通过事件间接通信,而不是通过直接 API 调用进行通信。有关使用事件驱动架构进行开发的更多详细信息,请参阅此处.
此外,如果应用程序具有严格的延迟要求,并且在必须在微服务之间进行通信时存在性能问题,则本文将深入探讨在使用微服务体系结构构建低延迟系统时需要考虑的一些事项。
结论
虽然微服务可能很流行,但可扩展性、弹性和生产力的好处绝不是暂时的。尽管面临挑战,但软件框架和谨慎的架构设计可以降低复杂性。归根结底,切换到微服务方法的决定取决于特定的业务需求,但如果灵活性和弹性是优先事项,那么拥抱软件开发的分布式未来是值得考虑的。
- 上一篇: 微服务架构一文详解,微服务其实真的不难
- 下一篇: 微服务架构-从概念模型到知识体系化
猜你喜欢
- 2024-10-22 微服务架构-从概念模型到知识体系化
- 2024-10-22 微服务架构一文详解,微服务其实真的不难
- 2024-10-22 一张图秒懂微服务网络架构(一文详解微服务架构)
- 2024-10-22 【云端秘籍】微服务架构:让应用更灵活、更高效!
- 2024-10-22 一文了解微服务架构(微服务架构介绍)
- 2024-10-22 微服务架构(前端微服务架构)
- 2024-10-22 深入解析微服务架构:原理、实现及挑战
- 2024-10-22 一张图看懂微服务架构路线(微服务架构深度解析 原理、实践与进阶)
- 2024-10-22 《微服务架构设计模式》读书笔记——服务的拆分策略
- 2024-10-22 微服务架构设计的理念#微服务架构是一种软件设计模式
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)