国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

老項目重構手記之用戶系統

ivan_qhz / 1799人閱讀

摘要:功能重新寫好后,在數據遷移方便,當然沒法人工操作,腳本去遷移也不現實,考慮使用數據隊列等等方式進行數據遷移功能代碼絕筆是另起爐灶寫,在原程序上寫復雜度有提升了一倍。

受邀來一起重構公司的老項目
概述

重構首先要注意幾個點

重構后功能的可擴展性

業務互相依賴的復雜度

脫離本身的業務進行重構

重構后的代碼可讀性與可維護性

性能的提升

以上幾點是重構注意的地方也是重構的目的

分析

本次重構的項目運營了三年之久,用戶及業務量也上不來。至于重構的真正原因不清楚。

用戶注冊量:107470

日PV:1000+

非常的慘淡

關于用戶ID與其他業務綁定僅僅是單純的存儲用戶ID進行綁定,類似與評論,購買等。這樣在重新設計用戶表的時候無需考慮其他表的業務是否有沖突或者依賴。

前期設計上貌似接口及數據表字段設置問題,出現了數據重復的問題。

功能重新寫好后,在數據遷移方便,當然沒法人工操作,php腳本去遷移也不現實,考慮使用數據隊列等等方式進行數據遷移

功能代碼絕筆是另起爐灶寫,在原程序上寫復雜度有提升了一倍。

原數據表結構
部分字段
字段名 類型 是否為空 默認值 注釋
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 微信標示

問題點有以下幾個

數據字段設計時不應使用駝峰命名,應使用小寫,多帶帶分割用_ ,例如 member_tel , 索引的設置也存在一些問題

字段盡量避免DEFAULT NULL

根據需求分表,現在所有的第三方授權都放到一個表里了

選型

前期重構要求速度要快。所以只能選擇世界上最好的語言。

語言:PHP

框架:Laravel

數據庫:MySQL

考慮到數據量也不小,手動操作是不可能了,選擇使用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都可以。將數據遷移到新表中。當然你需要選擇一個訪問量最低的時間段。并不是凌晨就少,不同的行業的活躍時間段不一樣。建議先使用百度統計、騰訊分析等等的查看活躍時間區間。

迭代

重構并不是一言一語,幾行代碼或者一個大佬的方案就可以解決的。實際重構也是一個開發的過程。在不斷的迭代中,將重構完成的部分補回到業務中。

致謝

感謝你看到這里,希望本篇文章可以幫到你。有問題可在評論區留言。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28941.html

相關文章

  • 項目的遷移手記

    摘要:打包后將項目下載到本地。數據庫用的阿里云的,所以直接忽略。無感知轉發我自己有一臺核的阿里云他們公司的量也不大,所以我準備先將項目部署到我服務器上,在公司服務器上進行負載均衡,將我方權重調高,將用戶流量全部引入到我方服務器上。 收到一個朋友的求救,他現在遇到一個難題。 就是剛剛入職的公司,項目沒有GIT,用的老版本的TP,CI,代碼也很凌亂,目錄也是非常的多,有的沒的都在服務器上放著,服...

    hidogs 評論0 收藏0
  • 項目的遷移手記

    摘要:打包后將項目下載到本地。數據庫用的阿里云的,所以直接忽略。無感知轉發我自己有一臺核的阿里云他們公司的量也不大,所以我準備先將項目部署到我服務器上,在公司服務器上進行負載均衡,將我方權重調高,將用戶流量全部引入到我方服務器上。 收到一個朋友的求救,他現在遇到一個難題。 就是剛剛入職的公司,項目沒有GIT,用的老版本的TP,CI,代碼也很凌亂,目錄也是非常的多,有的沒的都在服務器上放著,服...

    khlbat 評論0 收藏0
  • 項目的遷移手記

    摘要:打包后將項目下載到本地。數據庫用的阿里云的,所以直接忽略。無感知轉發我自己有一臺核的阿里云他們公司的量也不大,所以我準備先將項目部署到我服務器上,在公司服務器上進行負載均衡,將我方權重調高,將用戶流量全部引入到我方服務器上。 收到一個朋友的求救,他現在遇到一個難題。 就是剛剛入職的公司,項目沒有GIT,用的老版本的TP,CI,代碼也很凌亂,目錄也是非常的多,有的沒的都在服務器上放著,服...

    mingzhong 評論0 收藏0
  • SegmentFault 社區訪談 | mcfog:自由進出 Coding && A

    摘要:上次的訪談,介紹了下可愛的依云醬,回憶傳送門。這里簡單地介紹下龍女仆,全名小林家的龍女仆,為什么介紹這部劇呢因為設計獅顏值同學也安利了這部。劇情簡介在獨身又勞累的小林劃重點一名程序員身邊突然出現的穿著女仆服裝的美少女托爾。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的訪談,介紹了下可愛的依云醬,回憶傳送門。不...

    neroneroffy 評論0 收藏0

發表評論

0條評論

ivan_qhz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<