重金求 nodejs 架构优化方案

这不是重金求子哈~,而是想和大家一起聊聊使用 nodejs 作为商业项目的后端,在架构需要考虑的一些问题。

希望能有人能够给我提供合适的方案,可以不参与代码开发,只需指明方向,预算最多一万元。

项目现状

我们公司总部在深圳,当前营收主要靠线下美术培训,在深圳、北京和郑州都有分店。为了提升线下培训的效率,我们自研了两个小程序、五个web应用和一个后台系统,除了一个用于渲染海报的node服务,所有的接口皆由同一个node后端提供。

前端项目都比较复杂,经过过去半年多时间的迭代,已经趋于完善,具备赋能同行的最低要求,已经发布最低可用版本,为艺培同行提供海报设计、3D展厅、智能抠图、在线PPT课件、图形编程和学生信息管理等工具。

之前只是内部门店的老师使用,用户访问量比较低,对系统的稳定性不高,所以后端一直没有做好架构层面的设计,难以满足线上业务的发展需要。

后端采用的框架是koajs,数据库是 mysql,使用ts的语法编写代码,除了提供增删改查的功能,也提供获取微信手机号、微信消息推送和发射短信等功能,部署在阿里云的服务器(每月50元左右)。

当前存在的问题

虽然我之前也使用过Java、go、php和ruby 开发维护过商业项目,但为了效率,我还是选择了nodejs 作为自己创业项目的后端,按照优先级存在的问题有:

没有使用云数据库

为了节约成本,mysql 数据库是直接安装在云服务器上的,之前也购买过云数据库,配置很简单,把 host 字段改成购买的云数据库即可。

不过最低配,也需要80元一个月,所以我打算日活稳定超过100人以后,再购买替换。

没有 redis 缓存

使用Redis,主要考虑性能和并发。这么多年,一直没有在实际项目中使用过Redis,很多年以前学习过,现在基本忘了,得从头学习,不过也挺简单。

目前主流的 Node.js 的 Redis 驱动包有两个:node-redis 和 ioredis,这两个包都有性能非常高、使用方便的特点。

多数人推荐使用ioredis,不管是在云服务器安装redis 还是购买阿里云的redis,都需要在node项目中安装这个依赖,通过它去连接redis数据库。

购买云redis 最低配置的话,一个月需要30元左右,我的想法是不在云服务器上安装了,只要有用户购买会员了,直接一步到位,购买云redis。

很多业务系统其实用数据库就够了,无脑上缓存/NOSQL可能会带来更多更严重的问题。但是在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。

这个时候,就需要使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问数据库。

没有测试域名

目前只有一个域名:www.bitdance.art, 直接提供给用户使用,其实已经申请了一个新域名:yipeizhuli.com

但一直没有去进行备案,原计划是备案通过后,yipeizhuli.com 提供给外部用户使用,bitdance.art 提供给内部员工使用,提前发现问题,同时也可以用来测试。

升级 https 证书

当前购买的证书是免费的,不能支持子域名的https访问,所以不同的前端项目访问都是通过第一层路径是去区分的,比如:

  • /admin: 为后台系统;
  • /ppt:为在线PPT系统;
  • /3d:为3D画展系统;
  • /design: 为海报设计系统。

通过配置 ngnix 映射到不同的前端资源,如果项目多了,管理起来不方便,前端的架构也收到影响,需要在不同前端项目中加上对应的配置。

除了打包的位置需要加上对应的路径,路由也需要哦~

其他问题

由于时间关系,数据库的备份、异常的监控、数据库各表的外键管理混乱等,就不展开讨论了。

后续的规划

目前日活在50人左右,所有的功能都免费对外开放使用,现在已经签约了一个课程加盟的服务商,导入她150多个课件,将会有一千人左右的老师,高频使用我们的系统查看课件,日活很快就会突破一千。

另外,如果这些中小机构的老师,使用我们的拼团工具和3D展馆进行招生引流的话,服务器一定会扛不住,所以当前最紧要的是先上redis,其次是替换云MySQL数据库。

我们这套系统的品牌叫艺培助理,期望是给艺术培训机构提供招生运营工具和课程,用户量可能会过亿,所以后续后端应该还是得,改成go或Java这些生态比较完善的成熟后端框架。

总结

由于还在创业中,本文简单分享了一下我们存在的问题,因为自己需要更多把精力放在业务开展上,所以希望能有更专业的同学,能够帮忙解决以上提到的一些问题(300~500元一天)。

欢迎大家在评论区讨论,或者加入我们的大厂学习交流群,一起提升全栈架构能力。

对于加入我们学习群的同学,我们会定期邀请一些大厂的同学,分享自己是如何通过改善学历履历或学习某些知识技能进入大厂的成功经验,让大家制定和及时调整自己的职业规划。

我们希望以后能帮一千个同学进入大厂,并帮助一百个大厂同学的晋升或跳槽。

相关推荐
liuyang___11 分钟前
第一次经历项目上线
前端·typescript
西哥写代码38 分钟前
基于cornerstone3D的dicom影像浏览器 第十八章 自定义序列自动播放条
前端·javascript·vue
清风细雨_林木木42 分钟前
Vue 中生成源码映射文件,配置 map
前端·javascript·vue.js
免檒1 小时前
go语言协程调度器 GPM 模型
开发语言·后端·golang
FungLeo1 小时前
node 后端和浏览器前端,有关 RSA 非对称加密的完整实践, 前后端匹配的代码演示
前端·非对称加密·rsa 加密·node 后端
不知道写什么的作者1 小时前
Flask快速入门和问答项目源码
后端·python·flask
雪芽蓝域zzs1 小时前
JavaScript splice() 方法
开发语言·javascript·ecmascript
不灭锦鲤1 小时前
xss-labs靶场第11-14关基础详解
前端·xss
不是吧这都有重名2 小时前
利用systemd启动部署在服务器上的web应用
运维·服务器·前端
霸王蟹2 小时前
React中巧妙使用异步组件Suspense优化页面性能。
前端·笔记·学习·react.js·前端框架