当前位置:网站首页>项目架构演进
项目架构演进
2022-06-11 04:11:00 【LoneWalker、】
单体架构:
用户量也不多,项目也不稳定

优点:
- 单体架构简单,小型项目开发成本低。
- 项目部署在一个节点上,维护也比较方便。
缺点:
- 全部功能集成在一个工程中,对大型项目来说不易于开发和维护。
- 项目模块之间紧密耦合,单点容错率低。
- 无法针对不同模块进行针对性优化和扩展。
搭建集群:
提升项目稳定性,并发承受度提高,某一台服务器挂了,也没什么问题。
但是搭建集群后会出现的一些新的问题,例如(包括但不仅仅是这三种):
- 用户的请求如何分发给不同的服务器,从而缓解用户量增加的压力。
- 用户登录成功后,数据共享问题。
- 当数据量庞大时,如果还直接去数据库查询,速度很慢,如何提升查询效率

可以通过Nginx【解决请求分配问题】、Redis【解决数据共享和缓存问题】、Elasticsearch【解决数据查询问题】等技术,解决上述问题。

垂直架构:
所谓的垂直架构就是将原来的一个应用拆成互不相关的几个应用,以提升效率。
比如我们把一个系统拆分为用户模块、订单模块、商品模块,一旦订单模块访问量过大,只需增加订单模块节点即可。

分布式架构:
项目一般分为controller、service、dao三层,实际上导致程序变慢的重灾区可能在service或者dao层,而搭建集群时是针对三层都搭建了集群,效果不是很好,所以开始演进到分布式架构。

分布式架构问题:
问题1:使用分布式架构之后,服务器直接的通讯都是同步的,在一些不是核心业务的功能上肯定希望它是异步通讯,为了实现服务器之间的异步通讯就出现了MQ【RabbitMQ、RocketMQ等】

问题2:由于模块繁多,并且模块搭建集群的数量增加,会导致其他模块需要维护各种ip地址等信息,导致项目的维护性极低,耦合性极高,并且也无法实现负载均衡的效果
也就出现可以帮助我们管理服务信息的技术【Nacos或者Eureka】,【ribbon】可以帮助我们实现服务的负载均衡

问题3:如果订单模块出现问题,只要涉及到该模块的内容都无法使用,可能会导致服务提供的线程池耗尽,也无法给用户友好提示
于是有【Sentinel 】技术来解决

问题4:海量数据会导致数据库无法存储全部内容或者在查询数据时响应极其缓慢,在用户高并发情况下,数据库也是无法承受住的。
于是可以基于【mycat】实现数据库的分库分表

微服务架构
微服务架构是在分布式架构的基础上再次拆分,使每个服务只做一件事。

问题:模块过多导致运维成本增加
解决:采用【docker】容器化技术帮助我们管理
边栏推荐
- 给你一个项目,你将如何开展性能测试工作?
- Watson K's Secret Diary
- 【服务器数据恢复】同友存储raid5崩溃的数据恢复案例
- 如何检查域名解析是否生效?
- JVM(5):虚拟机栈、栈异常、栈的存储结果和运行原理、栈内部结构、局部变量表
- Fundamentals of embedded audio processing
- Market prospect analysis and Research Report of programmable digital temperature regulator in 2022
- Simulation of radar emitter modulated signal
- 6. form label
- SQL injection correlation analysis
猜你喜欢

Esp32 development -lvgl display picture

Zhongang Mining: fluorochemical industry is the main consumption field of fluorite

Given a project, how will you conduct performance testing?

Programming battle -- challenging college entrance examination questions

Simulation of radar emitter modulated signal

Construction of esp8266/esp32 development environment

A Security Analysis Of Browser Extensions

Sslstrip Ultimate - location hijacking

Feature selection algorithm based on bare bones particleswarm optimization

Some differences between people
随机推荐
数据类型的转换和条件控制语句
超简单 CameraX 人脸识别效果封装
This artifact is highly recommended. One line command will convert the web page to PDF!
JVM(1):介绍、结构、运行和生命周期
司马炎爷爷 告诉你什么叫做内卷!
数据分析师必知必会的统计学知识
Market prospect analysis and Research Report of single photon counting detector in 2022
华生·K的秘密日记
d结构用作多维数组的索引
再聊数据中心网络
Eth Of Erc20 And Erc721
A Security Analysis Of Browser Extensions
SQL注入关联分析
ESP series module burning firmware
Esp32 porting lvgl
关于重复发包的防护与绕过
【网络篇】套接字编程
Talk about data center network again
Sql优化
密码找回功能可能存在的问题(补充)