NC维护云平台技术分享之 NC维护云管家通信框架
NC維護云管家通信框架誕生背景
? NC維護云平臺在架構設計之初就充分考慮到不同客戶網絡環境情況:
1.?NC服務器可以直接連通互聯網。
2.?NC服務器所在內網完全與外網隔離。
???????基于上述網絡情況,同時能為用戶提供永久穩定的項目運維信息的云化管理服務以及真真切切地幫助一線解決一切難題的初衷,NC維護云平臺提出了以“云+端”的方式為用戶服務。考慮到讓一線顧問、客戶使用簡單便捷以及適配內外網切換,端又基于C/S模式分成兩部分,客戶端?——NC維護云管家(NC的360桌面程序),服務端——NC維護云管家服務(agent)。NC維護云管家通信框架就是為了解決客戶端與服務端通信,同時又能使通信服務在運行時不影響NC應用服務的運行效率及穩定性,從而完全自主研發設計且不依賴于NC的通信服務框架。
我們采用基于RMI-IIOP?協議自主開發服務通信框架,是在充分考慮客戶環境的復雜性及云平臺業務處理需求情況下而設計,如:支持復雜集群環境通信要求,支持集群節點自注冊,支持服務組件XML?方式注冊,支持服務調用時注冊回調處理器,支持部署簡單、零服務配置,支持開機自啟動等,而且其非常輕巧,相比使用開源的tomcat、jetty?和netty?更能滿足我們云平臺項目的需求。框架解決了云管家與項目環境通信問題,同時適應客戶環境的各種復雜場景如:各版本linux、windows、win?server、aix,服務器多網卡等。框架是項目補丁安裝卸載,集群檢測等核心功能的主要技術支撐。
如果客戶的NC應用服務器是內外網隔離的情況,用戶首先需要使安裝NC維護云管家的筆記本電腦或臺式機上連接上外網訪問云端獲取客戶項目的運維信息、云平臺最新推出的補丁等內容,然后再切換到內網連接NC維護云管家服務(agent)即可安裝補丁、卸載補丁,同時也可以做正式環境代碼是否一致檢測、正式環境與測試環境代碼是否一致檢測等操作。
NC維護云管家通信協議介紹
根據NC應用的部署情況,NC維護云管家通信框架需要考慮到分布式計算,同時為了開發在使用通信框架時完全透明,NC維護云管家選擇了基于RMI-IIOP協議通信。
RMI-IIOP?很強大的分布式計算能力,可使用它編寫純?Java?客戶機/服務器實現而不喪失?RMI?類序列化的靈活性。RMI-IIOP?通過覆蓋?Java?序列化反序列化做遠程對象傳輸,同時也提供透明的遠程對象定位,從而使運行在一個Java虛擬機上的對象可以像調用本地對象方法一樣調用運行在另一個Java虛擬機上的對象方法,使Java編程人員可以方便、透明地在網絡環境中做分布式計算。
NC維護云管家通信框架模型
????????NC維護云管家通信框架使用Java動態代理與反射實現對象調用,客戶端到服務器數據的傳輸使用JAVA序列化與反序列化機制來實現,也就是數據組裝是定制的,網絡通信使用RMI-IIOP協議,通信模型如圖1所示:
?
圖1
????????整個NC維護云管家通信框架各個實體各司其職、分工明確,接下來做詳細的介紹和說明:
1.?Locater是lookup模式的實現,客戶端完全透明地通過Locater統一查找不管是遠程還是本地的服務或資源。
2.?Proxy,?客戶端通過Locater獲取遠程服務時,返回的是實現與遠程服務相同接口的代理對象,在客戶端調用接口方法時,代理攔截請求并組裝請求信息,如調用接口完全路徑名、方法、請求參數等信息。
3.?Listener是客戶端遠程調用時可選擇性地注冊的監聽,主要監聽遠程調用情況,在兩種情況下監聽會得到通知,在調用集群環境服務時,一是當單個服務請求結束后監聽會得到通知,通知中包含了請求成功與否的狀態信息、返回值、異常等信息,另外一種情況是當客戶端對整個集群環境的所有服務請求結束后監聽也會得到通知,所帶信息是各個服務請求成功與否的狀態信息、返回值、異常等信息集合,客戶端可以根據通知信息做相應的業務處理。
4.?Reader,獲取客戶端請求信息,把請求封裝為請求對象Caller,調用Handler處理請求。
5.?AOPHandler,實現了AOP處理機制,在調用接口實現對象(Object)處理業務前會先檢查接口是否動態織入了Advice,如果織入了Advice則先處理AOP過程,然后再根據客戶端請求封裝信息Caller調用真正的實現對象處理業務。
6.?Advice是NC維護云管家通信框架AOP實現中的通知統一接口,它通過?before、whenException、after?和?around?來區別是在每個?joint?point?之前、異常發生時、之后還是代替執行的代碼。加入對AOP的實現既滿足代碼松耦合原則,又同時對后續接口的認證、權限管理、事務的處理、持久化等在毫無代碼入侵的情況下滿足開閉原則。
遠程的對象擁有固定的接口,這個接口對客戶端調用者來說是可見的,只是真正的實現(Object)在服務端。用戶如果想使用某個接口的實現,那調用過程如此:先根據接口使用lookup模式來查找服務,通信框架客戶端只用動態代理生成一個代理對象返回,再調用這個代理對象的時候,用戶的調用請求被代理捕捉到,然后包裝成調用請求,序列化成數據流發送到服務端;服務端從數據流中解析出調用請求,然后根據用戶所希望調用的接口,使用反射調用接口真正的實現對象,再把調用結果返回給客戶端,整個調用過程序列同如圖2所示:
?
??圖2
NC維護云管家部署圖
???????NC維護云管家的部署分單節點和集群兩種情況:
1.?NC環境是集群環境下部署情況如圖3所示,NC應用與NC維護云管家服務是一一對應關系,即一套NC應用需要一個NC維護云管家服務與其對應,NC集群環境中會有多個NC維護云管家服務,則需要隨機選擇一個作為主服務。NC維護云管家與NC維護云管家通信步驟:
(1)?NC維護云管家向NC維護云管家服務發起請求,獲取所有向NC維護云管家主服務注冊的NC維護云管家子服務信息
(2)?NC維護云管家根據第一步獲取到的服務信息向所有NC維護云管家服務發起請求,并等待所有請求結束后返回
(3)?NC維護云管家得到所有NC維護云管家服務返回結果,并做處理
????????
圖3
2.?NC環境單服務時的部署情況如圖4所示
?
圖4
3.?服務啟停設計
a)?為了減少用戶的配置,NC維護云管家服務支持零配置,只需把NC維護云管家服務文件夾(umc)拷貝到NC_HOME目錄下即可直接啟動。
b)?NC維護云管家服務服務支持在各種類型操作系統下開機自啟動。
c)?在linux、unix、aix操作系統下,如果配置了SSH免密碼登錄,那么在啟動NC維護云管家主服務節點時會自動啟動所有NC維護云管家子服務節點,服務停止也是如此。
總結
?
???????好的技術服務于好的產品,好的產品需要有用戶的使用、肯定和支持才能發揮其應有的價值,NC維護運管家通信服務就是基于這樣的理念,使用前沿技術而設計的一組服務,其充分考慮到了客戶環境的復雜性,一切以客戶的切身利益和體驗為核心,深度掌握了客戶和一線顧問的需求,急之所急,想之所想,服務于客戶,宗旨是讓NC產品長期更加穩定地運行,從而全面提高客戶對NC產品的美譽度,同時希望借此契機讓NC產品發揮出其應有的價值并且為公司創造更多收益和美譽!
???????在設計與開發NC維護云管家通信服務的過程中遇到很多難點,這里我得感謝譚明義經理在我解決這些難點過程的建議、指導和幫助!同時也感謝現在正在使用NC維護運管的用戶對其的肯定和贊譽!
?
總結
以上是生活随笔為你收集整理的NC维护云平台技术分享之 NC维护云管家通信框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么很多人跨学科也要转行模拟版图设计工
- 下一篇: xshell详细jdk环境配置教程