FPNN Technology Ecosystem 介紹

FPNN Technology Ecosystem 介紹

FPNN 是什麼?

一個全功能輕量級RPC框架,一種協議,一套技術體系。

又有人重複製造輪子?

沒有人願意重複製造輪子。

但,當所有的輪子都不好使的時候,怎麼辦?

我知道,有心急的諸位現在已經在問,有應用案例嗎?有大規模商用嗎?

有,在後面我會一一列出。心急的可以先跳到後面,不著急的我們在繼續關於 FPNN 起源的話題。

起源

2014年秋,我們基礎設施團隊啟動了一個新的全球化項目。在團隊剛組建,沒有任何積累的情況下,我們根據以往的開發經驗,選擇了 fbThrift。不光是以前 ICE、ACE、Cobra 等 RPC 框架留下的陰影太重,更重要的原因是,fbThrift 支持 server push。

這正是我們需要的。

但一路走來,我們耗費了大量的資源來解決 fbThrift 本身的問題。十多年的經驗告訴我們,為了撐起公司的業務,我們必須擁有一款適合於我們自己的RPC框架。

2015年1月中,FPNN 項目啟動。

「輪子沒有最好的,只有最合適的。」

功能

當我們在尋找一個合適的 RPC 框架時,我們的期望是這樣的:

期望的 RPC 框架

但我們得到的往往是這樣的:

過於簡單的 RPC 框架

或者是這樣的:

過於繁瑣的 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 的設計理念,請參見: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?

github.com圖標

FPNN 其他語言的 SDK 請在 HighRAS 下查找。

我們的官網:

曲率科技|HighRAS - 全球實時消息與數據服務?

highras.ifunplus.cn圖標
推薦閱讀:

原味五缸鋼炮丨RS 3 Sportback小改款發布
加解密(Encryption)& 哈希(Hash)演算法----入門指引
最速大佬級座駕-寶馬M760Li xDrive
高性能領域另一個信仰字母-LEXUS F

TAG:RPC框架 | C | 高性能 |