关于TOC项目架构的一些思考2023.11.29

2023-11-29 18:04
文章标签 思考 项目 架构 29 2023.11 toc

本文主要是介绍关于TOC项目架构的一些思考2023.11.29,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公司之前有一个小程序+管理系统的项目,专门给其他公司使用的,项目采用的是单体架构,初期为了快速搭建,购买了企业级的快速开发平台BladeX,以BladeX为基础进行搭建的,而且小程序和管理系统的接口都写在同一个项目中。

公司可能感觉项目收益慢,准备抽出原有项目的核心业务,做成一个TOC项目,开放给所有用户使用,但是也会保留给其他公司层面定制化的操作,然后这几天就要开始架构这个TOC项目了。因为TOC项目自己也没做过,也没架构过项目,但是也思考了好几天,有一些想法记录一下,对自己也是一种提高:

1.首先是单体和微服务的选择

公司需要的是快速上线,积累用户,再进行二期三期开发,实现盈利。但是这个项目搭建完成后,不知道会有多少用户,还要看销售推销的情况,所有一切都是未知。

考虑到单体架构构建、开发、调试和部署成本会很小,觉得目前阶段单体项目最合适,相应的单体架构也有缺点,可扩展性和故障隔离等等,但对于目前阶段来说,利大于弊。

因为是TOC项目,也考虑过微服务架构,虽然可能说不出来为什么,但是感觉TOC用微服务就没错(还是知道的太少了),微服务的扩展性、独立部署、集群部署等等方面非常便捷。但是目前看了一下一期的原型,能抽出的服务不多,如果要用微服务架构的话,开发复杂性,数据一致性以及运维难度等等都会成指数增长,目前我公司就3个后端,而且服务的部署必须要有CICD的支持,否则部署一次会非常的麻烦,而且一个java服务基本三四百兆的内存,使用微服务架构一期也最少七八个服务,服务器的开销也要考虑的。

所以按我的想法,目前应该采用单体架构来构建这个项目,采用包隔离开发,如果上线后用户可观,根据包隔离抽离代码,封装成一个个服务,报错的地方写rpc调用,完成从单体到微服务的转变,并相应的要搭建CICD支持微服务架构的部署。

2.项目搭建的选型

因为公司买过BladeX,同事想用这个进行搭建这个TOC项目,我感觉不是最优的方式。

我也去了解了一下这个BladeX,这个平台解决的最大的用户痛点是可以让用户快速开发搭建一个微服务项目,里面集成了ELK、链路追踪、监控大屏、多租户权限、工作流等等功能,一应俱全,使用这个开发出来的项目应该是类似那种SaaS系统,我公司原有的项目虽然用的这个平台搭建的,但是这些功能一个也没用上,只用了里面的一些工具包和权限功能,感觉就是一种浪费,还增加的开发同学的学习成本,需要学习这个平台的API,提供的便利性有限。项目里大量使用了BladeX的工具类,如果要对这个项目重构的话,会很麻烦,耦合性太高,并且通用性很差

首先这个BladeX里面有很多东西这个项目是用不到的,比如权限、多租户以及微服务相关的东西,而且用BladeX来构建,需要导入对应的表,里面的字段是限制死的,少了可能就会报错,就拿user表来说,TOC的user表可能就个手机号加一些信息,BladeX自带的用户表里面除了这些信息还有租户id、部门id、角色id、密码等无用字段,所有感觉如果使用BladeX来构建会让这个TOC项目很臃肿,所有个人来说不建议用BladeX进行构建,无法享受BladeX带来各种优势,反而让项目中多了很多用不上的东西,虽然不用,但放在那也碍眼,影响项目整洁度,单体项目的构建也很方便,建一个空项目,工具类的话,Google、Apache、hutool三家的工具类基本已经很完善了,需要使用什么就配置什么,所有个人感觉使用BladeX来构建是弊大于利,更倾向于建一个空项目

后面可能会搭建TOC项目对应的管理系统,涉及到权限什么的,这时候我更推荐使用BladeX进行快速构建,然后这时候小程序和管理系统里面肯定有逻辑代码重复,这个时候应该转向微服务架构了,小程序和管理系统只是一个壳子,里面的逻辑从对应的服务中取,如果项目顺利的话,数据库可能成为瓶颈,后面建议拆分成不同服务,每个服务有各自的数据库,这样就可以解决数据库的瓶颈了

参考:一文搞懂微服务架构演进

以上就是我的一些思考,不保证对,但好在思考了,如有想法错误的地方欢迎指正

这篇关于关于TOC项目架构的一些思考2023.11.29的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/433793

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refresh 加载 IOC容器,加载所有的自动配置类,创建容器在这个过程

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免