国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

QConf搭建配置中心

JiaXinYi / 1227人閱讀

摘要:今天來跟大家分享的是奇虎開源的配置中心。容錯當進程死掉,網絡終端,機器重啟等異常情況發生時,我們希望能盡可能的提供可靠的配置獲取服務。配置更新及時可以秒級同步到所有客戶端機器。本身是沒有的恭喜你,你已經構建完自己的配置中心了。

今天來跟大家分享的是奇虎360開源的 QConf 配置中心。

為什么我們需要做這么一件事情?

因為遇到了,當業務分布較廣,配置分布較廣的時候,就會很容易地出現一些問題,比如做了負載均衡,需要調整一下應用配置。剛好改漏了一臺機,就偶爾出現一些問題,排查起來也是很吃力的。

QConf 的架構: QConf架構

除了 QConf 本身提供的工具之外,我們用到了一個有掌閱科技開發的 zkdash zookeeper 管理工具。

個人理解:

QConf 可以說是一個 zookeeper 的客戶端,通過 agent 去 watch zookeeper 的變化,數據存在本機,當 zookeeper 發生變化是,自動改變本地數據,來達到同步更新的效果。

這也就是為什么 QConf 需要搭配 zookeeper 去使用的原因之一吧。

QConf 服務端

QConf使用ZooKeeper集群作為服務端提供服務。眾所周知,ZooKeeper是一套分布式應用程序協調服務,根據上面提到的對配置內容的定位,我們認為可以將單條配置內容直接存儲在ZooKeeper的一個ZNode上,并利用ZooKeeper的Watch監聽功能實現配置變化時對客戶端的及時通知。 按照ZooKeeper的設計目標,其只提供最基礎的功能,包括順序一致,原子性,單一系統鏡像,可靠性和及時性。

我們選擇Zookeeper還因為它有如下特點:

1、類文件系統的節點組織

2、穩定,無單點問題

3、訂閱通知機制

關于Zookeeper,更多見:https://zookeeper.apache.org/

QConf 客戶端

因為ZooKeeper在接口方面只提供了非常基本的操作,并且其客戶端接口原始,所以我們需要在QConf的客戶端部分解決如下問題:

1、降低與ZooKeeper的鏈接數 原生的ZooKeeper客戶端中,所有需要獲取配置的進程都需要與ZooKeeper保持長連接,在生產環境中每個客戶端機器可能都會有上百個進程需要訪問數據,這對ZooKeeper的壓力非常大而且也是不必要的。

2、本地緩存 當然我們不希望客戶端進程每次需要數據都走網絡獲取,所以需要維護一份客戶端緩存,僅在配置變化時更新。

3、容錯 當進程死掉,網絡終端,機器重啟等異常情況發生時,我們希望能盡可能的提供可靠的配置獲取服務。

4、多語言版本接口 目前提供的語言版本包括:c,php,java,python,go,lua,shell。

5、配置更新及時 可以秒級同步到所有客戶端機器。

6、高效的配置讀取 內存級的訪問速度。

安裝

了解完基礎的知識和原理,就開始動手實踐想法和操作吧,理論要和實踐結合,不然就瞎扯淡了。

環境

Linux: Ubuntu 16.04

安裝 zookeeper

安裝包地址: zookeeper

$ sudo wget http://apache.stu.edu.tw/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
$ sudo tar -zxvf zookeeper-3.4.9.tar.gz

解壓完成后,是可以直接運行 zkServer 的,但是需要配置自己的基礎信息。

$ cd zookeeper-3.4.9
$ sudo cp conf/zoo_sample.cfg conf/zoo.cfg

啟動 zkServer

$ cd ../
$ ./bin/zkServer.sh start

默認監聽: 0.0.0.0:2181

測試服務是否啟動: telnet 127.0.0.1 2181 輸入 stat

Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
  xxx

Latency min/avg/max: 0/0/51
Received: 252717
Sent: 252716
Connections: 5
Outstanding: 0
Zxid: 0x13
Mode: standalone
Node count: 10

會輸出上述信息,服務器啟動成功.

然后創建一下 zookeeper 測試數據:

sh zkCli.sh

    create /demo demo
    create /demo/confs confs
    create /demo/confs/conf1 111111111111111111111
    create /demo/confs/conf2 222222222222222222222
    create /demo/confs/conf3 333333333333333333333
QConf

安裝方式可以查看官方 wiki

安裝 FAQ

安裝完 qconf 后,進入 qconf 安裝目錄,調整 idc.conf

$ cd conf/
$ sudo vim idc.conf

輸入自己的 zookeeper 服務器地址,多個用 , 隔開:

#[zookeeper]
############################################################################
#                             QCONF config                                 #
############################################################################
# all the zookeeper host configuration.
#[zookeeper]
zookeeper.test=zookeeper host

保存即可。

啟動 QConf agent。

在 ubuntu 下使用 bash 去啟動

$ sudo bash ./bin/agent-cmd.sh start

啟動成功,查看 QConf 命令。

qconf get_conf /demo/confs/conf1
qconf get_batch_keys /demo/confs

如果返回對應的信息,那幾說明可以正常獲取數據了。如果失敗,就去 logs/ 目錄查詢錯誤信息,對應修改。

安裝 PHP 擴展
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-libqconf-dir=/usr/local/qconf/include --enable-static LDFLAGS=/usr/local/qconf/lib/libqconf.a
make
make install

qconf 配置在 qconf 安裝的目錄中,根據路徑找到對應的依賴包即可。

安裝完后,添加到 php.ini,使用 php --ini 查看配置文件位置。

查看擴展安裝:

php -m | grep qconf

QConf 操作 API

安裝完 QConf 和 zookeeper,安裝我們的管理后臺。

zkdash

需要 Python >= 2.7,如果是 centos65 的用戶,需要升級自己的 Python 版本,升級方法請看: Python升級

地址: zkdash

安裝完 zkdash,配置對應節點,進行管理即可。

zkdash Web管理服務默認是全網公開訪問的,需要修改監聽host和端口,修改方式

$ sudo vim init.py

修改監聽的 host 地址:

 74 def main():
 75     """主程序入口
 76     """
 77     logger.init_logger(LOG_ITEMS, suffix=OPTIONS.port)
 78     application = Application()
 79     http_server = tornado.httpserver.HTTPServer(application,
 80                                                 xheaders=True)
 81     http_server.listen(OPTIONS.port, address="輸入你需要監聽的地址") 
 82     tornado.ioloop.IOLoop.instance().start()
 83

address 是新增的 host 參數。本身是沒有的

恭喜你,你已經構建完自己的配置中心了。接下來需要做的是,提高性能,和穩定性,擴展 zookeeper。我只能幫你到這里了,接下來的路,自己走吧。

更多開源項目歡迎關注: https://github.com/janhuang

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22664.html

相關文章

  • FastD 最佳實踐二: 構建配置中心

    摘要:過去專門做了一篇文檔來構建配置中心,基于的配置中心。環境要求及構建步驟可參考搭建配置中心隨著業務增長,部署的機器可能會隨著增長,增加配置難度和維護難度。最終架構圖如下無論擴展多少個業務應用,僅需要一個配置中心即可完成多處配置修改。 過去專門做了一篇文檔來構建配置中心,基于 zookeeper 的配置中心。 環境要求及構建步驟可參考: QConf搭建配置中心 隨著業務增長,部署的機器可能...

    noONE 評論0 收藏0
  • 從零到百億互聯網金融架構發展史

    摘要:總體介紹在互聯網金融行業一百多億其實也算不上大平臺,也就是二級陣營吧,其實每次的架構升級都是隨著業務重大推進而伴隨的,在前一代系統架構上遇到的問題,業務開發過程中積累一些優秀的開發案例,在下一代系統開發中就會大力推進架構升級。 回想起從公司成立敲出的第一行代碼算起到現在也快三年了,平臺的技術架構,技術體系也算是經歷了四次比較重大的升級轉化(目前第四代架構體系正在進行中),臨近年底也想抽...

    mrcode 評論0 收藏0
  • 從零到百億互聯網金融架構發展史

    摘要:總體介紹在互聯網金融行業一百多億其實也算不上大平臺,也就是二級陣營吧,其實每次的架構升級都是隨著業務重大推進而伴隨的,在前一代系統架構上遇到的問題,業務開發過程中積累一些優秀的開發案例,在下一代系統開發中就會大力推進架構升級。 回想起從公司成立敲出的第一行代碼算起到現在也快三年了,平臺的技術架構,技術體系也算是經歷了四次比較重大的升級轉化(目前第四代架構體系正在進行中),臨近年底也想抽...

    U2FsdGVkX1x 評論0 收藏0
  • 分布式配置系統Apollo如何實時更新配置的?

    摘要:我們是不是很好奇配置中心如何做到實時更新并且通知到客戶端的這也是一個面試中經常會問到的題目。客戶端得到狀態碼是并且會根據立即去服務端拉取最新的配置。引言 記得我們那時候剛開始學習Java的時候都只是一個單體項目,項目里面的配置基本都是寫在項目里面的properties文件中,比如數據庫配置啥的,各種邏輯開關,一旦這些配置修改了,還需要重啟項目這修改才會生效。隨著各種微服務的誕生,服務的...

    NicolasHe 評論0 收藏0
  • 攜程一面:分布式配置系統Apollo如何實時更新配置的?

    摘要:我們是不是很好奇配置中心如何做到實時更新并且通知到客戶端的這也是一個面試中經常會問到的題目。雖然是攜程開源的,但是攜程內部也不用它。客戶端得到狀態碼是并且會根據立即去服務端拉取最新的配置。通過定時任務的補充,可以讓配置達到最終的一致性。 引言記得我們那時候剛開始學習Java的時候都只是一個單體項目,項目里面的配...

    asce1885 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<