# W1 明細帳務巨量資料寫入測試與精進方案 ###### tags: `W1` ### 1. RSG API 特規功能重新調整 ##### 1.1 老虎機注單明細(1) - [ ] API接入 - [ ] 排程功能調整 - [ ] 分頁功能 - [ ] 資料表內容確認(資料欄位與分區) - [ ] 5分鐘彙總帳 - [ ] 補注單功能 ##### 1.2 捕魚機注單1分鐘彙總(2) - [ ] API接入 - [ ] 排程功能調整 - [ ] 5分鐘彙總帳 - [ ] 補注單功能 ### 2. 相同程式架構測試 #### 2.1 程式版本與系統資源相同測試(2) :::info Schedule AP : 0.3 Core CPU , 256MB memory Master DB : 4 Core CPU , 8GB memory Slave DB : 4 Core CPU , 8GB memory ::: - [ ] 1小時拉帳測試 - [ ] log每分鐘寫入15萬筆明細實際執行時間 - [ ] 找出實際執行瓶頸並調整後測試 - [ ] 寫滿24小時2億筆資料後執行取資料效能測試 #### 2.2 程式版本相同提高系統資源測試 :::info Schedule AP : 2 Core CPU , 512MB memory Master DB : 8 Core CPU , 12GB memory Slave DB : 8 Core CPU , 12GB memory ::: - [ ] 1小時拉帳測試 - [ ] log每分鐘寫入15萬筆明細實際執行時間 - [ ] 找出實際執行瓶頸並調整後測試 - [ ] 寫滿24小時2億筆資料後執行取資料效能測試 #### 2.3 ~~現有架構進行程式優化測試~~ :::warning 直接改成拉帳寫帳分離方式,效能測試與優化移到第4項進行 ~~Schedule AP : 2 Core CPU , 512MB memory Master DB : 8 Core CPU , 12GB memory Slave DB : 8 Core CPU , 12GB memory~~ ::: - [ ] 5分鐘匯總帳更新不lock - [ ] 遊戲明細bulk Insert - [ ] 找出實際執行瓶頸並調整後測試 - [ ] API取得明細效能優化 - [ ] DB 分區或分庫調整 ### 3. 排程建立工作佇列 :::info 因應遊戲館增多並且不容易有效快速水平拓展worker 將目前排程調整成不指定執行實體的工作佇列 由有空閒的worker執行, 若worker不足時可以直接增加 ::: #### 3.1 建立Redis工作佇列(2) - [ ] 定義task key包含工作項目與執行內容 - [ ] 實作Redis List 達到工作先進先出 - [ ] 工作失敗需要重新回寫到Queue - [ ] 分散鎖確認工作不重複執行 #### 3.2 工作排程實作內容調整(3) - [ ] 重新定義排程類別 - [ ] 工作排程執行方式調整 ### 4. 拉帳與帳務寫入分離 :::info 拉帳後先不寫入RDBMS 改寫入Queue or NoSQL 再由其他工作排程分散式寫入到RDBMS ::: #### 4.1 Kafuka實驗(5) - [ ] 確認資料Durability(持久性) - [ ] 保留資料索引表7days 35億筆index參考 - [ ] 確認資料容量與寫入效能測試 - [ ] 確認相關費用 - [ ] 製作成.net service - [ ] 取資料寫入RDBMS效能測試 #### 4.2 Pulsar實驗(5) - [ ] 確認資料Durability(持久性) - [ ] 保留資料索引表7days 35億筆index參考 - [ ] 確認資料容量與寫入效能測試 - [ ] 確認相關費用 - [ ] 製作成.net service - [ ] 取資料寫入RDBMS效能測試 #### 4.3 MangoDB實驗(5) - [ ] 確認資料Durability(持久性) - [ ] 保留資料索引表7days 35億筆index參考 - [ ] 確認資料容量與寫入效能測試 - [ ] 確認相關費用 - [ ] 製作成.net service - [ ] 取資料寫入RDBMS效能測試 ### 5. 分散式SQL資料庫(5) :::info CockroachDB測試 ::: - [ ] ACID測試 - [ ] 資料寫入效能測試 - [ ] 資料同步速度測試 - [ ] 資料讀取速度測試 - [ ] 節點死機測試 ### 6. 系統整合(2) :::info 將實驗內容確定方案整合到W1系統並更新到DEV/UAT環境 :::