最好是查詢、刪除、新增操作放在**中事務的開始,將修改放在事務將要結束的地方。
因為修改涉及到對資料的加鎖(間隙鎖),所以為了盡量短時間的鎖住資料,修改應該放在事務即將結束的位置。
之前是看了 jvm 課程,認為建立物件可以寫為 user user = null; 然後在**邏輯裡可以給 user 賦值。但是會出現乙個問題,如果該 user 未賦值,而直接對該物件的字段賦值,就會報空指標異常。(實際寫**遇到,try catch 中,try 會返回乙個 user 例項物件,catch 裡直接捕獲 service 的異常,沒有 user 物件,並且 user.setname()類似操作,就會報空指標異常 )
所以以後建立物件,還是寫 user user = new user(); 不寫 user user = null;
重構學習知識點
以 nacos 作為註冊/配置中心,相同的例項在不同的 ip 註冊到 nacos 中,就是多個例項。例如兩台主機上都有同乙個 user 專案註冊到乙個 nacos 中心上,則有兩個 user 例項。ribbon 負載均衡在微服務中的應用,預設都是以輪詢方式訪問。
如果 nacos 註冊/配置中心有多個,則形成了微服務的集群。
將公共功能部分拆分出來,這叫橫向拆分,可以讓下游其他微服務共用。
按功能的聚合度拆分,叫縱向拆分,這樣從頁面展示到資料庫資料互動都在同乙個微服務中。
微服務下的問題在單體情況下也有,但是在微服務分布式情況下就尤為突出。
介面呼叫就需要服務發現與註冊,服務呼叫;
介面錯誤就需要降級和熔斷處理;
介面效能就需要擴容;
介面呼叫情況就需要監控;
問題排查就需要全鏈路追蹤。
註冊中心:
微服務的服務者提供心跳給註冊中心是用 http 請求來告知註冊中心。
如果有註冊提供者節點新增或者刪除,註冊中心探知到,就要推送到服務消費者,然後重新整理快取在本地的註冊列表。
測試節點環境和開發節點環境,在部署的時候可以直接動態修改指定的環境。例如**裡雖然指向 dev 環境,但是部署時可以指定 test 環境。該操作是通過 springboot 的 main 方法的 args 引數來動態改變。
註冊中心一般是集群部署,那麼就涉及到了一致性。所以註冊中心自身還會有一致性的操作。
rpc 呼叫:
要考慮支援資料結構型別的豐富度、跨語言支援、效能與可讀性(壓縮的資料需要的頻寬更小,傳輸速度更快)。
監控:
請求量和響應時間是反應介面健康的重要指標。
治理手段:
實現負載均衡是 ribbon 做的事,nacos 只是動態配置演算法,作為動態引數傳入到 ribbon 的演算法設定中。
在實際的專案中,某個服務呼叫可能超市,則我們需要使用重試來保證呼叫的成功率。但是這裡也涉及到乙個冪等性。(冪等性可以使用悲觀鎖、樂觀鎖,資料庫字段唯一索引等實現)
註冊中心需要考慮到的兩個點:高可用(集群、多idc部署)、一致性。
工作和學習總結
1.測試庫的a05 表 a0504 全部 md5 加密 2.修改登入出的明文明加md5 3.軟體設計流程圖例4 4.健身 md5 函式 create or replace function md5 passwd in varchar2 return varchar2 isretval varchar...
2016 12 19學習工作總結
一 學習總結 1 內容 一天一問之列出display的值,說明他們的作用?display的值得作用 block象塊型別元素一樣顯示 inline預設值象行內元素型別一樣顯示 inline block象行內元素顯示,但其內容像塊型別元素一樣顯示 list item象塊型別元素一樣顯示,並新增樣式列表標...
工作日常總結學習
主要記錄工作當中一些基礎知識的累積,方便日後複習。我們把系統時鐘配置分為七個步驟,分別用標號 表示,詳細過程為 時鐘源引數設定 hse 或者 hsi 配置。這裡我們選擇 hse 為時鐘源,所以我們之前必須 在 rcc 配置中我們開啟 hse。時鐘源選擇 hse 還是 hsi。這裡我們配置選擇器選擇 ...