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

i042416發表於2020-03-08

這個系列的第一篇文章,我們瞭解了什麼是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應用伺服器的組成部分



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2679012/,如需轉載,請註明出處,否則將追究法律責任。

相關文章