五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

學習日志 211224 sharding寫數(shù)據(jù) ID生成器 無key列出數(shù)據(jù)結(jié)果集合并

2021-12-24 16:39 作者:mayoiwill  | 我要投稿

# insert sharding with key


## 搞個測試環(huán)境

- 最終方案是把線上庫向開發(fā)機開放代理

- 具體做法如下

- 采用NodePort類型的service, 把線上庫通過特殊端口映射出來

? - 注意如果是生產(chǎn)的話, 這個方案一般需要內(nèi)網(wǎng)和外網(wǎng)分開

? - 外網(wǎng)的防火墻不允許訪問這些特殊端口

- 因為mysql是多臺, 所以每臺需要一個獨立的NodePort 的 service

? - 實際使用時也可以只把其中特定的一臺開出來

? - 只是所有測試用例注意key必須落在對應(yīng)的那臺機器上

? - 對無key的操作有影響 數(shù)據(jù)不全

- 具體做法是為每一臺實際服務(wù)器打不同的label

? - 之后NodePort的service每個選取不同的label

? - 每個設(shè)置不同的外部端口 比如30306 30307

- 另外 使用k8s yaml對線上pod設(shè)置環(huán)境變量env

? - MY_CLUSTER_ENV online

? - 注意這里需要重新kubectl apply -f

- 在代碼中, 判斷環(huán)境變量, 決定使用哪一套連接

? - 在代碼中加日志輸出 輸出當前環(huán)境是什么

? - 通過kubectl logs檢查

- 需要關(guān)注的點

? - 其實線上的環(huán)境也可以使用test的NodePort格式的連接

? ? - 所以必須檢查日志, 確認是走了線上的連接格式

? ? - 因為測試的NodePort的service是需要在測完后刪除的

? - 我們是有slf4j的, 目前打日志都是進標準輸出, 通過kubectl logs查看


## 插入數(shù)據(jù)

- dao層寫插入語句

- controller層 新增一個PUT 插入數(shù)據(jù)

- 關(guān)鍵點 不要設(shè)置 id

? - dao層insert語句 跳過id字段

- 檢查實際插入的數(shù)據(jù)的id是什么

? - 先通過 kubectl exec

? - 使用mysql命令行客戶端登入數(shù)據(jù)庫

? - 逐個數(shù)據(jù)庫查詢

? - 實際插入的數(shù)據(jù)的id是 681097728465809408

? - 這個ID是在shardingSphere的驅(qū)動走了snowflake生成的

? - 需要關(guān)注的是snowflake的ID除2余數(shù)是否平均分配在0和1

? - 這關(guān)系到兩個數(shù)據(jù)庫實例的負載是否均衡


# Q & A

- Q: 在hyper-v里誤操作了關(guān)機(而不是保存) 重啟后minikube沒了 使用minikube start重啟后發(fā)現(xiàn)docker私有倉庫掛了

- A: 因為minikube start會重新拉鏡像, 導(dǎo)致之前手工創(chuàng)建的證書和registry都沒了

- R: 嘗試使用PV和PVC來為私有倉庫做硬盤

? - 檢查數(shù)據(jù)庫里的數(shù)據(jù)還在 證明minikube start不會刪除PV和PVC

? - 先用hostpath映射minikube node宿主目錄的方式啟動私有倉庫pod

? ? - 事先在宿主機minikube node上重新生成證書

? - 聲明兩個pvc 一個管certs一個管image

? - 把certs的pvc先掛到私有倉庫的pod 任意一個路徑下

? - bash私有倉庫的pod, 把已有的證書copy給新做的pvc掛的目錄

? - 修改k8s描述文件, 讓私有倉庫使用兩個新的pvc, 而不是宿主目錄了

? - 以上就完成了一個偷梁換柱的過程, 把原來從宿主機直接讀證書的事情換成了從pvc讀

? - 再改一遍證書

? ? - 開發(fā)機證書

? ? - minikube node上私有倉庫的證書

? ? - minikube node重啟后 /etc/hosts上私有倉庫的域名解析也沒了, 需要重建

? - 把上面所有操作搞定后 如果后續(xù)minikube虛擬機關(guān)機的話

? ? - 需要重新操作的部分就只有

? ? - 創(chuàng)建minikube node上docker使用的私有倉庫的證書

? ? - 修改minikube node上的/etc/hosts加入私有倉庫的域名解析


# 無key的列出數(shù)據(jù)

- 直接按標準mybatis寫select語句即可

? - 細節(jié)略

- 結(jié)果

? - 獲取到3條數(shù)據(jù), 有一條ID是奇數(shù)

? - bash到pod上, 1號實例里有1條數(shù)據(jù), 0號實例里2條數(shù)據(jù)

? - 看日志, actual sql是執(zhí)行了兩次, 每個實例都執(zhí)行了

? - actual sql加了排序, 看來是為了后續(xù)合并結(jié)果集時方便?


# 擴容

- 參考

? - https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-scaling/

- 涉及的概念

? - 基于proxy做擴容 盡量不影響使用方

? ? - 我們用的JDBC模式 沒有用proxy

? - 啟用了binlog 監(jiān)聽新增變更

- 擴容和縮容的實驗就不做了

- 后續(xù)講flink的時候用flink做

? - 新建一套庫實例, 按新容量標準做

? - 用flink把舊庫數(shù)據(jù)復(fù)制到新庫

? ? - 也是基于binlog

? - 停業(yè)務(wù), 檢查flink沒有積壓后 切換數(shù)據(jù)源到新庫

? ? - 停業(yè)務(wù)模式是最簡單的

? ? - 此處停業(yè)務(wù), 最好不要是pods全下線的模式, 從業(yè)務(wù)代碼中禁寫是比較容易的

? ? - 引入一個zookeeper開關(guān)之類

? - 舊庫下線


學習日志 211224 sharding寫數(shù)據(jù) ID生成器 無key列出數(shù)據(jù)結(jié)果集合并的評論 (共 條)

分享到微博請遵守國家法律
包头市| 筠连县| 旅游| 新野县| 乐昌市| 台南县| 阳新县| 普格县| 正定县| 饶平县| 仪征市| 集安市| 盐亭县| 闽清县| 兴文县| 涟水县| 吉安县| 宜城市| 黄大仙区| 云阳县| 洛阳市| 岳阳县| 榆中县| 晋宁县| 临江市| 临湘市| 兰州市| 鄂尔多斯市| 罗田县| 炉霍县| 襄垣县| 连江县| 河池市| 五华县| 福泉市| 宁陵县| 重庆市| 罗江县| 泽库县| 炎陵县| 缙云县|