宜信開源專注業務邏輯的輕量級服務框架nextsystem4
宜信於2019年3月29日正式開源nextsystem4(以下簡稱“NS4”) 系列模組。此次開源的NS4系列模組是圍繞當前支付系統笨重、程式碼耦合度高、維護成本高而產生的分散式業務系統解決方案。NS4系列框架允許建立複雜的流程/業務流,對於業務服務節點的實現可串聯,可分散式。其精簡、輕量,實現了“脫容器”(不依賴tomcat、jetty等容器)獨立執行。NS4系列框架的設計理念是將業務和邏輯進行分離,開發人員只需透過簡單的配置和業務實現就可以實現邏輯複雜、效能高效、功能穩定的業務系統。
NS4系列包括4個開源模組,分別是: ns4_frame 分散式服務框架 、 ns4_gear_idgen ID 生成器元件(NS4框架Demo示例) 、 ns4_gear_watchdog 監控系統元件(服務守護、應用效能監控、資料採集、自動化報警系統) 和 ns4_chatbot通訊元件 。
NS4系列模組的核心優勢 主要體現在以下幾個方面:
-
具有很好的伸縮性,可以優雅地擴容和降級;
-
集中化管理,對各個節點的訊息進行集中式管理和分發;
-
易維護,將複雜的流程性業務拆分成多個模組系統進行互動,減少程式碼耦合;
-
完善的呼叫鏈路,對於鏈路複雜的系統可以準確地定位出錯的環節。
-
可以透過線上聊天機器人實現及時的自動提醒。
專案開源地址:
一、ns4_frame
開源地址:/ns4_frame
ns4_frame是一個高效能優秀的分散式服務框架,允許建立複雜的流程/業務流,對於業務服務節點的實現可串聯,可分散式。其精簡、輕量,實現了“脫容器”(不依賴tomcat、jetty等容器)獨立執行。ns4_frame將業務和邏輯進行分離,開發人員只需透過簡單的配置和業務實現就可以實現邏輯複雜、效能高效、功能穩定的業務系統。
專案結構
ns4_frame是一套MAVEN父子專案,由五個子專案組成:
-
NS_MQ :負責和底層訊息佇列進行通訊,提供了對訊息佇列進行操作的API。目前NS4底層支援redis作為訊息中介軟體,同時提供通用的介面,可以擴充套件多種訊息中介軟體,對訊息中介軟體的操作被封裝入了NS_MQ專案中。
-
NS_TRANSPORTER:透過呼叫NS_MQ提供的API,對業務訊息進行收取、處理、轉發。它本質是一套訊息收發處理框架,主要負責接收訊息後反向回撥業務程式碼,並將訊息交給業務層處理,當業務層處理完畢後,再將處理後的訊息返回給redis中。
-
NS_CHAIN:一個可選開發框架,負責對同一個JVM中的業務處理步驟進行鏈條式的整合,組成當前業務模組的業務處理流程。
-
NS_CONTROLLER:一個業務訊息轉發應用,負責將接收到的訊息轉給對應的業務模組進行處理,同時根據整體業務將業務模組進行關聯.NS_CONTROLLER本質是一個獨立的應用系統,構建於 NS_TRANPORTOR和NS_CHAIN之上。
-
NS_DISPATCHER :NS4架構規定的訊息入口,以NETTY框架作為基礎,透過提供的HTTP服務接受業務系統邊界外的http請求,並將請求轉化成業務系統內部通訊使用的訊息協議格式。
上圖展示了NS4每個系統的層次結構。
執行流程
NS4整套系統本質上其實就是一套訊息中介軟體服務加開發框架,整體的結構圖如下:
上圖展示了一個NS4整體分散式專案的執行流程。一個訊息的運轉流程按如下順序:
-
NS_DISPATCHER收到http請求並將其轉化為內部訊息協議放入指定的訊息佇列中(根據配置檔案) 。
-
NS_CONTORLLER從步驟1指定的佇列接收到訊息,並根據配置的服務編排開始按照順序將訊息傳送到每個業務系統步驟對應的訊息佇列中。
-
業務系統收到步驟2中NS_CONTROLLER指定的訊息佇列的資訊,開始處理,處理完畢後,將結果返回。
-
NS_CONTROLLER收到業務系統的響應,開始根據配置好的服務將返回的訊息結果傳送到下一個業務系統對應的訊息佇列中。
-
訊息被所有的業務系統處理完成後,NS_CONTROLLER把訊息處理結果放入到指定的訊息佇列裡,NS_DISPATCHER從對應的訊息佇列裡取出訊息結果,響應給http呼叫者。
二、ns4_gear_idgen
開源地址:/ns4_gear_idgen
ns4_gear_idgen (ID生成器)是基於NS4框架實現的,它支援分散式部署,生成全域性唯一的 ID,其中長度、字首、字尾、步長、進位制也可根據自己的業務自由配置,還可以透過ns4_gear_idgen對NS4.0框架進行測試。
優點
-
很方便的線性擴充套件,能夠支撐大多數業務場景。
-
生成ID規則多樣,可根據業務需求自由配置,且支援10進位制、36進位制、62進位制。
-
業務之間ID相互隔離,互不影響。
-
獲取ID不用頻繁運算元據庫,快消耗完號段內ID時才會運算元據庫,減輕了資料庫的壓力。
-
提前初始化號段內的ID,保證在每個號段內ID使用完之前完成初始化,避免業務使用完ID後再初始化所帶來的影響。
-
可以自定義 key_value 的大小,業務可以很方便地從原有的ID方式遷移過來。
-
容災性高,服務內部有號段快取,即使DB當機,短時間內仍能正常對外提供服務。
三、ns4_gear_watchdog
開源地址:/ns4_gear_watchdog
ns4_gear_watchdog是ns4_frame程式的父程式,守護並管理ns4_frame程式。它的職責包括以下幾個方面:
-
對ns4_frame進行遠端啟動和停止、實時監測ns4_frame程式的健康狀態、記憶體消耗、CPU使用、內部執行緒;
-
收集ns4_frame實現的業務日誌歸集、實現業務內部實時流轉的業務資料,達到實時對ns4_frame程式線上上的執行狀態、實現的業務以及業務資料的流轉狀態等方面的監控,並精準、快速、便捷地定位出異常以及CPU、執行緒等執行狀態。
ns4_gear_watchdog是作為父程式存在的,透過父程式啟動目標專案(子程式),並針對子程式應用生存的環境因素(包括系統層面的記憶體消耗、CPU 使用、負載、執行緒等)、實現功能的程式碼因素(程式碼健康程度)、業務因素等資料進行實時監控。父子程式透過 jmx 方式進行通訊,採集以上因素資料,並將這些資料儲存到 ElasticSearch 中,進一步透過分析資料和現實執行情況總結制定出的指標相結合,將該以上因素資料透過微信機器人實時通知提醒相關負責人。
[ns4_gear_watchdog 基本結構圖]
四、ns4_chatbot
開源地址:/ns4_chatbot
ns4_chatbot是一個機器人的聊天框架,整合了qqbot、WxChat、rasa以及web服務。ns4_chatbot提供微信和qq聊天介面,可以對某個群組傳送系統監控訊息等,還可以把ns4_gear_watchdog監控資訊傳送到對應的群組中。
ns4_chatbot實現的功能:
-
接受內部系統(如監控系統)的系統呼叫,從而把訊息推送給 QQ 或者微信使用者。內部系統呼叫服務時,需要提供以下資訊:
-
發給哪個群組
-
發給這個群組中的哪個使用者
-
傳送的訊息內容
-
可以接受 QQ、微信使用者的對話,理解其意圖,並且回應使用者。
未來展望
宜信一直踐行以科技推動金融發展的技術信念,並願意將技術實踐成果開源分享,以期透過宜信的實踐經驗推動金融科技行業的發展和創新。 目前,宜信技術學院已開源了多個宜信的技術成果與研發實踐,面向軟體研發行業分享宜信的技術理念,本次NS4系列模組的開源將保持長期更新和維護,也希望有更多的技術夥伴加入到開源專案中,共同維護與發展開源成果。
內容來源:宜信技術學院
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2643535/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PhalApi(π框架) - PHP輕量級開源介面框架API框架PHP
- Oracle釋出開源的輕量級 Java 微服務框架 HelidonOracleJava微服務框架
- Spring 5| 輕量級的開源JavaEE框架SpringJava框架
- 58同城開源其輕量級Web框架ArgoWeb框架Go
- 開源輕量級 IM 框架 MobileIMSDK v6.1.2 釋出!框架
- 快速搭建輕量級git服務GogsGitGo
- LambdaToSql(輕量級ORM) 入門篇 開源專案SQLORM
- 宜信開源微服務任務排程平臺(SIA-TASK)微服務
- 一個工業級、跨平臺、輕量級的 tcp 網路服務框架:geventTCP框架
- 【Android開源專案分析】android輕量級開源快取框架——ASimpleCache(ACache)原始碼分析Android快取框架原始碼
- 開源輕量級 IM 框架 MobileIMSDK 的微信小程式端已釋出!框架微信小程式
- 強大的輕量級開源框架web.py安裝詳解框架Web
- HTTPSQS:基於 HTTP協議的輕量級開源簡單訊息佇列服務HTTP協議佇列
- 專注資料才能發現邏輯
- 輕量級IOC框架:Ninject框架
- 來關注電信級網路安全服務的公眾微信吧
- 滴滴開源 DroidAssist : 輕量級 Android 位元組碼編輯外掛Android
- 用go設計開發一個自己的輕量級登入庫/框架吧(業務篇)Go框架
- Gorush 輕量級手機訊息傳送服務Go
- Flutter路由輕量級框架FRouterFlutter路由框架
- 輕量級orm框架——gzero指南ORM框架
- 輕量級Web框架Flask(二)Web框架Flask
- 超輕量級PHP框架BroPHPPHP框架
- 一個輕量級WebFramework開發框架介紹WebFramework框架
- Android 輕量級ORM資料庫開源框架ActiveAndroid 原始碼分析AndroidORM資料庫框架原始碼
- FluentData-新型輕量級ORM 利用T4模板 批量生成多檔案 實體和業務邏輯 程式碼ORM
- Midori:輕量級開源 Web 瀏覽器Web瀏覽器
- 開源一個基於dotnet standard的輕量級的ORM框架-Light.DataORM框架
- 業務邏輯學習!
- 快速實現業務規則的開源API邏輯伺服器簡介API伺服器
- looter——超輕量級爬蟲框架爬蟲框架
- Fd.Service 輕量級WebApi框架WebAPI框架
- 如何編寫輕量級 CSS 框架CSS框架
- 【須彌SUMERU】宜信分散式安全服務編排實踐分散式
- Solon 1.6.25 釋出,輕量級應用開發框架框架
- 業務邏輯開發套路的三板斧
- RestCloud API閘道器,輕量級ESB服務匯流排RESTCloudAPI
- 輕量開源相簿 Album