色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

freeswitch架構原理

林國瑞2年前12瀏覽0評論

freeswitch架構原理?

FreeSWITCH 使用線程模型來處理并發請求,每個連接都在單獨的線程中進行處理。這不僅能提供最大強度的并發,更重要的是,即使某路電話發生問題,也只影響到它所在的線程,而不會影響到其它電話。FreeSWITCH 的核心非常短小精悍,這也是保持穩定的關鍵。所有其它功能都在外圍的模塊中。模塊是可以動態加載(以及卸載)的,在實際應用中可以只加載用到的模塊。外圍模塊通過核心提供的 Public API 與核心進行通信,而核心則通過回調機制執行外圍模塊中的代碼。

核心

FS Core 是 FreeSWITCH 的核心,它包含了關鍵的數據結構和復雜的代碼,但這些代碼只出現在核心中,并保持了最大限度的重用。外圍模塊只能通過 API 調用核心的功能,因而核心運行在一個受保護的環境中,核心代碼都經過精心的編碼和嚴格的測試,最大限度地保持了系統整體的穩定。

核心代碼保持了最高度的抽象,因而它可以調用不同功能,不同協議的模塊。同時,良好的 API 也使得編寫不同的外圍模塊非常容易。

數據庫

FreeSWITCH 的核心除了使用內部的隊列、哈希表存儲數據外,也使用外部的 SQL 數據庫存儲數據。當前,系統的核心數據庫使用 SQLite,默認的存儲位置是 db/core.db 。 使用外部數據庫的好處是--查詢數據不用鎖定內存數據結構,這不僅能提供性能,而且降低了死鎖的風險,保證了系統穩定。命令 show calls、show channels 等都是直接從數據庫中讀取內容并顯示的。由于 SQLite 會進行讀鎖定,因此不建議直接讀取核心數據庫。

系統對數據庫操作做了優化,在高并發狀態時,核心會盡量將幾百條 SQL 一齊執行,這大大提高了性能。但在低并發的狀態下執行顯得稍微有點慢,如一個 channel 已經建立了,但還不能在 show channels 中顯示;或者,一個 channel 已經 destroy 了,還顯示在 show channels 中。但由于這些數據只用于查詢,而不用于決策,所以一般沒什么問題。

除核心數據庫外,系統也支持使用 ODBC 方式連接其它數據庫,如 PostgreSQL、MySQL等。某些模塊,如 mod_sofia、mod_fifo等都有自己的數據庫(表)。如果在 *nix 類系統上使用 ODBC,需要安裝 UnixODBC,并進行正確的配置,