1 Star 0 Fork 0

时空隧道 / 代驾重构建议

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

代驾重构建议

一、组件选型

1)Nginx组件

Nginx官网提供了三个类型的版本

Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version:最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版

结论:

选择Stable version,修复了旧版本的一些遗留BUG,性能提升

2)PHP组件

8.0以上稳定版本,跟现在使用5.6版本比较,性能提升了百分之70多,比5.6快将近3倍,开启opencache更快;
语法更简洁,用更少的代码实现相同的功能;
增加异常处理,避免了之前的致命错误,而是通过继承Error类,将错误抛出,让开发者对程序的掌控能力更强;
define()定义常量数组,定义常量更加好用;
具名参数允许通过变量名来传递参数,不再依赖变量位置;
支持Match表达式、更合理的字符串与数字的比较、null检查的语法糖

结论:

选用PHP8.0,性能上有很大提成,更好用

3)数据库组件

主业务逻辑使用mysql或者pgsql,两个都是开源且支持pdo操作;
后者SQL的标准实现上要比MySQL完善,而且功能实现比较严谨,单体存量更大,数据类型比较丰富;
pgsql地理位置存储需要配合postgis插件使用;
跟mysql比较语法有稍许差异,开发效率不如mysql;

mysql:

高版本支持Geometry地理空间数据转换存储,Point(坐标值)、LineString(线,由一系列点连接而成)、MultiPolygon(集合类,包含多个多边形)等
根据项目实际需要,需要扩展单个列业务(如计费规则、短信、多平台登录);
建议使用8.0.17 以上的版本,解决了更新 JSON 的日志性能瓶颈问题,占用空间小;
解决脏数据,支持函数索引,性能更好,灵活无须预先定义列同时也支持Multi-Valued Indexes;
处理多主复制模式下的插入,保证不与其他服务器产生冲突;
性能方面100w+的数据qps,是mysql5.7的2倍

结论:

选用mysql8.0.17 以上的版本

二、框架选型

1)laravel 9.0

全球使用率排行最高的PHP框架,框架成熟、稳定且长期维护和迭代,社区和论坛活跃,文档和资料比较丰富
支持用户授权、队列任务调度、限流、事件系统;
支持广播、延时通知、集合、缓存系统;
支持http、短信通知、全文搜索、验证器、社会化登录、等常用扩展包;

三、socket通知及并发

1)swoole 4.0以上版本

本身支持多进程、异步执行任务
支持协程redis、协程mysql、协程websocket server、协程http server;
支持mysql、redis连接池;
支持定时器、进程间共享内存;
支持http、mysql、websocket、redis客户端;
成熟稳定、社区和论坛活跃,文档和资料比较丰富;

四、服务器架构

主业务服务器:

1)方案一:配置ngnix反向代理,采用负载均衡分布式部署,一主两从;

2)方案二:采用docker环境部署,根据需要修改配置开启多少镜像服务

数据库服务器: 一主一从,主写从读,读写分离 缓存服务器:

1)方案一:选用阿里云的高可用rds服务器,能够保证稳定性

2)方案二:自己搭建reis服务器,一主两从,需要配置哨兵模式,检测是否有异常,使用从机顶上来

五、开发方面

1)采用新的框架或者技术时,伴随着踩坑或者未知不能解决的问题,建议采用成熟稳定、文档资源丰富的技术框架,新的技术框架会有不断fix bug或者迭代的功能,开发者也需要跟着一起不断学习和交流、有问题需要随时提出并讨论

2)多人开发业务需要经常沟通、最大可能封装通用统一类或模块化开发,避免代码冗余、重复造轮子或无用功

3)开发前先确定业务的实现功能逻辑和后期可能扩展的方面,最大可能在前期设计数据库向后扩展、避免业务代码高耦合甚至重写的可能

空文件

简介

代驾重构建议文档... 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/gaohuaiwang/driving-suggest-doc.git
git@gitee.com:gaohuaiwang/driving-suggest-doc.git
gaohuaiwang
driving-suggest-doc
代驾重构建议
master

搜索帮助