受邀来一块儿重构公司的老项目
重构首先要注意几个点php
以上几点是重构注意的地方也是重构的目的laravel
本次重构的项目运营了三年之久,用户及业务量也上不来。至于重构的真正缘由不清楚。数据库
很是的惨淡微信
部分字段
字段名 | 类型 | 是否为空 | 默认值 | 注释 |
---|---|---|---|---|
MemberId | bigint(20) | Y | 自增编码 | |
MemberPhone | varchar(255) | N | '' | 手机号码 |
LoginTime | int(11) | Y | NULL | 登陆时间 |
QuitTime | int(11) | Y | NULL | 退出时间 |
LoginState | tinyint(2) | Y | NULL | 登陆状态 |
MemberState | tinyint(2) | N | 0 | 帐号状态 |
MemberExpert | tinyint(2) | N | 0 | |
MemberRegTime | int(11) | Y | NULL | 注册时间 |
DeviceToken | varchar(255) | Y | NULL | 设备标示 |
WxToken | char(32) | Y | NULL | 微信标示 |
问题点有如下几个框架
前期重构要求速度要快。因此只能选择世界上最好的语言。性能
考虑到数据量也不小,手动操做是不可能了,选择使用RabbitMQ进行数据迁移
CREATE TABLE `member` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `tel` bigint(20) DEFAULT NULL COMMENT '手机号码', `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '登陆密码', `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '帐号状态 0:正常', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `member_tel_unique` (`tel`), KEY `member_tel_status_index` (`tel`,`status`) ) ENGINE=InnoDB AUTO_INCREMENT=80073 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `member_authorized` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `member_id` bigint(20) NOT NULL COMMENT '用户编码', `prefix` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '第三方名称', `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '第三方标示', `data` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '受权得到的用户信息', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `member_authorized_prefix_index` (`prefix`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `member_data` ( `member_id` bigint(20) NOT NULL COMMENT '用户编码', `sex` enum('0','1','2') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '性别 0=>女生 1=>男生 2=>未知', `nick_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '姓名/昵称', `img` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户头像', `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, UNIQUE KEY `member_data_member_id_unique` (`member_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
经过队列,能够选择laravel内置的队列或者rabbitmq均可以。将数据迁移到新表中。固然你须要选择一个访问量最低的时间段。并非凌晨就少,不一样的行业的活跃时间段不同。建议先使用百度统计、腾讯分析等等的查看活跃时间区间。ui
重构并非一言一语,几行代码或者一个大佬的方案就能够解决的。实际重构也是一个开发的过程。在不断的迭代中,将重构完成的部分补回到业务中。编码
感谢你看到这里,但愿本篇文章能够帮到你。有问题可在评论区留言。设计