##EasyReadMore##

2009年3月6日 星期五

AS ABAP Process

Work Process處理概觀

Dispatcher分配資源給REQUEST,就是分配requests給work process,work process並不專屬於哪個人,有可能一次的動作就換很多procsess幫你服務,Buffer的作用是提升處理 USER的 request的速度,常用的資料被放在這以供work process讀取,每個instance都有自己的buffer.image

 

work process執行每個應用程式的流程邏輯,除了internal memory外,work process還有task handler協調work process,software processor還有database interface的動作

當動態程式處理器在執行應用程式螢幕流邏輯的時候,他會呼叫流程邏輯模組,並將要處理的資料交給他,以上的動作在SAP系統中,就是ABAP應用程式執行ABAP直譯器,screen processor會告訴ABAP processor要執行哪個子程式.

而被dispatcher選上的dialog work process會去執行 roll-in使用者資料的動作,包括現在執行的程式資料及字元,然後work process會開始執行使用者的request,會去資料庫或BUFFER撈資料,一旦work process將需求處理完,會將資料再roll out回去給shared memory.接著可以再接受新的request進來.

Work Process架構

image

AS ABAP的Database Interface

利用SAP的ABAP語言,可以使用ABAP OPEN SQL語言去存取資料庫,無論使用何種資料庫,DATABASE INTERFACE是每個WORK PROCESS的一部份,會將OPEN SQL翻譯成相對應的SQL語言給不同的資料庫使用,以達到資料庫獨立的意義(不必因不同的資料庫使用不同的語言).

image

當直譯OPEN SQL的語言時,資料庫介面會去檢查syntax並確保在shared memory的SAP BUFFER的最佳可用性.

以下這張圖是在說明dialog work process的多工

一個工作可能會切換很多work process幫你服務

image

Lock Management

為了確保資料的一致性,必須確保一筆資料同時只有一個人可以存取,SAP利用Enquque work process來實做這部份,SAP的程式存取資料時,會在Lock table中建立該資料的lock entries,Lock entries只能在這筆資料不在lock table上時才能製作,Enquque work process管理transaction的logical lock,lock table是存在於該instance的memory中

Note: 如果一個instance的記憶體包涵了lock table,這台機器也叫Enqueue server.

如果使用者想要改一筆資料,正在幫他服務的dialog work process會要求lock這筆資料

如果這個要求enqueue server通過了,dialog work process可以直接存取lock table,他會檢查是否可以產生新的lock,寫到lock table後,使用者會被給予一個lock key.

Lock key會被存在user context中(shared memory中),若dialog work process正在執行使用者的要求而同一instance的enqueue work process也沒有在忙,這兩個work process就會透過message server互相溝通,在這個圖中,lock request從dialog work process透過dispatcher和message server送給enqueue work process,enqueue work process會去檢查lock table中是否已經有這筆lock entries,如果沒有就會建立此一lock entries,lock key就會透過dispatcher和 message server傳給dialog work process.

image

image

應用程式的開發人員可以選擇以下兩種lock模式

寫入lock (lock mode Exclusive)

     被鎖定的資料只能被一個user編輯,所以另外的寫入要求和讀取要求都會被拒絕,也就是任何別人的動作都會被拒絕

讀取lock(lock mode Shared)

    其他人可以read但是不能寫入

加強式的寫入lock (lock mode eXclusive noncumulative)

    當寫入鎖定被同一transaction要求後,只能被要求一次,其餘都會被拒絕

最佳化lock (lock mode Optimistic)

    可以依據使用者當下的行為改變鎖定模式

Tcode SM12可以看目前有哪些東西被鎖住

要解開一個被鎖定的物件,除非原使用者離開那個tcode,不然就要用手動方式解除

注意:要解除前要先用SM04檢查設定LOCK的使用者是否還繼續登入在此系統

Update

在SAP系統中,一個商業流程會被對照到SAP的Tcode,其中包涵了許多螢幕畫面的切換(舉例來說,建立訂單),資料的更改會影響到一個流程是否完整的完成,如果這個動作中途中斷或是錯誤產生,就有可能資料沒寫到資料庫裡,SAP的Update系統就是為了確保寫入有正確執行

Update work process是以非同步的方式更新資料

資料會被先暫存在dialog process,再傳給update work process去更新資料庫的資料,因為是非同步的動作,所以dialog work process不用等update work process完成,

Dialog的部份要等到COMMIT WORK的指令下了才算完成,接著更新的步驟就會開始,UPDATE SERVER會傳送更新的請求給UPDATE WORK PROCESS,這裡每個DIALOG的步驟都會和資料庫的transaction互相對應

image

如果使用者想要更改一筆資料,SAP的transaction會呼叫相關的transaction,之後會初始化update work process以儲存該筆資料,有以下步驟:

1. 程式會先鎖定資料(Enqueue work process),將鎖定的資料寫到lock table

2. 傳送lock key給使用者,程式會讀取資料庫裡的更改紀錄,使用者可以開始更改資料

3. Dialog work process會利用CALL FUNCTION .之類的語法來呼叫別的程式,並將更改請求寫到資料庫的update table,也叫做VB* tables,因為他們的名字開頭都是VB*,直到資料寫到資料庫裡,不然都存在這

4. 在dialog過程的結尾,程式會用COMMIT WORK的指令,之後就會去呼叫update work process

5. Update work process會根據dialog work process 傳來的資料,讀取log的紀錄去將VB* tables.的資料寫入資料庫

6. 如果資料成功寫到database的table,update work process就會觸發資料庫的commit指令,然後把VB* tables的資料移掉,如果有錯誤產生,update work process就會觸發roll-back的動作,將相關的log紀錄從VB* tables移除。

7. 在lock table的lock entries 將會reset.

Note: 應用程式開發員可以選擇何時或是如何使用非同步更新.

為了增加效能,應用程式開發人員可以定義不同的更新類別,比如說V1 updates是用來處理對於時間需求較高的更新,比如說是更改物料存貨或是訂單,其餘的則可以選擇V2 updates來處理對於時間需求較步緊急的更新,比如說一些統計的資料結果

image

如果當更新時有錯誤產生,接著正在更新的元件被終止,使用者會被特別的郵件通知更新終止,如果dialog work process在寫資料到VB* tables時終止,VB* tables會將資料維持住並不寫到資料庫,接著在下次系統重開時這些entries會自動被清掉或可以手動清掉。

一個非同步的更新可能會因為不同的理由而終止,例如一直寫一樣的資料進table(會觸發意外處理),意外的狀態將會通知系統管理員

NOTES:TCODE SM13 (update requests)提供系統管理員分析工具以處理更新的異常中斷,一旦錯誤原因被排除,更新就可以繼續

2009年3月5日 星期四

Web Application Server 架構

AS ABAP架構

在ABAP架構中Central instance跟別的instance不同,因為有著message server和enqueue work process,你可以定義每個instance的功能,比如果如果這個instance的功能是負責dialog還有update,他就是有數個dialog work process還有一個update work process.

NOTES:可以利用SM51去看看系統中現在的INSTANCE狀況,SM50去看現在系統中WORK PROCESS的狀態

ABSP Message Server提供了ABAP環境central service的功能,就是內部溝通(舉例來說 開始UPDATE,請求和移除LOCK,觸發背景處理程序)message Server也提供了現在系統中INSTANCE的狀態

安裝在各個application server中的ABAP Dispatcher透過MESSAGE SERVER溝通,message server也提供load balance的功能

note:可以利用SM04觀看誰登入到哪台系統

如果你登入是利用HTTP的協定(瀏覽器),那ICM會負責接收你的REQUEST,再轉送給適合的dispatcher.

SAP系統間利用RFC來溝通,是由Gateway reader來接收

image

AS JAVA架構

在JAVA的環境中,Central Instance和別的instance差別為有SDM,Central Service Instance中有著Message ServiceEnqueue Service,其他的instance都叫做Dialog Instance.

Notes:Java的執行環境通常又叫做Java Cluster,其下獨立的Process又叫做Node

可利用下列的格式去查看JAVA INSTANCE現在的情形

::http://<Hostname>:<Java-Dispatcher HTTP-Port of the Instance>/sap/monitoring/SystemInfo,

http://twdf1234.wdf.sap.corp:50000 → System Information

跟ABAP環境類似的是,Message Service提供內部的溝通,也提供了INSTANCE和NODE的狀態,JAVA環境中的每個NODE也可以透過Message service溝通image

AS ABAP+JAVA架構

此架構是INSTANCE下面同時有ABAP和JAVA的架構,並共用同一個系統ID

在此架構下的Central Instance可定義成

ABAP Message Server + Enqueue work process + SDM

Central Service Instance

Java Message Service + Enqueue Service

其他皆為Dialog Instance

Note: AS ABAP+Java 架構要先裝ABAP,再裝JAVA系統

在ABAP+JAVA的系統下,使用同一個資料庫,但是存取各別的SCHEMA,在資料交換部份,就利用SAP Java Connector(JCo)來溝通,舉例來說,ABAP那邊的帳單資料可以透過JAVA的Interface呈現出來

image

Instance

 

Instance

有自己的Buffer Area,一個instance用一個SID及一個instance number

clip_image002

Central Instance

   在一個系統裡面是一個獨一無二的instance,AS ABAP中有著Message Server及Enqueue work process,AS JAVA中有著SDM。

Central service instance

   在AS JAVA中提供central service的功能,提供Message     Service及Enquque Service 除了這兩個之外都叫Dialog Instance

Central System 

   Central instance和Database裝在一台機器

 

AS ABAP

 

Work Process

SAP系統中的主要工作者

在每個Application Server中,具有Dispatcher和Work Process,

Disaptcher

將收到的Requests分配給work process

clip_image002[5]

 

Dialog work processes 執行線上使用者發出的Dialog steps,每個dispatcher至少需要兩個.
Spool work processes 傳送sequential data flows 到印表機. 每個SAP系統至少需要一個.
Update work processes 執行update requests.類似spool work processes, 一個SAP系統至少需要一個.
Background work processes 執行不需要和使用者互動的程式.一個SAP系統至少要兩個
Enqueue work process 管理在shared memory中的lock table. Lock table 包含了ABAP runtime environment 中所產生的logical database locks.一個SAP系統只需要一個.

AS ABAP提供的其他service

1. Message Server (MS)

負責聯絡同一個AS ABAP 系統下的Dispatcher,一個SAP系統只會有一個

2. Gateway reader (GW)

讓SAP系統與系統間或是SAP系統和外部系統間互相聯絡,一個Dispatcher會有一個

3. Internet Communication Manager (ICM)

接收來自Http的requests,轉交給SAP系統,也可讓SAP系統間以HTTP的協定溝通,可以設定每個application server的ICM的process數量

 

AS JAVA

image

Dispatcher

分配進來的requests給 server processes.

Server process

執行Java應用程式. 每個server process 為multi-threaded所以可以同時執行多數目的requests(相對於abap系統的work process而言). 每個dispatcher至少要有一個server process最多可以到十六個

Java Message Service

管理Java dispatchers以及server processes.

Java Enqueue Service

管理由執行JAVA應用程式產生的logical locks.

Software Deployment Manager (SDM)

標準的JAVA工具 用來安裝在SAP Web AS JAVA環境中的JAVA軟體或元件

 

SAP NetWeaver Application Server的種類

image

AS ABAP system

AS Java system

AS ABAP+Java system

ABAP的TABLE,程式和應用資料存在 ABAP Schema,Java的資料存在Java schema裡,ABAP執行環境中是去存取ABAP schema,JAVA執行環境中是去存取JAVA schema的資料,而在ABAP+JAVA的環境中,這兩種執行環境是靠SAP Java Connector(JCO)溝通.