(18)Lars-dns簡介(Dns部分)-【Lars-基于C++負(fù)載均衡遠(yuǎn)程服務(wù)器調(diào)度系統(tǒng)教程】

【Lars教程目錄】

Lars源代碼
https://github.com/aceld/Lars


【Lars系統(tǒng)概述】
第1章-概述
第2章-項目目錄構(gòu)建


【Lars系統(tǒng)之Reactor模型服務(wù)器框架模塊】
第1章-項目結(jié)構(gòu)與V0.1雛形
第2章-內(nèi)存管理與Buffer封裝
第3章-事件觸發(fā)EventLoop
第4章-鏈接與消息封裝
第5章-Client客戶端模型
第6章-連接管理及限制
第7章-消息業(yè)務(wù)路由分發(fā)機(jī)制
第8章-鏈接創(chuàng)建/銷毀Hook機(jī)制
第9章-消息任務(wù)隊列與線程池
第10章-配置文件讀寫功能
第11章-udp服務(wù)與客戶端
第12章-數(shù)據(jù)傳輸協(xié)議protocol buffer
第13章-QPS性能測試
第14章-異步消息任務(wù)機(jī)制
第15章-鏈接屬性設(shè)置功能


【Lars系統(tǒng)之DNSService模塊】
第1章-Lars-dns簡介
第2章-數(shù)據(jù)庫創(chuàng)建
第3章-項目目錄結(jié)構(gòu)及環(huán)境構(gòu)建
第4章-Route結(jié)構(gòu)的定義
第5章-獲取Route信息
第6章-Route訂閱模式
第7章-Backend Thread實時監(jiān)控


【Lars系統(tǒng)之Report Service模塊】
第1章-項目概述-數(shù)據(jù)表及proto3協(xié)議定義
第2章-獲取report上報數(shù)據(jù)
第3章-存儲線程池及消息隊列


【Lars系統(tǒng)之LoadBalance Agent模塊】
第1章-項目概述及構(gòu)建
第2章-主模塊業(yè)務(wù)結(jié)構(gòu)搭建
第3章-Report與Dns Client設(shè)計與實現(xiàn)
第4章-負(fù)載均衡模塊基礎(chǔ)設(shè)計
第5章-負(fù)載均衡獲取Host主機(jī)信息API
第6章-負(fù)載均衡上報Host主機(jī)信息API
第7章-過期窗口清理與過載超時(V0.5)
第8章-定期拉取最新路由信息(V0.6)
第9章-負(fù)載均衡獲取Route信息API(0.7)
第10章-API初始化接口(V0.8)
第11章-Lars Agent性能測試工具
第12章- Lars啟動工具腳本


四蜡感、Lars-DNS Service開發(fā)

1) 簡介

負(fù)責(zé)接收各agent對某modid萧求、cmdid的請求并返回該modid己莺、cmdid下的所有節(jié)點细诸,即為agent提供獲取路由服務(wù)

1.1 架構(gòu)

3-Lars-dnsserver.png

1.2 網(wǎng)絡(luò)模塊

? DnsService服務(wù)模型采用了one loop per thread TCP服務(wù)器届榄,主要是基于Lars-Reactor:

  • 主線程Accepter負(fù)責(zé)接收連接(agent端連接)
  • Thread loop們負(fù)責(zé)處理連接的請求痊末、回復(fù)刊懈;(agent端發(fā)送查詢請求歌溉,期望獲取結(jié)果)

1.3 雙map模型

? DnsServer使用兩個map存儲路由數(shù)據(jù)(key = modid<<32 + cmdid , value = set of ip<<32 + port

  • 一個RouterDataMap_A:主數(shù)據(jù)瓶颠,查詢請求在此map執(zhí)行
  • 另一個RouterDataMap_B:后臺線程周期性重加載路由到此map拟赊,作為最新數(shù)據(jù)替換掉上一個map

這兩個map分別由指針data_pointertemp_pointer指向.

1.4 Backend Thread守護(hù)線程

dns service還有個業(yè)務(wù)線程:

1、負(fù)責(zé)周期性(default:1s)檢查RouteVersion表版本號粹淋,如有變化吸祟,說明RouteData有變更瑟慈,則重加載RouteData表內(nèi)容;然后將RouteChange表中被變更的modid取出屋匕,根據(jù)訂閱列表查出modid被哪些連接訂閱后葛碧,向所有工作線程發(fā)送任務(wù):要求訂閱這些modid的連接推送modid路由到agent

2、此外过吻,還負(fù)責(zé)周期性(default:8s)重加載RouteData表內(nèi)容

PS:重加載RouteData表內(nèi)容的細(xì)節(jié)

重加載RouteData表內(nèi)容到temp_pointer指向的RouterDataMap_B进泼,而后上寫鎖,交換指針data_pointertemp_pointer的地址纤虽,于是完成了路由數(shù)據(jù)更新

主業(yè)務(wù)

  1. 服務(wù)啟動時乳绕,RouteData表被加載到data_pointer指向的RouterDataMap_A中, temp_pointer指向的RouterDataMap_B為空

  2. 服務(wù)啟動后,agent發(fā)來Query for 請求某modid/cmdid逼纸,到其所在Thread Loop上洋措,上讀鎖查詢data_pointer指向的RouterDataMap_A,返回查詢結(jié)果杰刽;

  3. 如果此modid/cmdid不存在菠发,則把agent ip+port+moid/cmdid發(fā)送到Backend thread loop1的隊列,讓其記錄到ClientMap

后臺線程Backend thread每隔10s清空temp_pointer指向的RouterDataMap_B贺嫂,再加載RouteData表內(nèi)容到temp_pointer指向的RouterDataMap_B雷酪,加載成功后交換指針data_pointertemp_pointer指針內(nèi)容,于是完成了路由數(shù)據(jù)的更新.


關(guān)于作者:

作者:Aceld(劉丹冰)

mail: danbing.at@gmail.com
github: https://github.com/aceld
原創(chuàng)書籍gitbook: http://legacy.gitbook.com/@aceld

原創(chuàng)聲明:未經(jīng)作者允許請勿轉(zhuǎn)載, 如果轉(zhuǎn)載請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涝婉,一起剝皮案震驚了整個濱河市哥力,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌墩弯,老刑警劉巖吩跋,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渔工,居然都是意外死亡锌钮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進(jìn)店門引矩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梁丘,“玉大人,你說我怎么就攤上這事旺韭》彰眨” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵区端,是天一觀的道長值漫。 經(jīng)常有香客問我,道長织盼,這世上最難降的妖魔是什么杨何? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任酱塔,我火速辦了婚禮,結(jié)果婚禮上危虱,老公的妹妹穿的比我還像新娘羊娃。我一直安慰自己,他們只是感情好埃跷,可當(dāng)我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布蕊玷。 她就那樣靜靜地躺著,像睡著了一般捌蚊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上近弟,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天缅糟,我揣著相機(jī)與錄音,去河邊找鬼祷愉。 笑死窗宦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的二鳄。 我是一名探鬼主播赴涵,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼订讼!你這毒婦竟也來了髓窜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤欺殿,失蹤者是張志新(化名)和其女友劉穎寄纵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脖苏,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡程拭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棍潘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恃鞋。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖亦歉,靈堂內(nèi)的尸體忽然破棺而出恤浪,到底是詐尸還是另有隱情,我是刑警寧澤肴楷,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布资锰,位于F島的核電站,受9級特大地震影響阶祭,放射性物質(zhì)發(fā)生泄漏绷杜。R本人自食惡果不足惜直秆,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鞭盟。 院中可真熱鬧圾结,春花似錦、人聲如沸齿诉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粤剧。三九已至歇竟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抵恋,已是汗流浹背焕议。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留弧关,地道東北人盅安。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像世囊,于是被迫代替她去往敵國和親别瞭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,587評論 2 350

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