扫码阅读
手机扫码阅读
劝君放弃微服务
559 2023-08-22
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:劝君放弃微服务
文章来源:
老邓聊开发
扫码关注公众号
近年来,微服务架构在各种项目中逐渐流行起来,同时也催生了众多服务和框架用以管理和监控微服务。但对大多数应用来说,是否真的需要采用微服务架构,却是一个值得考虑的问题。
微服务相比传统单体应用的好处包括:
- 解耦:服务间独立,仅通过远程接口交互,迫使原本数据耦合的模块分割,从而提升系统的可修改性。
- 性能:每个微服务拥有独立的数据库,可以根据需要选择数据库,分散了数据库的访问压力,有利于性能提升。
然而,微服务也有其缺点:
- 事务问题:微服务的跨服务、跨数据库特性使得事务一致性从ACID变为BASE,增加了业务编写的复杂性。
- 错误处理:接口必须设计为幂等,增加了业务编写时的心智负担。
在考虑是否采用微服务时,应评估单数据库情况下系统是否能满足性能要求。如果不能,微服务可能是必要的;如果可以,可能没有必要使用微服务。
对于微服务带来的模块解耦好处,可以通过共享库的方式实现。例如,在Java中可以将业务和数据库访问封装成库,通过Maven引入这些库。这样,系统在运行上分为若干小的单体应用,逻辑上通过共享库实现高内聚、低耦合的业务逻辑。这种架构适用于大多数应用,如下图:
每个共享库访问特定数据库表且不与其他库的表重叠,满足里氏替换原则,实现了业务的高内聚、低耦合。由于聚合在单个应用中,便于在ServiceFacade层通过AOP实现事务控制,利用关系型数据库的ACID特性。
想要了解更多内容?
查看原文:劝君放弃微服务
文章来源:
老邓聊开发
扫码关注公众号
老邓聊开发的其他文章
电影魔戒中的需求问题
电影《魔戒2-The Two Towers》中,佛罗多的任务是要把魔戒丢入到末日火山。在他看来,如果要完成任
检查项驱动开发CheckList Drive Development
我找一个木匠订做一个饭桌。几天后,木匠做好了找我验收,我一斧子劈上去,桌子开了个口。我说这测试没通过,你这不
敏捷退化
敏捷已经不是个新鲜词了,现在很多团队都实现了某种形式的敏捷。Scrum是其中最为流行的一种方式。但随着时间的
依赖倒转以及为何要倒转
SOLID原则里面的D,就是依赖倒转原则。我们为何要依赖倒转?在面向对象中如何利用依赖倒转?
业务模型驱动需求编写
王大锤老师在上BA课的时候,经常会用一个俄罗斯方块的例子:请描述俄罗斯方块旋转的逻辑。由于俄罗斯方块有好几种
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线