国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

聚焦 | 高并發場景下分布式實時信令系統的架構實踐

BYXG_shengwang ? 來源:YXQ ? 2019-06-20 17:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在5 月 27 日舉行的 Qcon 廣州站上,聲網 Agora 資深技術架構師吉奇 以《高并發場景下分布式實時信令系統的架構實踐》作為話題,分享了 RTM SDK 背后的架構設計經驗。

以下為演講實錄:

大家好!我叫吉奇,來自聲網。現在負責聲網RTM 實時信令云服務后臺及SDK技術架構設計。這次演講會按照RTM的系統架構上的分布或子系統的層級關系來展開。

首先,RTM 是一個通用的消息系統,主要是為了解決實時場景下信令的低延遲和高并發問題。我們聲網是業務遍布全球的平臺,因此在所有的后臺設計中,把分區作為一個比較重要的事情來看。目前 RTM 有幾個大區域,有美洲、亞洲、東南亞、中國大陸,還有歐洲、非洲幾個大區。區與區之間相對獨立,每個區會有跨區傳輸網絡。每個區之間由三個子系統組成,首先是消息核心(Message Core),還有事件中心(Event Center),最后是應用服務(Application Services)。我會分別講一下各個子系統內部的架構實現,即消息核心、事件中心、應用服務和跨區網絡。

消息核心(Message Core)

首先是消息核心,它是目前成熟度最高,也是最復雜的子系統。在該系統里面有幾個主要的組件,首先有接入服務器、點對點消息轉發服務、頻道消息的轉發服務、簡單的狀態管理(包括用戶狀態和頻道狀態),還有頻道分布狀態服務器。

在消息核心,所有的服務都是分布式,沒有一個單點或者中心式的情況,因此可以保證高可用,并且性能方面可以支持高吞吐量和低延遲Messaging Core 有一個特點,具有非常大的擴展性,但是它的問題是只支持基本核心的功能,剩下的都要放在其它子系統中。

分布式的信息核心有幾個優勢特性:

?完全排除單點故障

?接近100%可用

?端到端延遲 < 100ms

?任何節點都可水平擴展

?支持數百萬人同頻道(無理論上限)

?大型活動中支持數百萬QPS消息下發

?核心功能超高響應

所謂核心功能,目前消息核心支持的功能是點對點消息、頻道消息,可以加入頻道、退出頻道。用戶也可以同時加入多個頻道,使用一些頻道管理的功能,比如獲取用戶屬性、頻道狀態,能查詢頻道中有多少人,其他用戶是否在線等基本功能。

在此,以點對點消息為例,和大家分享一下擴展性是怎么樣做的。首先 SDK 登錄系統的時候,會通過 DNS 來訪問我們的 AP 服務,AP 知道附近的邊緣節點 R 的地址,會根據當前的客戶端的地理分布,包括邊緣節點的負載情況來給 SDK 回一組地址。SDK 在拿到地址之后,可以登錄連接邊緣節點,然后發消息。這些消息到達邊緣節點后會投遞給本區的點對點消息轉發節點 F。F 知道本區內所有用戶登錄在哪個邊緣節點,這是由本區所有邊緣節點 R 上報給轉發節點 F 的。圖中的 U 是用戶在線狀態服務器,那么一個用戶給另外的用戶發消息,有三種情況,第一種情況,對端在線并且在同一個區里面,F 可以直接投遞;第二種情況對端在線但在別的區里面;第三種情況對端不在線。在后兩種情況中,消息轉發服務器 F 不知道該用戶的信息,也不知道在哪個節點上。這時候就可以通過 U 來獲取這些用戶狀態,因為 U 知道全網跨區情況下的用戶生命周期,也知道這個用戶是否在線,F 去問 U 是否在線,如果在線在哪個區里面,可以通過跨區投入到別的用戶。

這里的可擴展體現在哪里呢?首先,所有的節點都是可以水平擴展的,隨著業務量增長,可以增加部署。邊緣節點是可以隨意增加的,而核心節點 F 和 U 不能做任意的水平擴展,因為他們保留了一定的狀態,我們用了一個一致性哈希的分片方法,所以把所有用戶的賬號哈希之后產生一個 32 位的隨機數,想象把這些數放到一個環上,每個服務器各自產生一組隨機數,在環上均勻分布。這樣所有的消息會被映射到比自己的哈希值小的那一個服務器上面。所有的節點的 partition 都是可以動態地增加和減少的。假如說有一個核心服務器故障或者下架了,那么它可以重新分布到別的服務器上,實際上我們地消息核心中除了邊緣節點R之外還有十幾種核心節點,它們都是做了分片的。這就是所謂的可擴展性。

高可用怎么樣做呢?首先如上圖所示介紹一下頻道消息簡單的流程。假定邊緣服務器收到用戶的頻道消息,會把該消息投遞給 F,F 是點對點消息的轉發服務器,它看到是頻道消息的話會自動拋給 D,D 專門負責頻道消息分發,D 采用是級聯的模式,每一個區都有一組總的頻道消息分發服務器,在每個數據中心會有一組機房級別的代理。區域級根服務器發消息到機房級別的代理服務器,機房級服務器往該機房所有的邊緣節點 R 轉發,這樣可以保證在超大頻道下面的性能。現在有一個問題,之前我說了 U 是保存用戶的生命周期的,而頻道的生命周期與用戶不一樣,頻道不是一個特定的個體。比如說用戶要么在中國或美國,不可能同時在中國和美國,但頻道可以。尤其當頻道比較大的時候,分布會非常廣,很有可能是跨區頻道,甚至在中國、美國、歐洲都有用戶處于同一頻道。那么你該怎樣獲取某頻道的用戶分布呢?我們用頻道分布服務器 O 來處理。所有的 R 都會在本地頻道創建、銷毀的時候,把該事件通知給 O。O 把頻道分布的信息告訴頻道消息轉發服務 D,D 會從中獲得兩個信息,第一個信息是對于某頻道來說,在本區內該頻道的用戶分布在哪幾個邊緣服務器上,第二個信息是可以知道該頻道是否跨區,如果跨區的話,又是哪幾個區域。D 通過第一個信息可以判斷在本區投遞給哪些用戶,通過第二信息可以知道需要通過跨區傳輸網絡投遞給哪些別的區域的 D,讓它們在別的區域來負責下發。

在這里高可用主要體現在 O 是對等部署的。我們每一條消息或者每一次狀態改變或者每一個查詢請求都會有一個全局唯一的 ID,這個 ID 由兩部分組成,第一部分保證其唯一性,第二部分保證在某一個 session 之內前后的請求有一個單調遞增的大小關系。這樣的話,從多臺對等部署的 O 同步給 D 的頻道分布信息,就相當于要保證一個單一來源但多路徑的信息同步的一致性問題,我們是可以通過這個 ID 來做到版本控制和除重從而保證一致的。當然對等部署只是其中一個手段,還有很多別的模式用到不同的服務上面,比如事件中心的高可用就是由雙數據中心主備切換來保證的。但消息核心中的服務一般都是采用的比較激進的對等部署的方式,這樣的好處是任何一個服務器掛了都不會有切換的事件,保證服務 100% 可用。

事件中心(Event Center)

Messaging Core 下面是 Event Center。就像我在開頭說到的,Messaging Core 有一個限制,它是靠多重冗余和相對激進的策略來保證低延遲和高可靠的系統,因此很多擴展的功能沒有辦法做,所以會通過 Event Center 來支持這些擴展功能。

舉個例子,比如用戶屬性是在消息核心中完成的,而頻道屬性在消息核心中就做不了。因為頻道屬性和用戶屬性不一樣的地方在于,對于某一個用戶,他的用戶屬性只有他自己能夠編輯,他是該屬性的主人,由該用戶的客戶端來保證屬性的一致性。所以就算在服務端有多重冗余的情況下,該屬性也可以達到最終一致。但頻道屬性不同。頻道里可能同時有多個人在同時編輯頻道屬性,也可能同時有多個人在讀該屬性,怎樣達到一致性?這里就需要對頻道消息的編輯操作有一個統一的來源。但這個來源又不能是單點,否則很容易出故障也很容易成為瓶頸。

因此我們決定將所有的事件,包括狀態改變、消息的投遞都統一寫到 Event Center 里面。Event Center 分為兩個部分,Event Storage 和 Event Queue。我們的實現原則是傳輸與狀態隔離,數據與索引隔離。傳輸是 Messaging Core 和跨區傳輸網絡來負責,狀態是存在 Event Center,而 Application Services 是消費的狀態,這樣可以做到傳輸與狀態的隔離。

那什么叫數據與索引隔離呢?對于所有的事件來說我們都會把它的 meta data,或者叫事件的 header 放到 Event Queue 里,這樣消費者去消費事件隊列的話就會很快,而事件的內容本身則放在 Event Storage。我之前說過對于 RTM 的所有消息、事件、查詢都有一個ID,這樣的話就能建立一個事件 Header - 事件ID - 事件Body 之間的映射。消費者可以通過 Event Queue 建立對事件 Header 的索引,通過這個索引來做各種業務邏輯,然后再通過 ID 來找到對應的事件 Body。比如對于歷史消息的條件查詢就是這么做的。在這種模式下我們可以做到比如查詢當前在線的所有用戶里屬性屬性滿足 "gender:female","age:24" 的用戶。

應用服務(Application Services)

Application Services 是一個微服務的架構,在 Event Center 的支持下可以支持很多的業務邏輯。還包括實時的監控、計費、問題調查、分析等。它的好處是易于開發,我們通過 Event Center 把傳輸和事件解耦了,讓我們可以更容易地實現更多的功能。目前已經落地的功能包括頻道屬性和歷史消息,還有很多其他的功能在開發中。

下面講一下跨區傳輸網絡,它負責所有區域到區域之間的通信。我們有去中心化地實時路由計算策略,會根據延遲和負載來動態挑選跨區路由。實際上你發現在很多場景下面,跨境傳輸是最難的問題,尤其是在教育場景下。例如,老師在東南亞某個地方,學生在國內,他們之間建立連接、收發一些消息的過程中,穩定性和到達率會遇到很多問題。聲網全球有 200 多個數據中心,我們通過智能路由來進行實時傳輸,比如中國到菲律賓,當前網絡不好的時候,我們可能會通過新加坡進行中轉,如果新加坡到菲律賓好但是到國內不好,我們會也許會通過國內某個機房先中轉到新加坡。RTM SDK 今年上線后,從運營數據來看高峰期的跨洋平均 RTT 是 250ms,該數據已經比較接近實際網絡傳輸延遲。

如上圖所示是簡化版的跨區傳輸網絡,這個算法有點類似于 BGP 算法。自治域與自治域之間全連接,每個節點都有自己的路由表,每個節點會定期廣播自己的路由表到別的節點。比如 A 知道到自己到 B、C、D 的延遲是多少,一輪廣播之后 B、C、D 就會知道自己如果通過 A,到其他節點的延遲會有多少。各節點會選擇延時較短的路線傳輸。當然,實際策略肯定不會這么簡單,因為如果所有節點都采用相同策略,流量可能會匯集到某一些節點上去,在流量高峰期時會對這些節點造成沖擊。因此我們有一套很復雜的策略來進行負載均衡。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 信令
    +關注

    關注

    0

    文章

    41

    瀏覽量

    14429
  • 架構
    +關注

    關注

    1

    文章

    532

    瀏覽量

    26590

原文標題:高并發場景下分布式實時信令系統的架構實踐

文章出處:【微信號:shengwang-agora,微信公眾號:聲網Agora】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    機載系統智能化的基石:分布式網絡控制系統與容器虛擬化技術的深度融合實踐

    創新的“云-邊-端”分布式智能架構,該架構深度融合了分布式綜合模塊化航電系統、邊緣計算、容器化軟件及確定性網絡等前沿技術。
    的頭像 發表于 01-27 09:13 ?514次閱讀
    機載<b class='flag-5'>系統</b>智能化的基石:<b class='flag-5'>分布式</b>網絡控制<b class='flag-5'>系統</b>與容器虛擬化技術的深度融合<b class='flag-5'>實踐</b>

    彈性負載均衡:現代 IT 架構可用與并發基石

    IT架構中不可或缺的關鍵組件,負載均衡通過在網絡環境中智能分散工作負載,有效提高系統的響應速度、吞吐量與可靠性,尤其在大型分布式系統和云計算環境中發揮著至關重要的作
    的頭像 發表于 01-20 09:58 ?142次閱讀
    彈性負載均衡:現代 IT <b class='flag-5'>架構</b>的<b class='flag-5'>高</b>可用與<b class='flag-5'>高</b><b class='flag-5'>并發</b>基石

    怕故障?怕擴展難?分布式可視化控制:給足場景安全

    在數字化浪潮席卷各行各業的今天,指揮中心的實時調度、會議中心的高效協同、培訓中心的沉浸展示、調度中心的精準響應 —— 這些場景都離不開一套 “穩、全、靈、清” 的音視頻通信與數據處理系統
    的頭像 發表于 11-09 17:27 ?544次閱讀

    從 “單一控制” 到 “智能可視”:分布式系統與傳統音視頻控制系統的關鍵區別

    和通信。而傳統的音視頻控制系統通常采用集中式架構,將所有的音視頻處理、數據通信等功能集中在一臺服務器上進行處理。 2.靈活性:分布式可視化控制系統由于采用了
    的頭像 發表于 10-21 10:52 ?393次閱讀

    分布式光伏環境監測站的技術架構與應用實踐

    分布式光伏環境監測站的技術架構與應用實踐 柏峰【BF-GFQX】一、系統技術架構解析 分布式光伏
    的頭像 發表于 10-13 10:05 ?581次閱讀
    <b class='flag-5'>分布式</b>光伏環境監測站的技術<b class='flag-5'>架構</b>與應用<b class='flag-5'>實踐</b>

    國際標準在分布式能源并網場景中的應用現狀和發展趨勢是怎樣的?

    國際標準在分布式能源并網場景中的應用現狀呈現 技術成熟度、跨區域滲透加速、多場景融合深化 的特點,而發展趨勢則聚焦 標準動態更新、技術跨界
    的頭像 發表于 09-18 17:43 ?1055次閱讀
    國際標準在<b class='flag-5'>分布式</b>能源并網<b class='flag-5'>場景</b>中的應用現狀和發展趨勢是怎樣的?

    光伏監控案例分享!奉賢平食品4.4MW分布式光伏電站:實時監控+智能運維

    摘 要:在“雙碳”和新型電力系統建設背景分布式光伏接入比例不斷提高,對配電網電壓、調度運行及調峰等環節造成強烈沖擊。本文設計包含平臺層、設備層二層架構體系的
    的頭像 發表于 09-01 17:49 ?1470次閱讀
    光伏監控案例分享!奉賢平<b class='flag-5'>高</b>食品4.4MW<b class='flag-5'>分布式</b>光伏電站:<b class='flag-5'>實時</b>監控+智能運維

    【節能學院】Acrel-1000DP分布式光伏監控系統在奉賢平食品 4.4MW 分布式光伏中應用

    摘要:在“雙碳”和新型電力系統建設背景分布式光伏接入比例不斷提高,對配電網電壓、調度運行及調峰等環節造成強烈沖擊。本文設計包含平臺層、設備層二層架構體系的
    的頭像 發表于 08-23 08:04 ?3496次閱讀
    【節能學院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏監控<b class='flag-5'>系統</b>在奉賢平<b class='flag-5'>高</b>食品 4.4MW <b class='flag-5'>分布式</b>光伏中應用

    分布式光伏發電監測系統技術方案

    分布式光伏發電監測系統技術方案 柏峰【BF-GFQX】一、系統目標 :分布式光伏發電監測系統旨在通過智能化的監測手段,實現對
    的頭像 發表于 08-22 10:51 ?3199次閱讀
    <b class='flag-5'>分布式</b>光伏發電監測<b class='flag-5'>系統</b>技術方案

    Ceph分布式存儲系統解析

    在當今數據爆炸的時代,企業對存儲系統的需求日益增長,傳統的集中式存儲已經無法滿足大規模數據處理的要求。分布式存儲系統應運而生,而Ceph作為開源分布式存儲
    的頭像 發表于 07-14 11:15 ?997次閱讀

    電力系統分布式故障實時定位技術——精準抗干擾快速響應

    在電力系統中,分布式故障的快速定位與隔離對保障電網穩定運行至關重要。傳統的故障檢測方法受限于干擾強、定位延遲的問題,難以滿足現代智能電網的高可靠性需求。我們的分布式故障
    的頭像 發表于 07-11 10:43 ?584次閱讀
    電力<b class='flag-5'>系統分布式</b>故障<b class='flag-5'>實時</b>定位技術——精準抗干擾快速響應

    分布式光伏發電監控系統

    、低壓并網分布式光伏電站的升壓系統、光伏逆變器等設備進行全面監控,采集微機保護裝置、自動控制設備、電能質量監測裝置、光伏逆變器、一體化電源等設備數據,并提供有功功率控制(AGC)、電壓無功綜合
    的頭像 發表于 06-25 13:41 ?946次閱讀
    <b class='flag-5'>分布式</b>光伏發電監控<b class='flag-5'>系統</b>

    多通道電源管理芯片在分布式能源系統中的優化策略

    理、可靠性設計以及系統集成為主軸展開分析,為分布式能源系統效能提升提供堅實理論基石與創新實踐路徑。 關鍵詞: 多通道電源管理芯片;分布式能源
    的頭像 發表于 05-16 15:22 ?897次閱讀

    從監控到落地:分布式光伏系統方案及多元場景應用指南

    安科瑞+18721098782 分布式光伏監控系統方案 1. 系統架構 分布式光伏監控系統一般按
    的頭像 發表于 05-16 10:39 ?1150次閱讀
    從監控到落地:<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系統</b>方案及多元<b class='flag-5'>場景</b>應用指南

    輸電線路分布式故障定位裝置的原理、優勢與應用場景解析

    輸電線路分布式故障定位裝置的原理、優勢與應用場景解析
    的頭像 發表于 05-16 09:25 ?960次閱讀