手寫分佈式配置中心

一.引言

   隨着微服務架構的興起,分佈式配置中心越來越必不可少。目前比較流行的有攜程的Apollo,阿里的disconf,淘寶的diamond。

二.原理

     其實實現原理可以簡單的概括如下:客戶端先集成框架,在啓動的時候已經將客戶端的ip和端口發送到了註冊中心(比如zookeeper),再設置具體某個值得時候,發送給服務器端,服務器端接收到請求後,依次通知之前註冊的機器。這樣隨便一臺機器只要某個值被更改了,其他集羣中的機器都可以獲取到最新的值(當然一般會有一個延遲,性能和實現方式有關)。

    這個基本上就是最簡單的分佈式配置中心了,基於此,一步步來講解如何手寫一個分佈式配置中心。

三.步驟

   1.選擇註冊中心

        這裏就使用大家比較熟悉的zk。

   2.實現核心框架完成基本的客戶端ip+端口的註冊

   3.客戶端和服務器端集成框架

   4.通知

      通知主要分兩塊,一塊是client發送key設置值得請求到服務端,一塊是server獲取zk中該集羣下的全部機器進行通知。目前採用的是http協議請求。

四.框架講解

  

註解 PConfigType  
mode  :
server  表明是服務器
client: 表明是客戶端(默認值)
/**
   * 該服務會去調用遠程的服務
   */
  @Autowired
  private PConfigClientServiceImpl pConfigClientService;


  /**
   * 該服務是引用本地的core服務
   */
  @Autowired
  private BaseService baseService;

 

需要client端做數據接收

@RestController

@Slf4j

public class ChangeValueController {

@Autowired

private BaseService baseService;

@PostMapping("/changeData")

public String changeData(@RequestBody DataModel dataModel) {

log.info("===============================");

log.info("enter changeData data:{}", dataModel);

log.info("===============================");

baseService.put(dataModel);

return "success";

}

}

具體請參考框架地址

https://gitee.com/YiHaiFeng/pconfig/

五.題外話

   該pconfig是一個最簡單的分佈式配置中心的框架,安全和權限啥的都沒有擴展,當然傳輸協議,網絡通訊也是使用最基本的方式實現的。如果想應用到生產,還需要做很多工作,但是對於理解分佈式配置原理應該是足夠了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章