日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
改了配置,卻不想重啟,怎么整?

有一個超時配置,需要從配置文件中讀取,并設(shè)置到連接池里:

公司主營業(yè)務(wù):成都網(wǎng)站制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出貴德免費做網(wǎng)站回饋大家。

 
 
 
 
  1. // 從配置文件中讀取超時配置
  2. timeout = CGlobalConf::readFileConf(“timeout”);
  3. // 設(shè)置請求超時閾值
  4. CConnectionPool::setTimeout(timeout);

如果超時配置要修改,每次都要重啟服務(wù),很麻煩,能不能不重啟服務(wù)呢?

方案一:發(fā)信號觸發(fā)配置重載

這種方法無需加入任何組件,新增一個信號捕捉函數(shù),來處理配置的重新載入。

 
 
 
 
  1. // 服務(wù)啟動時,設(shè)置ctrl+c回調(diào)函數(shù)
  2. signal(SIGINT, sigint_shenjian_process);
  3.  
  4. // 捕獲ctrl+c時,執(zhí)行配置重新載入動作
  5. void sigint_shenjian_process(int){
  6.          //從配置中讀取超時配置
  7.          timeout= CGlobalConf::readFileConf(“timeout”);
  8.          //設(shè)置請求超時閾值
  9.          CConnectionPool::setTimeout(timeout);
  10. }

當(dāng)需要變更配置時,只需要:

  • 修改配置文件;
  • 發(fā)送信號,觸發(fā)配置重新載入;

畫外音:啥,不知道如何向服務(wù)發(fā)信號?

方案二:檢測配置文件變化,自動重新載入

這種方法無需手動發(fā)送信號,修改完配置文件,自動檢測,自動載入,需要加入文件監(jiān)控組件。

畫外音:這類組件開源的也不少。

文件監(jiān)控組件如何能監(jiān)控文件的變化呢?

別想復(fù)雜了,可以定期檢查文件的md5或者last_modify_time。

 
 
 
 
  1. // 服務(wù)啟動時,初始化
  2. CFileMonitor::init(){
  3.  // 獲取初始md5
  4.  old_md5=xxx;
  5. }
  6.  
  7. // 啟動一個進程,監(jiān)控文件變化
  8. CFileMonitor::start(){
  9.  while(1){ // 循環(huán)檢查
  10.  // 獲取最新md5
  11.  now_md5=xxx;
  12.  // 比對md5是否變化,如果變化
  13.  if(now_md5!=old_md5){
  14.          //從配置中讀取超時配置
  15.          timeout= CGlobalConf::readFileConf(“timeout”);
  16.          //設(shè)置請求超時閾值
  17.          CConnectionPool::setTimeout(timeout);
  18.          //修改md5
  19.          old_md5=now_md5;
  20.  }
  21.  // 一秒后再檢查
  22.  sleep(1000);
  23.  }
  24. }

方案三:注冊中心,配置變化時回調(diào)

次方案拋棄了配置文件,需要引入注冊中心:

  • 所有服務(wù)從注冊中心拿配置;
  • 必須從注冊中心后臺修改配置;
  • 配置修改,注冊中心回調(diào)引用了相關(guān)配置的服務(wù);
 
 
 
 
  1. // 服務(wù)啟動時,從注冊中心獲取配置,并注冊回調(diào)函數(shù)
  2. timeout = CConfCenter::(“timeout”, callback_shenjian);
  3. // 設(shè)置請求超時閾值
  4. CConnectionPool::setTimeout(timeout);
  5.  
  6. void callback_shenjian(timeout){
  7.          //在注冊中心修改配置時,會收到回調(diào)
  8.          CConnectionPool::setTimeout(timeout);
  9. }

修改配置,不重啟服務(wù),上面三種方式都很常見,不難但實用。

【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】


網(wǎng)站欄目:改了配置,卻不想重啟,怎么整?
URL標(biāo)題:http://www.dlmjj.cn/article/djojsgd.html