受邀來一塊兒重構公司的老項目
重構首先要注意幾個點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
重構並非一言一語,幾行代碼或者一個大佬的方案就能夠解決的。實際重構也是一個開發的過程。在不斷的迭代中,將重構完成的部分補回到業務中。編碼
感謝你看到這裏,但願本篇文章能夠幫到你。有問題可在評論區留言。設計