项目架构演进

简介: 项目架构演进

 单体架构:

用户量也不多,项目也不稳定

image.gif编辑

优点:

    • 单体架构简单,小型项目开发成本低。
    • 项目部署在一个节点上,维护也比较方便。

    缺点:

      • 全部功能集成在一个工程中,对大型项目来说不易于开发和维护。
      • 项目模块之间紧密耦合,单点容错率低。
      • 无法针对不同模块进行针对性优化和扩展。

      搭建集群:

      提升项目稳定性,并发承受度提高,某一台服务器挂了,也没什么问题。

      但是搭建集群后会出现的一些新的问题,例如(包括但不仅仅是这三种):

        • 用户的请求如何分发给不同的服务器,从而缓解用户量增加的压力。
        • 用户登录成功后,数据共享问题。
        • 当数据量庞大时,如果还直接去数据库查询,速度很慢,如何提升查询效率

        image.gif编辑

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

        image.gif编辑

        垂直架构:

        所谓的垂直架构就是将原来的一个应用拆成互不相关的几个应用,以提升效率。

        比如我们把一个系统拆分为用户模块、订单模块、商品模块,一旦订单模块访问量过大,只需增加订单模块节点即可。

        image.gif编辑

        分布式架构:

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

        image.gif编辑

        分布式架构问题:

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

        image.gif编辑

        问题2:由于模块繁多,并且模块搭建集群的数量增加,会导致其他模块需要维护各种ip地址等信息,导致项目的维护性极低,耦合性极高,并且也无法实现负载均衡的效果

        也就出现可以帮助我们管理服务信息的技术【Nacos或者Eureka】,【ribbon】可以帮助我们实现服务的负载均衡

        image.gif编辑

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

        于是有【Sentinel 】技术来解决

        image.gif编辑

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

        于是可以基于【mycat】实现数据库的分库分表

        image.gif编辑

        微服务架构

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

        image.gif编辑

        问题:模块过多导致运维成本增加

        解决:采用【docker】容器化技术帮助我们管理

        相关文章
        |
        1月前
        |
        前端开发 JavaScript 测试技术
        android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
        android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
        93 2
        |
        11天前
        |
        前端开发 JavaScript 测试技术
        android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
        在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
        39 6
        |
        11天前
        |
        存储 前端开发 数据可视化
        在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
        在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
        |
        21天前
        |
        前端开发 JavaScript 测试技术
        Android适合构建中大型项目的架构模式全面对比
        Android适合构建中大型项目的架构模式全面对比
        39 2
        |
        1月前
        |
        存储 分布式计算 Hadoop
        Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
        Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
        50 2
        |
        2月前
        |
        负载均衡 数据库 开发工具
        |
        2月前
        |
        Java 数据库 Maven
        谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器
        项目介绍、项目环境搭建、docker配置mysql,redis,jdk,maven、人人开源、快速开发、安装nodejs、逆向工程搭建,人人开源代码生成器
        谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器
        |
        22天前
        |
        缓存 前端开发 JavaScript
        前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
        最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
        |
        1月前
        |
        前端开发 JavaScript 测试技术
        Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
        Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
        34 0
        |
        1月前
        |
        存储 消息中间件 前端开发
        .NET常见的几种项目架构模式,你知道几种?
        .NET常见的几种项目架构模式,你知道几种?