新四季網

一種可進行服務治理與語言調用的輕量級RPC框架的製作方法

2023-10-09 18:55:44 1


本發明涉及數據處理技術領域,尤其涉及一種可進行服務治理與語言調用的輕量級RPC框架。



背景技術:

目前,各大網際網路公司大量使用微服務架構,服務與服務之間進行跨進程間通信,RPC(遠程過程調用)框架應運而生。業界RPC框架大致分為兩類,一種是偏重服務治理,另一種側重跨語言調用。

服務治理型RPC框架典型的是Dubbo和DubboX。Dubbo是阿里開源的分布式服務框架,實現高性能的RPC調用同時提供了豐富的管理功能,是一款應用廣泛的優秀的RPC框架,但現在較少維護更新,DubboX是基於Dubbo框架擴展的一個RPC框架,支持REST風格的遠程調用、Kryo/FST序列化。

這類RPC框架的特點是功能豐富,提供高性能的遠程調用、服務發現及服務治理能力,適用於大型服務的服務解耦及服務治理,對於特定語言(Java)的項目可以實現透明化接入,缺點是語言耦合度較高,跨語言支持難度較大。

跨語言調用型的RPC框架有Thrift、gRPC、Hessian、Hprose等,這類RPC框架側重於服務的跨語言調用,能夠支持大部分的語言進行語言無關的調用,非常適合多語言調用場景。但這類框架沒有服務發現相關機制,實際使用時需要代理層進行請求轉發和負載均衡策略控制。

類似於Dubbo這類偏重服務治理的框架,雖然能夠提供遠程調用、服務發現及服務治理能力,但是語言耦合度較高,跨語言支持難度較大,然而使用類似Thrift這類框架,沒有服務發現和服務治理等相關機制;

因此,本領域的技術人員亟需研究出一種適配公司環境,可進行服務治理與跨語言調用,輕量部署和業務代碼解耦、解決微服務難於管理和難於跨語言調用的問題的可進行服務治理與語言調用的輕量級RPC框架。



技術實現要素:

本發明要解決的技術問題是提供一種可進行服務治理與語言調用的輕量級RPC框架,該可進行服務治理與語言調用的輕量級RPC框架能高度適配公司環境,可進行服務治理與跨語言調用,輕量部署和業務代碼解耦、解決微服務難於管理和難於跨語言調用的問題。

為解決上述技術問題,一種可進行服務治理與語言調用的輕量級RPC框架,包括註冊中心、伺服器及客戶端,所述註冊中心與所述伺服器及客戶端連接,所述伺服器與所述客戶端連接,所述伺服器向註冊中心註冊聲明所提供的服務,通過ServerBootstrap暴露策略向所述註冊中心以服務規範的路徑暴露自己,所述客戶端進行初始化並向所述註冊中心訂閱指定服務,所述註冊中心將服務列表返回所述伺服器,所述客戶端與所述註冊中心返回信息的伺服器建立連接,進行RPC服務調用;

所述伺服器包括第一傳輸模塊、第一序列化模塊、第一協議模塊及服務模塊,所述客戶端包括第二傳輸模塊、第二序列化模塊、集群模塊、第二協議模塊及引用模塊;

所述引用模塊引入API,調用所述客戶端的API接口並將調用的數據發送給所述第二協議模塊;所述第二協議模塊接收所述引用模塊調用的數據,並進行調用的代理,所述第二協議模塊將代理的服務數據發送所述集群模塊;所述集群模塊根據負載均衡策略選取所述集群模塊持有的可用的服務實例進行集群;所述集群模塊保持所述客戶端與與伺服器進行通信,所述集群模塊將服務實例的數據發送所述第二序列化模塊,維護服務實例的連接;所述第二序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JAVA對象到JSON的序列化,所述第二序列化模塊序列化完成後將序列化的服務數據發送給所述第二傳輸模塊;所述第二傳輸模塊進行I/O的操作向所述伺服器的第一傳輸模塊發送服務數據包;所述第一傳輸模塊接收所述第二傳輸模塊發送的服務數據並將接收的數據發送給所述第一序列化模塊;所述第一序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JSON到JAVA對象的解序列化,所述第一序列化模塊解序列化完成後將解序列化的服務數據發送給所述第一協議模塊;所述第一協議模塊將解序列化的服務數據發送所述服務模塊;所述服務模塊將服務實例的數據返回發送給所述第一協議模塊;所述第一協議模塊將服務數據發送給所述第一序列化模塊;所述第一序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JAVA到JSON對象的序列化,所述第一序列化模塊序列化完成後將序列化的服務數據發送給所述第一傳輸模塊;所述第一傳輸模塊進行O/I的操作向所述伺服器的第二傳輸模塊發送服務數據包;所述第二傳輸模塊接收所述第一傳輸模塊發送的服務數據並將接收的數據發送給所述第二序列化模塊;所述第二序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JSON對象到JAVA的解序列化,所述第二序列化模塊解序列化完成後將序列化的服務數據發送給所述集群模塊;所述集群模塊根據負載均衡策略選取所述集群模塊持有的可用的服務實例進行集群並將集群完成的服務數據發送所述第二協議模塊;所述第二協議模塊將集群的服務數據發送所述引用模塊;所述客戶端的引用模塊引入API,調用所述客戶端的API接口。

優選地,所述伺服器還包括第一註冊模塊,所述第一註冊模塊進行服務初始化,通過XML配置中的參數來初始化服務參數,通過所述參數來構建向所述註冊中心上報欄位,當服務初始化完成後,所述第一註冊模塊通過ServerBootstrap暴露策略向註冊中心以服務公司規範的路徑暴露自己,通過所述上報的欄位來描述本服務提供的服務和服務元數據,當所述第一註冊模塊將服務在註冊中心完成註冊後,註冊中心推送本次事件給訂閱了此服務的客戶端,所述第一協議模塊接收所述第一序列化模塊發送的序列化數據,並將服務變更數據同步到所述第一註冊模塊,所述第一協議模塊接收所述服務模塊發送的服務數據將變更的服務數據同步到所述第一註冊模塊;

其中,所述XML配置的參數包括:日誌、服務變量、服務版本。

優選地,所述客戶端還包括第二註冊模塊,所述第二註冊模塊根據XML中配置的服務名在註冊中心訂閱所述服務;所述客戶端接收所述註冊中心推送過來的事件,從所述事件中獲取所述服務上報的欄位來取得這個服務的元數據,所述第二協議模塊接收所述集群模塊發送的序列化服務數據,並將服務變更數據同步到所述第二註冊模塊。

優選地,所述第一註冊模塊及第二註冊模塊用於和註冊中心進行交互業務,所述伺服器會在系統初始化時通過所述第一註冊模塊註冊服務,所述客戶端在客戶端初始化時通過所述第二註冊模塊訂閱具體提供服務的服務列表,當服務列表發生變更時由所述第二註冊模塊通知所述客戶端。

優選地,所述交互業務包括註冊服務、訂閱服務、服務變更通知及服務心跳發送。

優選地,所述第一協議模塊及所述第二協議模塊用於進行RPC服務的描述、RPC服務的配置管理、添加不同功能的過濾器來完成統計及並發限制。

優選地,所述第一序列化模塊及第二序列化模塊用於將所述客戶端及伺服器請求中的參數、結果進行序列化和反序列化。

優選地,所述序列化和反序列化為進行JSON對象與字節流的互相轉換,JAVA對象和JSON的互相轉換。

優選地,所述集群模塊用於一組可用的服務模塊在邏輯上的封裝,包含若干可以提供rpc服務的服務子模塊,根據不同的高可用與負載均衡策略選擇一個可用的服務子模塊進行路由,並發起遠程調用。

採用了上述框架之後,所述伺服器向註冊中心註冊聲明所提供的服務,通過ServerBootstrap暴露策略向所述註冊中心以服務規範的路徑暴露自己,所述客戶端進行初始化並向所述註冊中心訂閱指定服務,所述註冊中心將服務列表返回所述伺服器,所述客戶端與所述註冊中心返回信息的伺服器建立連接,進行RPC服務調用;所述客戶端的引用模塊引入API,調用所述客戶端的API接口並將調用的數據發送給所述第二協議模塊;所述第二協議模塊接收所述引用模塊調用的數據,並進行調用的代理,所述第二協議模塊將代理的服務數據發送所述集群模塊;所述集群模塊根據負載均衡策略選取所述集群模塊持有的可用的服務實例進行集群;所述集群模塊保持所述客戶端與與伺服器進行通信,所述集群模塊將服務實例的數據發送所述第二序列化模塊,維護服務實例的連接;所述第二序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JAVA對象到JSON的序列化,所述第二序列化模塊序列化完成後將序列化的服務數據發送給所述第二傳輸模塊;所述第二傳輸模塊進行I/O的操作向所述伺服器的第一傳輸模塊發送服務數據包;所述第一傳輸模塊接收所述第二傳輸模塊發送的服務數據並將接收的數據發送給所述第一序列化模塊;所述第一序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JSON到JAVA對象的解序列化,所述第一序列化模塊解序列化完成後將解序列化的服務數據發送給所述第一協議模塊;所述第一協議模塊接收所述第一序列化模塊發送的序列化數據,並將服務變更數據同步到所述第一註冊模塊,所述第一協議模塊將解序列化的服務數據發送所述服務模塊;然後,再由所述服務模塊返回到所述客戶端的引用模塊;該可進行服務治理與語言調用的輕量級RPC框架能高度適配公司環境,可進行服務治理與跨語言調用,輕量部署和業務代碼解耦、解決微服務難於管理和難於跨語言調用的問題。

附圖說明

圖1是本發明的一種可進行服務治理與語言調用的輕量級RPC框架的具體模型示意圖;

圖2是本發明的可進行服務治理與語言調用的輕量級RPC框架的整體模型示意圖;

圖3是與圖1的對應的可進行服務治理與語言調用的輕量級RPC框架的模型的另一種展示方式;

圖4是圖2的整體模型落地到具體實施例的示意圖。

具體實施方式

為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用於解釋本發明,並不用於限定本發明。

實施例1

請參閱圖1至圖2,圖1是本發明的一種可進行服務治理與語言調用的輕量級RPC框架的具體模型示意圖;

圖2是本發明的可進行服務治理與語言調用的輕量級RPC框架的整體模型示意圖;

本發明公開了一種可進行服務治理與語言調用的輕量級RPC框架,包括註冊中心、伺服器及客戶端,所述註冊中心與所述伺服器及客戶端連接,所述伺服器與所述客戶端連接,所述伺服器向註冊中心註冊聲明所提供的服務,通過ServerBootstrap暴露策略向所述註冊中心以服務規範的路徑暴露自己,所述客戶端進行初始化並向所述註冊中心訂閱指定服務,所述註冊中心將服務列表返回所述伺服器,所述客戶端與所述註冊中心返回信息的伺服器建立連接,進行RPC服務調用;

所述伺服器包括第一傳輸模塊、第一序列化模塊、第一協議模塊及服務模塊,所述客戶端包括第二傳輸模塊、第二序列化模塊、集群模塊、第二協議模塊及引用模塊;

所述引用模塊引入API,調用所述客戶端的API接口並將調用的數據發送給所述第二協議模塊;所述第二協議模塊接收所述引用模塊調用的數據,並進行調用的代理,所述第二協議模塊將代理的服務數據發送所述集群模塊;所述集群模塊根據負載均衡策略選取所述集群模塊持有的可用的服務實例進行集群;所述集群模塊保持所述客戶端與與伺服器進行通信,所述集群模塊將服務實例的數據發送所述第二序列化模塊,維護服務實例的連接;所述第二序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JAVA對象到JSON的序列化,所述第二序列化模塊序列化完成後將序列化的服務數據發送給所述第二傳輸模塊;所述第二傳輸模塊進行I/O的操作向所述伺服器的第一傳輸模塊發送服務數據包;所述第一傳輸模塊接收所述第二傳輸模塊發送的服務數據並將接收的數據發送給所述第一序列化模塊;所述第一序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JSON到JAVA對象的解序列化,所述第一序列化模塊解序列化完成後將解序列化的服務數據發送給所述第一協議模塊;所述第一協議模塊將解序列化的服務數據發送所述服務模塊;所述服務模塊將服務實例的數據返回發送給所述第一協議模塊;所述第一協議模塊將服務數據發送給所述第一序列化模塊;所述第一序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JAVA到JSON對象的序列化,所述第一序列化模塊序列化完成後將序列化的服務數據發送給所述第一傳輸模塊;所述第一傳輸模塊進行O/I的操作向所述伺服器的第二傳輸模塊發送服務數據包;所述第二傳輸模塊接收所述第一傳輸模塊發送的服務數據並將接收的數據發送給所述第二序列化模塊;所述第二序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JSON對象到JAVA的解序列化,所述第二序列化模塊解序列化完成後將序列化的服務數據發送給所述集群模塊;所述集群模塊根據負載均衡策略選取所述集群模塊持有的可用的服務實例進行集群並將集群完成的服務數據發送所述第二協議模塊;所述第二協議模塊將集群的服務數據發送所述引用模塊;所述客戶端的引用模塊引入API,調用所述客戶端的API接口。

在本實施例中,所述伺服器還包括第一註冊模塊,所述第一註冊模塊進行服務初始化,通過XML配置中的參數來初始化服務參數,通過所述參數來構建向所述註冊中心上報欄位,當服務初始化完成後,所述第一註冊模塊通過ServerBootstrap暴露策略向註冊中心以服務公司規範的路徑暴露自己,通過所述上報的欄位來描述本服務提供的服務和服務元數據,當所述第一註冊模塊將服務在註冊中心完成註冊後,註冊中心推送本次事件給訂閱了此服務的客戶端,所述第一協議模塊接收所述第一序列化模塊發送的序列化數據,並將服務變更數據同步到所述第一註冊模塊,所述第一協議模塊接收所述服務模塊發送的服務數據將變更的服務數據同步到所述第一註冊模塊;

其中,所述XML配置的參數包括:日誌、服務變量、服務版本。

在本實施例中,所述客戶端還包括第二註冊模塊,所述第二註冊模塊根據XML中配置的服務名在註冊中心訂閱所述服務;所述客戶端接收所述註冊中心推送過來的事件,從所述事件中獲取所述服務上報的欄位來取得這個服務的元數據,所述第二協議模塊接收所述集群模塊發送的序列化服務數據,並將服務變更數據同步到所述第二註冊模塊。

在本實施例中,所述第一註冊模塊及第二註冊模塊用於和註冊中心進行交互業務,所述伺服器會在系統初始化時通過所述第一註冊模塊註冊服務,所述客戶端在客戶端初始化時通過所述第二註冊模塊訂閱具體提供服務的服務列表,當服務列表發生變更時由所述第二註冊模塊通知所述客戶端。

所述交互業務包括註冊服務、訂閱服務、服務變更通知及服務心跳發送。

在本實施例中,所述第一協議模塊及所述第二協議模塊用於進行RPC服務的描述、RPC服務的配置管理、添加不同功能的過濾器來完成統計及並發限制。

在本實施例中,所述第一序列化模塊及第二序列化模塊用於將所述客戶端及伺服器請求中的參數、結果進行序列化和反序列化。

在本實施例中,所述序列化和反序列化為進行JSON對象與字節流的互相轉換,JAVA對象和JSON的互相轉換。

在本實施例中,所述集群模塊用於一組可用的服務模塊在邏輯上的封裝,包含若干可以提供rpc服務的服務子模塊,根據不同的高可用與負載均衡策略選擇一個可用的服務子模塊進行路由,並發起遠程調用。

在所述伺服器與所述客戶端連接,所述客戶端對所述伺服器的服務數據進行調用時,所述客戶端擁有高可用和負載均衡功能,也可根據具體的路由策略來選取可用的實例,以下是幾個例子:

請參閱圖3,圖3是與圖1的對應的可進行服務治理與語言調用的輕量級RPC框架的模型的另一種展示方式;

所述可進行服務治理與語言調用的輕量級RPC框架整體模型如圖3所示。

請參閱圖4,圖4是圖2的整體模型落地到具體實施例的示意圖;

HelloService提供服務,並向註冊中心註冊自己,說明自己提供的服務,WorldService向註冊中心訂閱HelloService,感知到HelloService的上下線,並建立或斷開連接,進行rpc調用。

採用了上述框架之後,所述伺服器向註冊中心註冊聲明所提供的服務,通過ServerBootstrap暴露策略向所述註冊中心以服務規範的路徑暴露自己,所述客戶端進行初始化並向所述註冊中心訂閱指定服務,所述註冊中心將服務列表返回所述伺服器,所述客戶端與所述註冊中心返回信息的伺服器建立連接,進行RPC服務調用;所述客戶端的引用模塊引入API,調用所述客戶端的API接口並將調用的數據發送給所述第二協議模塊;所述第二協議模塊接收所述引用模塊調用的數據,並進行調用的代理,所述第二協議模塊將代理的服務數據發送所述集群模塊;所述集群模塊根據負載均衡策略選取所述集群模塊持有的可用的服務實例進行集群;所述集群模塊保持所述客戶端與與伺服器進行通信,所述集群模塊將服務實例的數據發送所述第二序列化模塊,維護服務實例的連接;所述第二序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JAVA對象到JSON的序列化,所述第二序列化模塊序列化完成後將序列化的服務數據發送給所述第二傳輸模塊;所述第二傳輸模塊進行I/O的操作向所述伺服器的第一傳輸模塊發送服務數據包;所述第一傳輸模塊接收所述第二傳輸模塊發送的服務數據並將接收的數據發送給所述第一序列化模塊;所述第一序列化模塊根據所述客戶端與所述伺服器雙方通信制定好的協議進行JSON到JAVA對象的解序列化,所述第一序列化模塊解序列化完成後將解序列化的服務數據發送給所述第一協議模塊;所述第一協議模塊接收所述第一序列化模塊發送的序列化數據,並將服務變更數據同步到所述第一註冊模塊,所述第一協議模塊將解序列化的服務數據發送所述服務模塊;然後,再由所述服務模塊返回到所述客戶端的引用模塊;該可進行服務治理與語言調用的輕量級RPC框架能高度適配公司環境,可進行服務治理與跨語言調用,輕量部署和業務代碼解耦、解決微服務難於管理和難於跨語言調用的問題。

同時,應當理解的是,以上僅為本發明的優選實施例,不能因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效實現方法,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護範圍內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀