基礎架構 鄭樹新 愛奇藝高可用高性能服務器編程架構實踐 - v6_第1頁
基礎架構 鄭樹新 愛奇藝高可用高性能服務器編程架構實踐 - v6_第2頁
基礎架構 鄭樹新 愛奇藝高可用高性能服務器編程架構實踐 - v6_第3頁
基礎架構 鄭樹新 愛奇藝高可用高性能服務器編程架構實踐 - v6_第4頁
基礎架構 鄭樹新 愛奇藝高可用高性能服務器編程架構實踐 - v6_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

務器編程架構實踐2017.11背景?對于高可靠、高可用框架的要求?1、應用服務的不間斷性:?1.1、服務程序可在線熱升級?1.2、數據及配置可在線重新加載?2、應用服務可運維可監控:?2.1、服務異常自動重啟?2.2、服務異常自動報警?2.3、服務配置項一致性?2.4、服務進程統一管理?為什么需要高并發、高性能框架??1、互聯網尤其是移動互聯網的快速蓬勃發展對服務端應用的壓力與日俱增?2、高性能、低延遲的業務需求對應用服務提出了更高的要求?3、內網中RPC通信、連接池的大量存在要求服務端支持大并發、高性能AclAcl服務器編程框架功能項服務器模型多進程服務模型、多線程服務模型、多線程服務模型、非阻塞服務模型、觸發器服務模型、網絡協程服務模型安全運行機制嚴格的用戶權限限制,防止越權操作;IP地址訪問控制,防止非法地址訪問配置驅動方式獨立的服務配置文件,豐富的配置項:進程數、線程數、防問控制、監聽地址、進程預啟動等均由配置項決定服務監聽支持綁定TCP套接口、UDP套接口以及UNIX域套接口,支持同一進程同時綁定多個地址及端口服務管理支持應用服務在線熱升級,升級過程不會中斷服務;提供WEB管理接口及管理工具,方便遠程管理運維監控提供應用服務進程管理模塊,在線監控各個應用服務的存活狀態,對異常崩潰的服務實時報警運行方式生產環境由acl_master服務管理進程控制管理;開發環境可以手工單獨運行開發調試用服務器生成向導直接生成服務器程序框架;用valgrind檢查服務程序的內存問題WEBGAMECDN…CHATMAIL應用層服務層協議層通信層基礎層ProcessesAioUdpibersTriggersmasterissmtpmemcachebeanstalksqlpostgressqlcmpsqliteaiosslstreamase64sonxmluucodedatastructurethreadgfibermemorycoderPTPollTQueue…適配層FreeBSDLinuxWindowsAndroidThreadsevents(select/poll/epoll/kqueue/iocp/wmsg)configuremimecharsetOSAPIMacOSiWEBGAMECDN…CHATMAIL應用層服務層協議層通信層基礎層ProcessesAioUdpibersTriggersmasterissmtpmemcachebeanstalksqlpostgressqlcmpsqliteaiosslstreamase64sonxmluucodedatastructurethreadgfibermemorycoderPTPollTQueue…適配層FreeBSDLinuxWindowsAndroidThreadsevents(select/poll/epoll/kqueue/iocp/wmsg)configuremimecharsetOSAPIMacOSibjl1、每個網絡連接對應一個協程2、遇到網絡IO讀/寫堵點就切走相應協程3、將IO句柄由epoll協程進行監控4、IO準備好時其對應協程重新加入調度隊列1、每個網絡連接對應一個協程2、遇到網絡IO讀/寫堵點就切走相應協程3、將IO句柄由epoll協程進行監控4、IO準備好時其對應協程重新加入調度隊列絡協程網絡協程應用場景?一、問答式應用服務?基于HTTP協議的服務應用,諸如:網站?基于SMTP/POP3/IMAP協議的服務應用?二、生產者–消費者類應用服務?如消息隊列類應用?三、reactor和proactor兩種模式的結合?統一的事件引擎監控所有的網絡連接,有一個連接就緒時創建協程獨立處理?此類應用如聊天服務、游戲服務等無狀態的應用服務?四、大并發類應用服務?因為通過協程方式,將上層應用的堵塞式在底層轉為非阻塞模式,所以非常容易以較低資源支持大并發類應用?如內網的多數應用服務為提高效率都支持連接池模式,需要服務端支持非常大的并發?五、網絡限流?在協程中可以直接sleep,非常容易控制網絡流量愛奇藝高性能高可用服務的工程實踐?1、如何支撐超5億月活用戶的視頻收看??2、如何達到熱播劇的快速分發??3、如何達到視頻流的快速開播??---不能讓用戶多等一秒?4、如何針對大文件進行有效回源?這是Squid/ApacheTraffic/Nginx目前都未解決的問題CDN回源系統開發歷程???????????????遇到的坑:uidApacheTrafficNginx2、多線程/多協程方式下的各種死鎖3、緩存對象提前釋放導致的各種崩潰4、內存“暴漲”導致的瞬間崩潰5、用戶跳躍式點播視頻導致回源帶寬的大量浪費1、合并相同請求塊數據,支持緩存部分數據2、優化線程鎖及協程鎖設計,避免死鎖3、有效隔離緩存對象的內存隊列4、內部禁止大內存分配,同時采用sendfile等零拷貝技術,內存僅占幾百兆5、調整數據視頻回源優先級,優先保證在線收看請求6、支持流式數據傳輸,提升視頻開播速度緩存管理器協程線程協程協程線程協程協程線程管理器線程管理器任務管理器線程協程協程消息管理器連接管理器Acl服務基礎框架緩存管理器協程線程協程協程線程協程協程線程管理器線程管理器任務管理器線程協程協程消息管理器連接管理器Acl服務基礎框架磁盤管理器愛奇藝CDN回源軟件架構客戶端連接連接協程池下載協程池協程線程協程協程協程線程協程協程愛愛奇藝CDN回源方案解析特性說明高并發支持高并發接入,同時簡化程序設計高性能高吞吐O低回源源及部分緩存,大大降低回源帶寬開播快式,提升視頻開播速度可擴展于擴展新功能維護框架,易管理,好維護消息接收節點消息接收節點消息接收節點消息接收節點消息發送節點消息發送節點錯。愛奇藝CDN分發同步系統架構愛奇藝高性能DNS?愛奇藝為什么要開發自己DNS??開發DNS面臨的挑戰:?2、QPS與View數量無關?3、Zone頻繁更新不影響正常服務?4、主從切換無感知數據加載線程數據加載線程數據加載線程數據加載線程DNSUDP請求DNSTCP請求一、UDP服務進程:2、采用recvmmsg/sendmmsg多讀多寫方式,提升每次IO包收發能力3、采用內存預分配策略,減少內存動態分配/釋放時的“鎖”沖突二、TCP服務進程:每個TCP請求分配一個協程進行業務處理三、UDP及TCP服務進程在更新數據時采用RCU方式四、UDP及TCP服務進程均由master管理進程統一管理愛奇藝高性能DNS架構DNS數據 工作線程 工作線程工作協程工作協程 工作線程UDP進程TCP進程工作協程工作協程 工作線程工作協程 Master管理進程愛愛奇藝高性能DNS架構分析優勢說明高性能啟用Linux3.0內核的REUSEPORT功能,提升多線程并行收發包的能力采用Linux3.0內核的recvmmsg/sendmmsgAPI,提升單次IO數據包收發能力采用內存預分配策略,減少內存動態分配/釋放時的“鎖”沖突針對TCP服務模式,采用網絡協程框架,最大化TCP并發怎能能力高可用采用RCU(ReadCopyUpdate)方式更新視圖數據及配置項,無需停止服務,且不影響性能網卡IP地址變化自動感知(即可自動添加新IP或摘除老IP而不必停止服務)采用Keepalived保證服務高可用管理由Aclmaster服務管理模塊管理DNS進程,控制DNS進程的啟動、停止、重讀配置/數據、異常重啟及異常報警等愛奇藝生產環境數據真實展現?1、視頻卡頓比<2%?2、CDN視頻回源帶寬<1%?3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論