天天看點

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應用伺服器的組成部分

繼續閱讀