.NET應用程式管理服務AMS設計

smark發表於2014-02-19
AMS全稱是Application Management Server即應用程式管理服;由於經常要寫些一些應用服務,每次部署和維護都比較麻煩,首先要針對服務編寫一個windows服務程式方便系統啟動里載入;而當要對服務進行更新的時候不得不對服務進行停止和啟等一系列的繁瑣工作;而對於平常所有服務執行跟蹤管理上就更加難以處理,即使IIS本身也無法方便檢視具體WEB服務中處理業務上的統計資訊,為了解決以上的種種問題所以考慮針對.NET程式設計一個應用程式管理服務。

目標功能

AMS的主要功能是可以根據需要在服務上建立多個程式,而每個程式裡都可以掛載多個應用服務。其實程式掛載應用服務在之前的Glue4Net裡已經實現,由於Glue4Net是針對單程式設計的會導致應用服務之間的隔離級別不夠;因此在AMS的設計上有所改進,採用程式的方式來隔離應用;不過在實際應用中是可以根據業務的需要來選擇:一個程式一個應用或一個程式多個應用的方式。除了在部署執行提供統一管理外,還提供應用程式向AMS註冊具體的業務統計資訊,方便AMS統一監控程式的業務資訊情況.以下列出AMS的基礎功能:

  1. 建立程式,可對已有的程式進行啟動,停止和重啟等操作。
  2. 根據需要把應用掛載到不同的程式中,可對已有的應用啟動,停止和重啟等操作。
  3. 檢視程式和應用的情況,包括程式使用的記憶體和CPU資訊。
  4. 允許應用自定義資訊屬性提交給AMS,方便AMS監控管理
  5. 提供AMS嚮應用傳送符指令,允許管理人員嚮應用傳送具體的操作指令。
  6. 對應用進行復制載入,允許應用在執行的情況更新相應的檔案。
  7. 自動監控應用的檔案更新情況,自動更新應用
  8. 應用日誌跟蹤
  9. 提供CLI和GUI管理功能,方便相關員對AMS進行維護管理

設計

AMS主要分三大模組,分另是應用管理服務,應用程式和管理端。

 

AMS是主要核心部分,它的主要工作是對程式和應用的管理,負責程式和應用啟動監控工作。AMS會以windows service的方式存在,而它除了對程式維護和監控外不會加新增任何業務功能,簡單的工作從而保證AMS可以更可靠地執行。

AMS&AMS-Process互動

AMS根據資料資訊啟動應用程式,並提供相應的應用名稱。應用程式啟動後會向AMS傳送一條註冊資訊,告訴AMS當前程式應用名稱。AMS確認程式註冊後會把該程式需要啟動的應用傳送過去,之後程式會定時把應用的狀態資訊回發到AMS上。具體互動流程如下:

 

CLI

CLI全稱是(Command Line Interface),主要用於方便對AMS進行方便的管理。初期規劃的命令如下:

  • create process <-p processName> <-r remark>
  • create app <-p processName> <-a appName> <-d appPath> [-w true|false] [-f *.cs|*.config] [-c true|false]
  • process <-p test> <-s start|stop|restart|delete>
  • app <-p processName> <-a appName> <-s start|stop|restart|delete>
  • info <-p processName> <-a appName>
  • modify <-p processName> <-a appName> <-n property> <-v value>
  • cmd <-p processName> <-a appName> <-c command>
  • log  <-p processName> [-a appName] [-a yyyyMMdd]
  • ls [-p processName]
  • cls
  • stop

通訊方式

AMS幾個模組之間的通訊方式使用TCP,這樣可以實現不同伺服器上的維護和管理,通訊應用協議則使用protobuf來統一和簡化訊息的定義。

 

 

相關文章