FPNN一句話總結:
沒有人想重複製造輪子。
但,當所有的輪都不好使的時候,該怎麼辦?
鑑於先前的專案使用Thrift開發遇到了太多的坑,耗費大量的資源解決Thrift本身問題。
基於對公司基礎架構工具的準備及技術積累,結合先前對ICE、ACE、Codra等知名RPC框架的使用經驗,於是決定開發一個更適合公司業務及基礎架構的RPC框架。
輪子沒有最好,只有最適合。
RPC框架也是一樣。
支援IPv4
支援IPv6
支援TCP 二進位私有協議
支援UDP 二進位私有協議
支援可靠UDP 鏈接
支援可靠/不可靠UDP 資料混合發送
支持HTTP 1.1 (選擇性支持)
支援WebSocket
支援SSL/TLS
支援msgpack 編碼
支援Json 格式
支援可選參數
支援不定類型參數
支援不定長度不定類型參數
支援介面灰階相容
支援TCP 二進位私有協定和HTTP Json 格式互轉
支援Server Push
支援非同步操作
支援同步操作
支援Lambda 函數
支援動態調整系統層級參數
支援動態調整框架層級參數
支援即時查看服務運行狀態
支援即時查看各參數狀態
支援failover
支援統一Log 匯總
支援優雅退出
支援統一處理異常
支援相同連接埠多種協定(TCP/HTTP/WebSocket)
支持應答提前返回
支援應答異步返回
支援請求回應時間統計
支援QPS 統計
支援慢請求統計
支援優先執行系統內建指令
支援AES 加密
支援ECDH 秘鑰交換
支援128 位元或256 位元秘鑰
支援IP 白名單
支援IP 段白名單
支援存取用戶自訂介面時的加密限制
支援存取用戶自訂介面時的內網限制
在FPNN 技術生態中,提供以下額外功能
壓力測試(v1.0.0):
TCP 資料概要
同一區域網路
機型 | 虛擬CPU | 記憶體(GB) | 連結數量 | QPS | 平均回應時間(usec) |
---|---|---|---|---|---|
AWS m5.xlarge | 4 | 16 | 1000 | 49,708 | 335 |
--- | --- | --- | --- | --- | --- |
AWS m5.xlarge | 4 | 16 | 130 | 227,919 | 12,854 |
AWS m5.xlarge | 4 | 16 | 1,500 | 148,959 | 10,403 |
AWS m5.xlarge | 4 | 16 | 2,000 | 99,552 | 356 |
AWS m5.xlarge | 4 | 16 | 3,000 | 149,615 | 27,456 |
洲際傳輸:德國法蘭克福到美國西部俄勒岡
機型 | 虛擬CPU | 記憶體(GB) | 連結數量 | QPS | 平均回應時間(usec) | ping/2 (msec) |
---|---|---|---|---|---|---|
AWS m5.xlarge | 4 | 16 | 10 | 17,921 | 147,825 | 137 |
--- | --- | --- | --- | --- | ---- | --- |
AWS m5.xlarge | 4 | 16 | 190 | 338,601 | 151,772 | 139 |
AWS m5.xlarge | 4 | 16 | 700 | 339,240 | 183,541 | 136 ~ 137 |
AWS m5.xlarge | 4 | 16 | 3,200 | 312,073 | 256,980 | 139 ~ 141 |
AWS m5.xlarge | 4 | 16 | 6,000 | 299,175 | 346,927 | 136 ~ 137 |
UDP 資料概要
同一區域網路
機型 | 虛擬CPU | 記憶體(GB) | 連結數量 | QPS | 平均回應時間(usec) |
---|---|---|---|---|---|
AWS m5.xlarge | 4 | 16 | 10 | 17,628 | 199 |
--- | --- | --- | --- | --- | --- |
AWS m5.xlarge | 4 | 16 | 70 | 123,009 | 1,174 |
AWS m5.xlarge | 4 | 16 | 80 | 122,641 | 24,623 |
AWS m5.xlarge | 4 | 16 | 800 | 73,030 | 1,306 |
AWS m5.xlarge | 4 | 16 | 200 | 95,894 | 400 |
AWS m5.xlarge | 4 | 16 | 1,000 | 49,590 | 3,832 |
洲際傳輸:德國法蘭克福到美國西部俄勒岡
機型 | 虛擬CPU | 記憶體(GB) | 連結數量 | QPS | 平均回應時間(usec) | ping/2 (msec) |
---|---|---|---|---|---|---|
AWS m5.xlarge | 4 | 16 | 100 | 48,493 | 138,859 | 138 |
--- | --- | --- | --- | --- | ---- | --- |
AWS m5.xlarge | 4 | 16 | 60 | 107,528 | 139,968 | 140 |
AWS m5.xlarge | 4 | 16 | 800 | 79,503 | 139,974 | 138 ~ 139 |
海量連結(v1.0.0):
TCP 資料概要
機型 | 虛擬CPU | 記憶體(GB) | 連結數量 | QPS | 平均回應時間(usec) |
---|---|---|---|---|---|
AWS m5.2xlarge | 8 | 32 | 2,040,000 | 81,351 | 446 |
AWS m5.2xlarge | 8 | 32 | 2,040,000 | 137,294 | 4,985 |
AWS m5.2xlarge | 8 | 32 | 2,040,000 | 179,794 | 11,345 |
UDP 資料概要
機型 | 虛擬CPU | 記憶體(GB) | 連結數量 | QPS | 平均回應時間(usec) |
---|---|---|---|---|---|
AWS m5.2xlarge | 8 | 32 | 12,200 | 5,957 | 11,480 |
AWS m5.2xlarge | 8 | 32 | 19,000 | 721 | 1,857 |
具體效能介紹及更多數據請參考FPNN 效能報告
環境需求
作業系統 | 編譯器 |
---|---|
CentOS 7 | GCC/G++ 4.8.5 |
CentOS 8 | GCC/G++ 8 |
Ubuntu 20 | GCC/G++ 9 |
MacOS 11.5 | XCode/Apple clang 12 |
第三方函式庫依賴
編譯安裝FPNN框架
在專案根目錄下執行make
即可。
詳細可參考FPNN 安裝與集成
使用FPNN 框架開發
請參見
注意事項& 問題排查
注意事項請參閱FPNN 注意事項
問題排查請參考FPNN 問題排查
最佳實踐
中文文檔索引