最近加班比較多,所以沒有太多的時間來寫部落格,希望每位小夥伴都是體諒一下。
首先介紹一下eureka service的多級快取有哪些,當然在上節的時候也說過了,這裡在說一下,readwritecachemap(讀寫快取)和readonlycachemap(唯讀快取)。
第一步是先從唯讀快取裡面去獲取資料,如果沒有再從讀寫快取裡面去獲取資料,這個時間,可能會出現這兩個快取的資料都沒有,那麼eureka client是直接從eureka server的登錄檔中直接獲取資料的。
那麼問題又來了,唯讀快取和讀寫快取的資料是怎麼更新的呢?什麼時候才會更新一次的呢?那麼咱們接下來繼續。
在有新的服務例項發生註冊、下線、故障的時候,就回去重新整理讀寫快取的資料。
比如,現在有乙個服務a(servicea),向eureka server註冊,註冊完了之後,就會重新整理這個讀寫快取裡面的資料,將這個讀寫快取裡面的資料全部過期掉。
當然當乙個服務發生下線和故障的時候,也會觸發,把讀寫快取裡面的資料都過期掉。
既然每次上線、下線、故障的時候都會清除讀寫快取裡面的資料,那麼在系統正常執行的時候,他就一直不清除這個快取裡面的資料麼?這個就需要引入這個定時過期。
這個就非常好理解了,肯定是給讀寫快取加了乙個定時器,然後每隔一段時間就給他清除掉裡面的資料,預設的請款是180秒清除一次。
上面的都是講的讀寫快取,這個被動過期肯定就是來處理唯讀快取裡面的資料是怎麼過期的了。那麼唯讀快取裡面的資料是怎麼過期的呢?
唯讀快取裡面也有乙個定時器,每隔30秒的時候,去和讀寫快取裡面的資料進行對比,如果讀寫快取的資料和唯讀快取裡面的資料不一致,就需要把讀寫快取裡面的資料同步到唯讀快取裡面。
這裡需要注意的就是,如果讀寫快取裡面的資料沒有了,唯讀快取裡面最多30秒過後,就會同步到唯讀快取裡面了。
有沒有想過,我上面說的快取登錄檔裡面的資料是怎麼過期的,那麼新註冊進來的資料又是怎麼到這個裡面的呢?
如果仔細讀過原始碼的人,肯定知道在這個裡面有個佇列(recentlychangedqueue),儲存了最近有變化的服務例項,那麼這個佇列的資料是什麼時候新增的,又是什麼時候刪除的呢?
新增的時候,就是在每一次有新的服務在上線、下線等操作的時候會往這個裡面新增乙個資料。沒30秒的時候會檢查一下,這個裡面是否有停留超過180秒(3分鐘)的資料,如果有就直接清除掉。這裡面需要注意的就是,每30秒,清除停留180秒的資料。
服務發現 Eureka Server
如何引入eureka server 如何執行eureka server eureka server示例 enableeurekaserver public static void main string args eureka背景 flux capacitor和google group discus...
獲取EurekaServer的節點資訊
例項id,ip port組成 例項主機位置,即ip ip位址 例項狀態例項覆蓋狀態 一般埠 安全埠 3090 1528277046826 1528277985101 01528276042944 info health eureka rest介面文件 registration類 通用的,無論是使用e...
Eureka Server啟用 https服務指北
在我的前文 eureka server 開啟spring security basic認證 中已經給 eureka server 開啟了最基本的鑑權措施,本文則讓 https加持於 eureka server,讓安全措施來的更徹底一點。注 本文首發於my personal blog codeshee...