当前位置:网站首页>nacos基础(9):nacos配置管理之从单体架构到微服务
nacos基础(9):nacos配置管理之从单体架构到微服务
2022-04-23 11:18:00 【逆水行舟没有退路】
前言
nacos配置管理应用与分布式系统
从单体架构到微服务
1. 单体架构
Web应用程序早期,大部分的web工程师将所有的功能模块打包到一一起并放在一个web容器中运行,所有功能模块使用同一个数据库,同时,它还提供API和UI访问的web模块等。
尽管也是模块化逻辑,但是最总它还是会打包成一个单体应用,这种将所有功能部署在一个web容器中运行的系统就叫做单体架构。
优点:
- 开发效率高:模块之间交互采用本地调用,并节省微服务之间的交互讨论时间和开发成本
- 容易测试:IDE都是为开发单个应用而设计,容易测试,直接在本地就可以启动完整的系统
- 容易部署:运维成本小,直接打包为一个完整的包,复制到web容器之下即可运行。
缺点:
- 复杂性逐渐变高,可维护性差:所有业务部署在一起,复杂度越来越高,牵一发而动全身。
- 版本迭代速度逐渐变慢:修改一个地方就要将整个应用全部编译部署,启动时间长,回归测试时间过长。
2. 微服务
许多大型公司,通过采用微服务架构解决上面的问题。其思路不是开发一个大的单体应用,而是将其应用分解为小的,互相连接的微服务。
一个微服务一般完成某个特定的功能,比如订单服务,用户服务等。每一个微服务都是完整应用,都有自有的业务逻辑和数据库。一些微服务还会发布API给其它微服务和应用客户端使用。
比如,根据前面描述的系统可分解如下:
每一个业务模块都使用独立的服务完成,这种微服务架构模式也影响了应用和数据库之间的关系,不像传统多个业务模块共享一个数据库,微服务架构每个服务都有自己的数据库。
微服务好处:
- 分而治之,职责单一: 易于开发,理解和维护,方便团队的拆分和管理
- 可伸缩: 能够单独的对指定的服务进行伸缩
- 局部容易修改,容易替换,容易部署,有利于持续集成和快速迭代
- 不会受制于任何技术栈
版权声明
本文为[逆水行舟没有退路]所创,转载请带上原文链接,感谢
https://blog.csdn.net/u011628753/article/details/124358485
边栏推荐
- laravel编写Console脚本
- Analysis on the characteristics of the official game economic model launched by platoffarm
- Visual common drawing (V) scatter diagram
- Excel · VBA custom function to obtain multiple cell values
- 初探 Lambda Powertools TypeScript
- 分享两个实用的shell脚本
- MySQL面试题讲解之如何设置Hash索引
- Learn go language 0x07: stringer exercise code in go language journey
- Visual solutions to common problems (VIII) mathematical formulas
- 分享两个实用的shell脚本
猜你喜欢
Google Earth Engine(GEE)——将原始影像进行升尺度计算(以海南市为例)
MySQL Router重装后重新连接集群进行引导出现的——此主机中之前已配置过的问题
学习 Go 语言 0x04:《Go 语言之旅》中切片的练习题代码
Interprocess communication -- message queue
Typora operation skill description (I) md
PDMS soft lithography process
Cygwin 中的 rename 用法
Redis optimization series (II) redis master-slave principle and master-slave common configuration
About the three commonly used auxiliary classes of JUC
vm设置静态虚拟机
随机推荐
Detailed introduction to paging exploration of MySQL index optimization
Detailed explanation of writing sequence and execution sequence of MySQL series SQL query statements
系统编程之高级文件IO(十三)——IO多路复用-select
如何使用JDBC CallableStatement.wasNull()方法调用来查看最后一个OUT参数的值是否为 SQL NULL
CUMCM 2021-B:乙醇偶合制備C4烯烴(2)
ConstraintLayout布局
MBA - day5 mathématiques - Questions d'application - Questions d'ingénierie
Mysql系列SQL查询语句书写顺序及执行顺序详解
Promise详解
How to quickly query 10 million pieces of data in MySQL
Visual common drawing (IV) histogram
分享两个实用的shell脚本
qt 64位静态版本显示gif
用curl库压缩成发送字符串为utf8并用curl库发送
An interesting interview question
Database management software sqlpro for SQLite for Mac 2022.30
R-drop: a more powerful dropout regularization method
Microsoft Access database using PHP PDO ODBC sample
qt5.8 64 位静态库中想使用sqlite但静态库没有编译支持库的方法
Three web components (servlet, filter, listener)