02.26 SAP掃盲系列之二:SAP ABAP應用服務器的組成部分

這個系列的第一篇文章,我們瞭解了什麼是SAP應用服務器實例,並使用SAPGUI這個客戶端軟件,成功登錄到了SAP CRM系統的一個應用服務器實例AG3.


本文繼續學習ABAP應用服務器的組成部分。


一個典型的ABAP應用服務器由下列組件構成:


(1) Internet Communication Manager (ICM)


(2) ABAP dispatcher


(3) Task handler


(4) 若干工作進程,類型有dialog, update, print, background等等


(5) RFC Gateway


(6) Standalone enqueue server


(7) SAP Message Server


這些組件的關聯關係如下圖,一個SAP系統可以包含多個應用服務器實例,但ASCS實例只能有一個。

SAP掃盲系列之二:SAP ABAP應用服務器的組成部分

下面簡單介紹每個組件的功能。


Internet Communication Manager (ICM) - SAP NetWeaver


ICM是Netweaver服務器裡一個單獨的進程,由ABAP Dispatcher啟動並監控,負責SAP系統和外部的網絡通信。基於收到請求URL的解析,ICM會將請求分發給具體的handler進行處理。


ICM常用的與Internet交互的協議有HTTP,HTTPS,SMTP等。


下圖是ICM的架構圖。

SAP掃盲系列之二:SAP ABAP應用服務器的組成部分


Thread Control:該線程負責接收外界請求,從ICM線程池中取出空閒的工作線程,將請求的上下文交給工作線程。


工作線程:負責請求的具體處理,包含一個I/O處理器,可以用來進行網絡的輸入和輸出操作。對於不同協議類型的請求,Thread Control會調度包含了對應協議插件的工作線程。


Watchdog:如果一個工作線程在任務處理時出現了等待某個響應直至超時的情況,Watchdog會將該工作線程釋放,避免其無限期的等待,這樣該工作線程可以服務於其他請求。而Watchdog會繼續等待尚未到來的響應。其後如果響應到達,Watchdog會通知Thread control, 後者會繼續調用新的工作線程來處理。


Signal Handler:處理來自操作系統或者其他進程的信號。


Connection Info: 這張表維護了每個連接的狀態信息,包括內存管道等。


Memory Pipes:內存管道是基於內存的通訊數據結構,用於將ICM接收到的外部請求包含的數據轉交給工作線程。


Internet Server Cache:服務器端的緩存,對於重複的請求可以加快響應速度。


ABAP Dispatcher和工作進程


二者的關係在下圖體現得很清晰,ABAP應用服務器上運行著許多不同類型的工作進程。

SAP掃盲系列之二:SAP ABAP應用服務器的組成部分


SAP gateway


SAP系統之間,以及SAP系統與外部系統間通過基於TCP/IP的RFC調用進行通信,而gateway作為RFC調用分發的入口,如下圖所示:

SAP掃盲系列之二:SAP ABAP應用服務器的組成部分


SAP Message Server


每個SAP系統只能包含一個消息服務器,該組件負責完成以下任務:


(1) 作為SAP系統內多個應用服務器實例間的通訊渠道

(2) 對來自客戶端通過SAPGUI和SAP RFC登錄請求的負載分發


當一個應用服務器實例啟動後,其dispatcher進程就會聯繫消息服務器,向其報告自己能夠提供的服務類型。


SAP Router


一個單獨運行的程序,保護SAP系統不被未經授權的請求所訪問。


SAP掃盲系列之二:SAP ABAP應用服務器的組成部分

SAProuter在網絡連接拓撲結構中,在SAP系統間以及SAP系統和外部網絡間,扮演著proxy的角色,是基於端口過濾的防火牆機制的一種補充,通常直接安裝在防火牆主機上。


SAPRouter維護了一張路由權限表,可以以此維護可以允許何種類型的請求同防火牆背後的SAP系統建立連接。


SAP Start Service


該服務運行在部署了SAP應用服務器實例的服務器上,實現載體是windows的系統服務(sapstartsrv.exe)和Unix系統的Daemon進程(sapstartsrv).


SAP Start Service實現的功能有:


(1) 啟動和終止SAP應用服務器實例,及其運行狀態的監控

(2) 應用服務器日誌,跟蹤和配置文件的讀取與管理


Enqueue Server


實現ABAP應用程序級別的鎖管理機制。應用服務器實例上所有用戶當前會話持有的鎖,都維護在Enqueue服務器的鎖信息管理表中,該表維護在Enqueue服務器的內存中,不會進行持久化,因此Enqueue服務器成為了ABAP系統的單點故障源之一:當Enqueue服務器由於各種原因運行時發生故障需要重啟時,維護在內存中的鎖信息表的數據會丟失。


SAP掃盲系列之二:SAP ABAP應用服務器的組成部分

因此為了確保Enqueue服務器的高可用性,通常將其放到單獨的物理主機上部署,甚至引入主從機制的多臺Enqueue服務器,將Master Enqueue服務器上的鎖信息管理表同步到其他Enqueue服務器上。

SAP掃盲系列之二:SAP ABAP應用服務器的組成部分


分享到:


相關文章: