成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

程序員筆記 | 詳解Eureka緩存機制

開發 開發工具
Eureka是Netflix開源的、用于實現服務注冊和發現的服務。Spring Cloud Eureka基于Eureka進行二次封裝,增加了更人性化的UI,使用更為方便。但是由于Eureka本身存在較多緩存,服務狀態更新滯后。

Eureka是Netflix開源的、用于實現服務注冊和發現的服務。Spring Cloud Eureka基于Eureka進行二次封裝,增加了更人性化的UI,使用更為方便。但是由于Eureka本身存在較多緩存,服務狀態更新滯后,最常見的狀況是:服務下線后狀態沒有及時更新,服務消費者調用到已下線的服務導致請求失敗。本文基于Spring Cloud Eureka 1.4.4.RELEASE,在默認region和zone的前提下,介紹Eureka的緩存機制。

一、AP特性

從CAP理論看,Eureka是一個AP系統,優先保證可用性(A)和分區容錯性(P),不保證強一致性(C),只保證最終一致性,因此在架構中設計了較多緩存。

Eureka高可用架構

(Eureka高可用架構)

二、服務狀態

Eureka服務狀態enum類:

  1. com.netflix.appinfo.InstanceInfo.InstanceStatus 

三、Eureka Server

在Eureka高可用架構中,Eureka Server也可以作為Client向其他server注冊,多節點相互注冊組成Eureka集群,集群間相互視為peer。Eureka Client向Server注冊、續約、更新狀態時,接受節點更新自己的服務注冊信息后,逐個同步至其他peer節點。

【注意】如果server-A向server-B節點單向注冊,則server-A視server-B為peer節點,server-A接受的數據會同步給server-B,但server-B接受的數據不會同步給server-A。

1. 緩存機制

Eureka Server存在三個變量:(registry、readWriteCacheMap、readOnlyCacheMap)保存服務注冊信息,默認情況下定時任務每30s將readWriteCacheMap同步至readOnlyCacheMap,每60s清理超過90s未續約的節點,Eureka Client每30s從readOnlyCacheMap更新服務注冊信息,而UI則從registry更新服務注冊信息。

三級緩存:

三級緩存

緩存相關配置:

緩存相關配置

關鍵類:

四、Eureka Client

Eureka Client存在兩種角色:服務提供者和服務消費者,作為服務消費者一般配合Ribbon或Feign(Feign內部使用Ribbon)使用。Eureka Client啟動后,作為服務提供者立即向Server注冊,默認情況下每30s續約(renew);作為服務消費者立即向Server全量更新服務注冊信息,默認情況下每30s增量更新服務注冊信息;Ribbon延時1s向Client獲取使用的服務注冊信息,默認每30s更新使用的服務注冊信息,只保存狀態為UP的服務。

二級緩存:

緩存相關配置:

緩存相關配置

關鍵類:

五、默認配置下服務消費者最長感知時間

考慮如下情況:

  • 0s時服務未通知Eureka Client直接下線;
  • 29s時***次過期檢查evict未超過90s;
  • 89s時第二次過期檢查evict未超過90s;
  • 149s時第三次過期檢查evict未續約時間超過了90s,故將該服務實例從registry和readWriteCacheMap中刪除;
  • 179s時定時任務從readWriteCacheMap更新至readOnlyCacheMap;
  • 209s時Eureka Client從Eureka Server的readOnlyCacheMap更新;
  • 239s時Ribbon從Eureka Client更新。

因此,極限情況下服務消費者最長感知時間將***趨近240s。

六、應對措施

服務注冊中心在選擇使用Eureka時說明已經接受了其優先保證可用性(A)和分區容錯性(P)、不保證強一致性(C)的特點。如果需要優先保證強一致性(C),則應該考慮使用ZooKeeper等CP系統作為服務注冊中心。分布式系統中一般配置多節點,單個節點服務上線的狀態更新滯后并沒有什么影響,這里主要考慮服務下線后狀態更新滯后的應對措施。

1. Eureka Server

  • 縮短readOnlyCacheMap更新周期。縮短該定時任務周期可減少滯后時間。
    1. eureka.server.responsecCacheUpdateIntervalMs: 10000  # Eureka Server readOnlyCacheMap更新周期 
  • 關閉readOnlyCacheMap。中小型系統可以考慮該方案,Eureka Client直接從readWriteCacheMap更新服務注冊信息。
    1. eureka.server.useReadOnlyResponseCache: false        # 是否使用readOnlyCacheMap 

2. Eureka Client

  • 服務消費者使用容錯機制。如Spring Cloud Retry和Hystrix,Ribbon、Feign、Zuul都可以配置Retry,服務消費者訪問某個已下線節點時一般報ConnectTimeout,這時可以通過Retry機制重試下一個節點。
  • 服務消費者縮短更新周期。Eureka Client和Ribbon二級緩存影響狀態更新,縮短這兩個定時任務周期可減少滯后時間,例如配置:
    1. eureka.client.registryFetchIntervalSeconds: 5        # Eureka Client更新周期 
    2. ribbon.ServerListRefreshInterval: 2000   
  • 服務提供者保證服務正常下線。服務下線時使用kill或kill -15命令,避免使用kill -9命令,kill或kill -15命令殺死進程時將觸發Eureka Client的shutdown()方法,主動刪除Server的registry和readWriteCacheMap中的注冊信息,不必依賴Server的evict清除。
  • 服務提供者延遲下線。服務下線之前先調用接口使Eureka Server中保存的服務狀態為DOWN或OUT_OF_SERVICE后再下線,二者時間差根據緩存機制和配置決定,比如默認情況下調用接口后延遲90s再下線服務即可保證服務消費者不會調用已下線服務實例。

七、網關實現服務下線實時感知

在軟件工程中,沒有一個問題是中間層解決不了的,而網關是服務提供者和服務消費者的中間層。以Spring Cloud Zuul網關為例,網關作為Eureka Client保存了服務注冊信息,服務消費者通過網關將請求轉發給服務提供者,只需要做到服務提供者下線時通知網關在自己保存的服務列表中使該服務失效。為了保持網關的獨立性,可實現一個獨立服務接收下線通知并協調網關集群。

【本文是51CTO專欄機構宜信技術學院的原創文章,微信公眾號“宜信技術學院( id: CE_TECH)”】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2009-01-16 19:49:49

程序員考試數組指針

2012-03-06 09:22:46

程序員

2013-08-20 09:33:59

程序員

2020-03-02 09:50:50

程序員技能開發者

2009-05-21 15:58:12

程序員工作經驗職場

2020-09-14 08:47:46

緩存程序員存儲

2020-01-20 14:27:57

程序員數據庫電子商務

2020-10-14 08:32:08

算法遞歸面試

2009-01-07 21:03:53

程序員循環語句

2011-05-13 14:34:02

程序員

2016-01-05 10:30:59

后端程序員緩存原理

2009-01-07 21:00:05

2009-01-19 19:18:44

程序員考試筆記

2015-04-10 19:37:34

程序員

2022-03-16 11:10:19

程序員社區技術

2013-07-12 10:58:16

程序員

2010-09-01 11:06:16

程序員

2015-08-11 14:45:51

程序員

2012-11-22 14:00:26

程序員

2017-11-14 21:30:15

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美成人激情视频 | 成人免费视频7777777 | 日本成人二区 | 农夫在线精品视频免费观看 | 美女午夜影院 | 91亚洲国产亚洲国产 | 精品国产乱码久久久久久影片 | 亚洲成人一二区 | 国产精品久久久久久吹潮 | 中文精品久久 | 日本免费在线观看视频 | 久久久激情 | 欧美日韩精品一区二区三区视频 | 免费av手机在线观看 | 久久精品色视频 | 日日做夜夜爽毛片麻豆 | 国产精品九九九 | 亚洲欧美一区二区三区国产精品 | 国产精品自产拍在线观看蜜 | 在线不卡 | 艹逼网 | 欧美一区在线视频 | 国产日韩精品在线 | 成人在线免费视频观看 | 国产特级毛片 | 国产精品久久久久无码av | 国产1区2区在线观看 | 欧美中国少妇xxx性高请视频 | 久久51| 日日夜夜天天 | 午夜在线精品 | 亚洲国产中文字幕 | 91爱啪啪| 欧美在线 | 91佛爷在线观看 | av中文字幕网站 | 欧美综合精品 | 美女国产 | 涩涩片影院 | 欧美日日日日bbbbb视频 | 自拍中文字幕 |