1.1.1 单体架构 Web应用程序发展的早期,大部分web工程师将所有的功能模块打包到一起并放在一个web容器中运行,所有功能模块使用同一个数据库,同时,它还提供API或者UI访问的web模块等
文章图片
尽管也是模块化逻辑,但是最终它还是会打包并部署为单体式应用,这种将所有功能都部署在一个web容器中运行的系统就叫做单体架构(也叫巨石型应用)。
好处:(适用于:小型简单应用)
- 开发效率高:模块之间交互采用本地方法调用,并节省微服务之间的交互讨论时间与开发成本。
- 容易测试:IDE都是为开发单个应用设计的、容易测试一一在本地就可以启动完整的系统。
- 容易部署:运维成本小,直接打包为一个完整的包,拷贝到web容器的某个目录下即可运行。
- 复杂性逐渐变高,可维护性逐渐变差:所有业务模块部署在一起,复杂度越来越高,修改时牵一发动全身。
- 版本迭代速度逐渐变慢:修改一个地方就要将整个应用全部编译、部署、启动时间过长、回归测试周期过长。
- 阻碍技术创新:若更新技术框架,除非你愿意将系统全部重写,无法实现部分技术更新。
- 无法按需伸缩:通过冗余部署完整应用的方式来实现水平扩展,无法针对某业务按需伸缩。
1.1.2 微服务
文章图片
每一个业务模块都使用独立的服务完成,这种微服务架构模式也影响了应用和数据库之间的关系,不像传统多个业务模块共享一个数据库,微服务架构每个服务都有自己的数据库。
【架构师之路-java|【Nacos】1.1 从单体架构到微服务】微服务架构的好处:
- 分而治之,职责单一; 易于开发、理解和维护、方便团队的拆分和管理
- 可伸缩; 能够单独的对指定的服务进行伸缩
- 易修改(局部),易替换,易部署,有利于持续集成和快速铁代
推荐阅读
- java|HttpClient发送HTTP/HTTPS的GET/POST请求工具类(绕过证书验证)
- 牛客网|【Java刷题进阶】基础入门篇⑤
- java|关于微信小程序与Java后台交互数据中中文乱码问题的讨论
- 网易二面(Kafka为什么吞吐量大、速度快(?))
- JEECG低代码平台|JeecgBoot 3.4.0 版本发布,微服务重构版本
- 别再乱打日志了,这份 Java 日志规范,应有尽有,建议收藏!!
- mall学习教程|Mall电商实战项目微服务版本全面升级,支持最新版SpringCloud,权限解决方案升级...
- 【docker专栏8】使用IDEA远程管理docker镜像及容器服务
- QuickFIX|QuickFix Java 讲解(四)服务器的搭建与解析