1、場景
常見的開關信息、訪問地址信息示血,一般的分布式配置中心(比如disconf)就可以搞定,但是如果是一些value非常大的配置信息救拉,比如value超過1M的活動文案信息难审,或者一些臨時活動的配置信息,只在特定節(jié)假日使用一次亿絮,用完就可以刪除告喊,如果把這些信息都放在disconf上,那么disconf文件會越來越大壹无,不但維護越來越困難葱绒,而且每次有變更,拉取這么大文件也費時間斗锭,所以我們需要開發(fā)適合自己項目的配置中心地淀。
2、設計公共配置服務注意點
-
低成本:公共配置中心作為基礎服務岖是,假設單個節(jié)點支持30000PS帮毁,支持百萬,需要300個節(jié)點才能支撐豺撑,成本能否hold住?
業(yè)務模塊緩存公共配置烈疚,獲取不到值才調用公共配置中心
-
高性能:業(yè)務模塊通過http或rpc調用基礎服務,如果網(wǎng)絡抖動聪轿,高并發(fā)下很容易服務超時爷肝,影響業(yè)務?
同步調用弊端,同步換成異步陆错,定時拉取
-
實時性:獲取配置信息的實時性如何保障?
通過發(fā)布訂閱通知變更
-
高可用:公共配置不能丟失灯抛,必須高可用,業(yè)務模塊是否要緩存公共配置?
業(yè)務本地緩存公共配置
-
高并發(fā):高并發(fā)下音瓷,基礎服務不能掛?
限流对嚼,redis緩存,本地緩存
3绳慎、架構設計
3.1 方案設計:
業(yè)務模塊集成sdk-->sdk定時拉取配置到本地緩存--->http請求遠程的配置服務
3.2 公共配置服務架構圖
3.3 SDK設計
- 1纵竖、定時拉取公共配置數(shù)據(jù)到本地緩存漠烧,業(yè)務需要獲取配置,從本地緩存中讀取
- 2靡砌、業(yè)務模塊啟動拉取遠程數(shù)據(jù)已脓,更新本地緩存
- 3、提供公共配置相關API(獲取string通殃、bean摆舟、List)
3.4 公共配置服務設計
- 1、通過多級緩存前置查詢提升接口的OPS(緩存數(shù)據(jù)新增或修改邓了、查詢)
- 2、本地緩存媳瞪、redis緩存骗炉、db一致性保障
- 3、限流保障接口可用