Android平台上長連線的實現

2021-09-26 20:26:54 字數 819 閱讀 4731

為了不讓nat表失效,我們需要定時的發心跳,以重新整理nat表項,避免被淘汰。

android上定時執行任務常用的方法有2種,一種方法用 timer,另一種是alarmmanager。

android 的 timer 類可以用來計畫需要迴圈執行的任務,timer 的問題是它需要用 wakelock 讓 cpu 保持喚醒狀態,這樣會大量消耗手機電量,大大減短手機待機時間。這種方式不能滿 足我們的需求

alarmmanager 是 android 系統封裝的用於管理 rtc 的模組,rtc (real time clock) 是乙個獨 立的硬體時鐘,可以在 cpu 休眠時正常執行,在預設的時間到達時,通過中斷喚醒 cpu。

這意味著,如果我們用 alarmmanager 來定時執行任務,cpu 可以正常的休眠,只有在需要運 行任務時醒來一段很短的時間。極光推送的 android sdk 就是基於這種技術實現的。

當有大量的手機終端需要與伺服器維持長連線時,對伺服器的設計會是乙個很大的挑戰。

假設一台伺服器維護10萬個長連線,當有1000萬使用者量時,需要有多達100臺的伺服器來維護 這些使用者的長連線,這裡還不算用於做備份的伺服器,這將會是乙個巨大的成本問題。那就 需要我們盡可能提高單台伺服器接入使用者的量,也就是業界已經討論很久了的 c10k 問題。

標題針對這個問題,我們專門成立了乙個專案,命名為c2000k,顧名思義,我們的目標是單機維 持200萬個長連線。最終我們採用了多訊息迴圈、非同步非阻塞的模型,在一台雙核、24g記憶體 的伺服器上,實現峰值維持超過300萬個長連線。

穩定維護長連線是推送平台的乙個基礎,極光推送團隊將會在這方面長期投入,以保證使用者 能有效的節省電量、流量,同時資料能實時送達。

CMMB在Android平台上的實現步驟簡介

前段時間完成了android平台上cmmb的實現,現將實現步驟簡單介紹如下。分兩個step來實現 一 基於530頻點 北京 cctv news臺清流頻道 寫死乙個頻點 乙個清流頻道 的除錯 1 在android上調通cmmb driver和firmware,使其有正確的輸出。2 ffmpeg在and...

iPhone平台上的json framework

當我們在開發iphone應用程式時,必然會對cocoa touch的平台功能感到不足,在接下來的幾篇文章中,筆者將介紹一些在cocoa上熱門的第三方函式庫,還請多多指教!在所有的第三方函式庫中,最有名且被廣泛使用的不外乎便是json framework了,就連iphone os本身也有用到這個函式庫...

WinCE平台上的DMA

ceddk提供了dma的相關函式,在ceddk ddk dma ddk dma.c中定義。最有用的就兩個函式,halallocatecommonbuffer 和halfreecommonbuffer 分別用於為dma申請和釋放記憶體。1 首先介紹一下會用到的dma介面卡結構,在ceddk.h中定義,...