Centrifugo(四)配置文件說明

????Centrifugo 支持 JSON、TOML和YAML三種格式的配置文件判沟。本文以 JSON 格式為例說明 Centrifugo 配置文件的內(nèi)容蛹头。最簡(jiǎn)單的配置文件如下:

{
    "secret": "very-long-secret-key"
}

只有 secret 是必須的,在生產(chǎn)環(huán)境你應(yīng)該將該參數(shù)設(shè)置的足夠復(fù)雜并且避免外泄君纫。<font color='red'>唯二的需要知道這個(gè)參數(shù)值的只有 Centrifugo 自身和你的應(yīng)用程序后端谷扣。</font>該值被用來生成客戶端連接令牌土全、調(diào)用 API 以及訂閱私有頻道。

????connection_lifetime 參數(shù)用來設(shè)置客戶端連接的過期時(shí)間会涎,單位為秒裹匙。如果該參數(shù)設(shè)置為0,表示該客戶端連接永不過期在塔。

{
    "secret": "very-long-secret-key",
    "connect_lifetime": 0
}


????我們重點(diǎn)關(guān)注以下與頻道(Channel)相關(guān)的幾個(gè)參數(shù)。頻道以字符串進(jìn)行標(biāo)識(shí)拨黔,客戶端通過訂閱頻道來獲取發(fā)布到頻道中的實(shí)時(shí)消息蛔溃。配置文件中的一些參數(shù)會(huì)影響到頻道的行為:

  • watch:Centrifugo 會(huì)同時(shí)發(fā)生消息到 admin channel,這些消息可以在 admin 管理界面的 messages tab 下查看篱蝇。這個(gè)參數(shù)要慎用贺待,特別是針對(duì)消息發(fā)布頻率比較高的頻道,以免超出 admin client 的處理能力零截。本參數(shù)默認(rèn)值為 fasle麸塞。

  • publish:允許客戶端直接發(fā)布消息到頻道,而不經(jīng)過應(yīng)用程序后端涧衙。一般情況下哪工,消息都是由應(yīng)用程序后端通過 Centrifugo API 發(fā)布到 Centrifugo 服務(wù)器的。這個(gè)參數(shù)適用于沒有后端或者 demo 的快速構(gòu)建弧哎。需要注意的一點(diǎn)是客戶端只有成功訂閱了頻道之后才能發(fā)布消息到該頻道雁比。本參數(shù)默認(rèn)值為 false

  • anonymous:該參數(shù)允許匿名訪問(在連接參數(shù)中使用空字符串作為 user ID撤嫩,JWT token 中 sub 為空)偎捎。通常情況下,應(yīng)用程序的用戶都需要登錄認(rèn)證序攘,因此客戶端建立連接時(shí)可以使用用戶名作為標(biāo)識(shí)茴她。如果你需要提供公共的實(shí)時(shí)消息服務(wù),你可以在相應(yīng)的頻道上開啟本參數(shù)程奠。本參數(shù)默認(rèn)值為 false丈牢。

  • presence:是否可查看當(dāng)前頻道的連接信息,即客戶端對(duì)本頻道的訂閱信息瞄沙。本參數(shù)默認(rèn)是為 false赡麦。

  • join_leave:當(dāng)有用戶訂閱/取消訂閱頻道時(shí)朴皆,是否發(fā)送相關(guān)信息到頻道中。本參數(shù)默認(rèn)值為 false泛粹。

  • history_size:頻道歷史消息數(shù)量遂铡。因?yàn)?Centrifugo 將所有的消息存儲(chǔ)在內(nèi)存中,因此限制每個(gè)頻道保留的歷史消息數(shù)量是非常重要的晶姊。本參數(shù)默認(rèn)值為 0扒接,這意味著頻道不會(huì)保留歷史消息。啟用本參數(shù)后们衙,Centrifugo 會(huì)為命名空間中的每條頻道保留指定數(shù)量的歷史消息钾怔,直到消息過期,關(guān)于消息過期詳見參數(shù) history_lifetime蒙挑。

  • history_lifetime:頻道歷史消息的過期時(shí)間宗侦,單位為秒。本參數(shù)默認(rèn)值為 0忆蚀,這意味著頻道不會(huì)保留歷史消息矾利。如果要保留歷史消息,需要同時(shí)配置 history_sizehistory_lifetime馋袜,并設(shè)置合理的參數(shù)值男旗。

  • recover:是否恢復(fù)丟失的消息。如果開啟本參數(shù)欣鳖,當(dāng)客戶端重新連接時(shí)(如因網(wǎng)絡(luò)原因斷線重連)察皇,Centrifugo 將試圖重新恢復(fù)丟失的消息。這個(gè)參數(shù)的啟用要配合歷史消息相關(guān)參數(shù)(history_size 和 histroy_lifetime)泽台,畢竟消息的恢復(fù)依靠的是頻道歷史消息記錄什荣。注意,所有實(shí)時(shí)事件都需要啟用此功能怀酷。本參數(shù)默認(rèn)值為 false溃睹。

  • history_drop_inactive:是否丟棄不活躍的歷史消息。本參數(shù)可以大幅降低資源消耗(內(nèi)存胰坟、消息傳播次數(shù))因篇。簡(jiǎn)單來說,該參數(shù)開啟后笔横,Centrifugo 會(huì)主動(dòng)丟棄不需要的歷史消息竞滓。本參數(shù)默認(rèn)值為 false

  • namespaces:namespaces 是可選參數(shù)吹缔,如果設(shè)置的話商佑,需要設(shè)置成 namespace 數(shù)組的形式。通過 namespaces 可以針對(duì) namespace 下的頻道配置自定義參數(shù)厢塘。每個(gè) namespace 都有自己的 name茶没,并且擁有上面所有的針對(duì)頻道的參數(shù)肌幽。name 必須唯一,并且由字母抓半、數(shù)字喂急、下劃線或連接符組成,長度必須大于2(^[-azA-Z0-9_]{2,}$)笛求。

配置文件示例:

{
    "admin": true,
    "port": 8000,
    "secret":"very-long-secret-key",
    "admin_password":"very-long-admin-password",
    "admin_secret":"very-long-admin-secret",
    "api_key":"very-long-api-key",
    "connection_lifetime": 0,
    "debug": true,
    "presence": true,
    "history_size": 50,
    "history_lifetime": 600,
    "publish": true,
    "anonymous": true,
    "subscribe_to_publish": true,
    "join_leave": true,
    "history_recover": true,
    "log_file": "D:/tmp/centrifugo.log",
    "log_level": "debug",
    "engine": "redis",
    "redis_host": "127.0.0.1",
    "redis_port": "6379",
    "redis_db": "12",
    "redis_password": "123456a?",
    "namespaces":[
        {
            "name":"public",
            "anonymous":true,
            "publish":true,
            "presence":true,
            "join_leave":true,
            "history_size":10,
            "history_lifetime":30,
            "history_recover":true
        },
        {
            "name": "gossips",
            "watch": true
        }
    ]
}

在以上配置下:
??- 頻道news 將使用全局參數(shù)配置廊移。
??- 頻道public:news 將使用 public 命名空間的參數(shù)配置。
??- 頻道gossips:news 將使用 gossips 命名空間的參數(shù)配置探入。

通過 ./centrifugo -h 命令狡孔,可以查看所有的可用參數(shù),如下:

    Centrifugo – real-time messaging server

    Usage:
    [flags] 
    [command]

    Available Commands:
    checkconfig Check configuration file
    genconfig   Generate simple configuration file to start with
    help        Help about any command
    version     Centrifugo version information

    Flags:
    -a, --address string             interface address to listen on 服務(wù)的地址
        --admin                      enable admin web interface 是否開啟admin的管理界面
        --admin_insecure             use insecure admin mode – no auth required for admin socket admin安全驗(yàn)證, 節(jié)點(diǎn): /, 可直接訪問admin管理界面, 默認(rèn)為false, 登錄admin需要admin_password, 反之可直接登錄
        --api_insecure               use insecure API mode  后臺(tái)推送安全驗(yàn)證, 節(jié)點(diǎn): /api. 默認(rèn)為 false, 此時(shí)訪問節(jié)點(diǎn)需要api_key. 當(dāng)設(shè)置為 true 后, 任何人都將可以訪問此節(jié)點(diǎn)
        --client_insecure            start in insecure client mode 客戶端是否需要安全驗(yàn)證, 默認(rèn)為false, 客戶端必須擁有 JWT token 才能訪問
    -c, --config string              path to config file (default "config.json")
        --debug                      enable debug endpoints 是否開啟dubug節(jié)點(diǎn), 開啟后可訪問 /debug/pprof/ 查看一些Centrifugo的網(wǎng)絡(luò)狀態(tài)
    -e, --engine string              engine to use: memory or redis (default "memory") 消息存儲(chǔ)引擎, 默認(rèn)為內(nèi)存, 部署多個(gè)實(shí)例會(huì)造成數(shù)據(jù)不同步, 因此推薦使用 redis
        --grpc_api                   enable GRPC API server 是否開啟grpc api, 默認(rèn)使用 http_api
    -h, --help                       help for this command
        --internal_port string       custom port for internal endpoints 開啟自定義默認(rèn)端口, 默認(rèn)為8000, 開啟額外的端口為admin訪問
        --log_file string            optional log file - if not specified logs go to STDOUT  log輸出文件
        --log_level string           set the log level: debug, info, error, fatal or none (default "info") log級(jí)別
    -n, --name string                unique node name 命名空間名稱, 此空間下的屬性會(huì)覆蓋common部分, 但不會(huì)繼承
        --pid_file string            optional path to create PID file
    -p, --port string                port to bind HTTP server to (default "8000")  服務(wù)端口號(hào)
        --prometheus                 enable Prometheus metrics endpoint
        --redis_db int               Redis database (Redis engine)
        --redis_host string          Redis host (Redis engine) (default "127.0.0.1")
        --redis_master_name string   name of Redis master Sentinel monitors (Redis engine)
        --redis_password string      Redis auth password (Redis engine)
        --redis_port string          Redis port (Redis engine) (default "6379")
        --redis_sentinels string     comma-separated list of Sentinel addresses (Redis engine)
        --redis_tls                  enable Redis TLS connection
        --redis_tls_skip_verify      disable Redis TLS host verification
        --redis_url string           Redis connection URL in format redis://:password@hostname:port/db (Redis engine)
        --tls                        enable TLS, requires an X509 certificate and a key file
        --tls_cert string            path to an X509 certificate file
        --tls_key string             path to an X509 certificate key
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜂嗽,一起剝皮案震驚了整個(gè)濱河市苗膝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌植旧,老刑警劉巖辱揭,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異隆嗅,居然都是意外死亡界阁,警方通過查閱死者的電腦和手機(jī)侯繁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門胖喳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贮竟,你說我怎么就攤上這事丽焊。” “怎么了咕别?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵技健,是天一觀的道長。 經(jīng)常有香客問我惰拱,道長雌贱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任偿短,我火速辦了婚禮欣孤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昔逗。我一直安慰自己降传,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布勾怒。 她就那樣靜靜地躺著婆排,像睡著了一般声旺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上段只,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天腮猖,我揣著相機(jī)與錄音,去河邊找鬼翼悴。 笑死缚够,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鹦赎。 我是一名探鬼主播谍椅,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼古话!你這毒婦竟也來了雏吭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤陪踩,失蹤者是張志新(化名)和其女友劉穎杖们,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肩狂,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摘完,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了傻谁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孝治。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖审磁,靈堂內(nèi)的尸體忽然破棺而出谈飒,到底是詐尸還是另有隱情,我是刑警寧澤态蒂,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布杭措,位于F島的核電站,受9級(jí)特大地震影響钾恢,放射性物質(zhì)發(fā)生泄漏手素。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一瘩蚪、第九天 我趴在偏房一處隱蔽的房頂上張望泉懦。 院中可真熱鬧,春花似錦募舟、人聲如沸祠斧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琢锋。三九已至辕漂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吴超,已是汗流浹背钉嘹。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鲸阻,地道東北人跋涣。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像鸟悴,于是被迫代替她去往敵國和親陈辱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,383評(píng)論 0 5
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,764評(píng)論 0 15
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 15,914評(píng)論 2 11
  • Getting Started Burp Suite 是用于攻擊web 應(yīng)用程序的集成平臺(tái)细诸。它包含了許多工具沛贪,并為...
    Eva_chenx閱讀 28,688評(píng)論 0 14
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常震贵。 O...
    我想起個(gè)好名字閱讀 5,317評(píng)論 0 9