FPNN Technology Ecosystem 介紹
FPNN 是什麼?
一個全功能的輕量級RPC框架,一種協議,一套技術體系。
又有人重複製造輪子?
沒有人願意重複製造輪子。
但,當所有的輪子都不好使的時候,怎麼辦?
我知道,有心急的諸位現在已經在問,有應用案例嗎?有大規模商用嗎?
有,在後面我會一一列出。心急的可以先跳到後面,不著急的我們在繼續關於 FPNN 起源的話題。
起源
2014年秋,我們基礎設施團隊啟動了一個新的全球化項目。在團隊剛組建,沒有任何積累的情況下,我們根據以往的開發經驗,選擇了 fbThrift。不光是以前 ICE、ACE、Cobra 等 RPC 框架留下的陰影太重,更重要的原因是,fbThrift 支持 server push。
這正是我們需要的。
但一路走來,我們耗費了大量的資源來解決 fbThrift 本身的問題。十多年的經驗告訴我們,為了撐起公司的業務,我們必須擁有一款適合於我們自己的RPC框架。
2015年1月中,FPNN 項目啟動。
「輪子沒有最好的,只有最合適的。」
功能
當我們在尋找一個合適的 RPC 框架時,我們的期望是這樣的:
但我們得到的往往是這樣的:
或者是這樣的:
我們不希望太繁瑣,我們也不希望太過於簡單。
於是我們定下了以下功能:
FPNN feature 列表:
協議
- 支持 IPv4
- 支持 IPv6
- 支持 TCP 二進位私有協議
- 支持 HTTP 1.0
- 支持 WebSocket
- 支持 msgpack 編碼
- 支持 json 格式
- 支持 可選參數
- 支持 不定類型參數
- 支持 不定長度不定類型參數
- 支持 介麵灰度兼容
- 支持 TCP 二進位私有協議和 HTTP Json 格式互轉
功能
- 支持 Server Push
- 支持 非同步操作
- 支持 同步操作
- 支持 Lambda 函數
- 支持 動態調整系統級參數
- 支持 動態調整框架級參數
- 支持 實時查看服務運行狀態
- 支持 實時查看各參數狀態
- 支持 failover
- 支持 統一Log匯總
- 支持 優雅退出
- 支持 統一處理異常
- 支持 同一埠多種協議(TCP/HTTP/WebSocket)
- 支持 應答提前返回
- 支持 應答非同步/延後返回
- 支持 請求響應時間統計
- 支持 QPS 統計
- 支持 慢請求統計
- 支持 優先執行系統內置命令
安全
- 支持 AES 加密
- 支持 ECDH 秘鑰交換
- 支持 128 位或 256 位秘鑰
- 支持 IP 白名單
- 支持 IP 段白名單
- 支持 訪問用戶自定義介面時的加密限制
- 支持 訪問用戶自定義介面時的內網限制
此外,結合 FPNN 技術生態,還具備以下功能:
- 支持 集群註冊
- 支持 集群管理
- 支持 數據協調
- 支持 數據同步
- 支持 大規模分散式測試部署、監控、協調
- 支持 FPNN 集群透明代理
- 支持 MySQL 透明代理
- 支持 數據行級緩存
我們希望它簡單易用
需要的時候足夠強大
配合 FPNN 技術生態,還可以發揮出更強大的功能
這就是 FPNN。
最新的 FPNN 功能列表,請參見:FPNN 功能列表
FPNN 的設計理念,請參見:FPNN 設計理念
FPNN 安全體系,請參見:FPNN 安全體系
穩定
我們已經有數個基於 FPNN 開發的服務,在DAU超過100萬的項目中,經持續運行1年半以上,未曾重啟。
性能
- 亞馬遜 AWS 4 核機器上,可達35萬QPS
- 亞馬遜 AWS 8 核機器上,可達50萬QPS
- 亞馬遜 AWS 4 核機器上,可達108萬長鏈接
具體性能數據,請參見 doc 文件夾中的相關文檔:FPNN 文檔
FPNN 技術生態
- 集群管理服務
- 對等分散式集群管理系統
- CAP 可用性優先
- 支持網路分裂與合併
- 支持實時變動通知
- 支持多項目
- 支持項目內同類服務分組
- 資料庫路由代理服務
- MySQL 數據前端代理
- 屏蔽所有分庫分表細節。對高度複雜的分庫分表操作,如同對單庫單表操作
- 支持讀寫/主從分離
- 支持長鏈接
- 支持鏈接池
- 支持多 sharding 並發查詢和匯總
- 資料庫行級緩存服務
- 資料庫前端高速緩存
- 服務即數據源,負責數據讀取與落地,無需再次操作資料庫
- 日誌系統
- 高並發高性能日誌集群
- 支持日誌轉發
- 通用集群網關
- 對外屏蔽內部所有結構拓撲
- 支持動態模式和受限模式
- 支持多種路由模式
- 分散式ID生成服務
- 分散式並發生成全局唯一 ID
- Dispatch 服務
- 根據服務壓力,動態分配目標服務
- 分散式測試框架及套件
- 多點自動部署
- 多點控制命令傳遞
- 多點系統狀態監控
- 實時消息系統服務
- 全球 220 毫秒以內消息送達
- 中國國內 40 毫秒內消息送達
- 並發承載能力 5000 萬
- 日均消息量 240 億條
- 消息處理峰值 2600 億條/天
- 服務可用性 99.99%
- 全球覆蓋
- 請參見官網介紹
- Push 服務
- 支持 APNS
- 支持 GCM
- 支持批量推送
- 支持分組/topic 推送
- 全球覆蓋
最新 FPNN 生態體系,請參見:FPNN 技術生態
應用案例 & 合作夥伴
視頻直播
- MeMe 直播
- 台灣最熱門的直播應用
- 目前進軍印度、日本市場
SLG 類遊戲
- 阿瓦隆之王(中國區)
- 火槍紀元
模擬經營類遊戲
- 開心莊園
- 天天農場
- 魔法王國
FPNN 開源地址
highras/fpnn
FPNN 其他語言的 SDK 請在 HighRAS 下查找。
我們的官網:
曲率科技|HighRAS - 全球實時消息與數據服務
推薦閱讀:
※原味五缸鋼炮丨RS 3 Sportback小改款發布
※加解密(Encryption)& 哈希(Hash)演算法----入門指引
※最速大佬級座駕-寶馬M760Li xDrive
※高性能領域另一個信仰字母-LEXUS F