基于IPC机制浅析Tuxedo及其应用

发布时间:2018-10-04 06:10:18   来源:文档文库   
字号:

基于IPC机制浅析Tuxedo及其应用

 摘 :

  本文从底层IPC机制出发,结合UNIX核心系统参数和ATMI技术,借用ipcs观察Tuxedo所消耗的IPC系统资源状况,浅析了Tuxedo强大功能背后的工作原理,进一步加深对Tuxedo应用和ATMI编程的理解,提出了并解决实际工作中关键问题的思路和步骤。

  关键词:

  进程间通信 共享内存 信号量 消息队列 Tuxedo ATMI  一、进程间通信IPC主要工作机制简介(目录)

  进程间通信IPC (Inter-process communication)是一个Unix标准通讯机制,提供在同一台主机不同进程之间可以互相通讯的方法。 由于它是一种底层技术,因此具备了先天的灵活性。本文所涉及的IPC处理机制有3种:共享内存、信号量和消息队列。

  1.共享内存

  共享内存(Shared Memory)是一片指定的物理内存区域,这个区域通常是在存放正常程序数据区域的外面, 它允许两个或多个进程共享一给定的存储区,是针对其他通信机制运行效率较低而设计的。因为数据不需要来回复制,更不需要在客户机和服务器之间复制,进程可以直接读写内存,所以是最快的一种进程间通信机制。

为了实现更安全通信,它往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。在Tuxedo中,就是利用这个特性,将共享内存空间变成一种公告牌,用来公告进程状态信息和需要在进程间共享或传递的数据。

  2.信号量

  信号量(Semaphore)为那些访问相同资源的进程以及同一进程不同线程之间提供一个同步机制。它不是用于传输数据,而只是简单地协调对共享资源的访问。可以使用ipcsipcrm实现对信号量使用状态的查询和删除操作。

  信号量机制中,有一个概念是信号量组,它将相关信号量创建在同一个信号量组中,这样既便于逻辑上的清晰理解也便于管理。一个信号量必须属于一个信号量组,否则不能被系统所使用。信号量和信号量组,存储于内核系统区域,是随内核持续的,是不会被系统所自动清理的,所以当进程退出前,需要清理进程生成的那些信号量们。   信号量可以包含一个增加或减小的值,用以指出什么资源正被访问和访问的次数。它是一个记数器,用于控制多进程对共享数据的存储。一旦成功拥有了一个信号量,对它所能做的只有2种:请求、释放。当执行释放操作时, 系统将把该信号值减1。如果小于0,那就还设为0。而当执行请求操作时,系统将把该信号值加1,如果该值大于设定的最大值,那么系统将挂起你的处理进程,直到其他进程释放到小于最大值为止,这样能够保证多个进程不会造成互锁。   3.消息队列

  消息队列(MessageQueue)是一个结构化的排序内存段表,这个队列是进程存放或检索数据的地方,是一个消息的链表,可以被多个进程所共享,而不管这几个进程是否具有“亲缘”关系。每个消息队列都有一个队列头,用来描述该消息队列的大量信息,包括消息队列键值、用户ID、消息队列中消息数目等等,甚至记录了最近对消息队列读写进程的ID

  消息可以看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。消息队列与信号量一样的,是随内核持续的,只有在内核重起或者显示删除一个消息队列时,该消息队列才会真正被删除。   二、IPCTuxedo中的使用(目录)

  1. Tuxedo及核心子系统简介

  BEA Tuxedo是在企业、Internet这样的分布式运算环境中,开发和管理三层结构的客户/服务器型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。它提供了一个开放的环境,支持各种各样的客户、数据库、网络、遗留系统和通讯方式,使得开发人员能够利用它建立跨硬件平台、数据库和操作系统的交互应用系统。   Tuxedo的应用程序是以业务逻辑服务、由这些逻辑服务组织成的高层服务器组件和在服务器结点环境中的组件分布为特征的。支持这种虚拟主机环境的Tuxedo元素,包括配置信息库和实现运行时应用管理的核心子系统。限于篇幅的限制,这里只对核心子系统作简单介绍。

  1.1公告牌

  Tuxedo应用配置文件被映射到一个运行时数据结构:公告牌(BB)。BB 作为一个从配置文件中派生出来的共享信息库,驻留在每个参与到由配置文件指定的应用程序的Tuxedo的服务器结点上。BB不仅作为分布式应用的名字服务数据库,提供分布式环境下的应用对象的位置信息,还作为应用统计数据的运行时仓库。

BBTuxedo核心例程(对应用开发者透明)访问,由核心例程读/修改BB库。这个信息库提供Tuxedo完成动态客户/服务器映射所需的信息,同时也提供完成诸如负载平衡、 安全性和事务协调等功能的信息。   1.2 事务管理器

  事务管理器既是Tuxedo 体系结构的中心,也是每个Tuxedo服务器的核心 ,提供重要的分布式应用服务、命名、 消息路由、 负载平衡、配置管理、事务管理和安全性。它也包含BB结构,使用维护和访问BB信息的服务。换句话说,BB内包含有执行和管理大规模的基于组件的应用程序所需的所有信息,它将对事务管理器进程起作用。   图1显示了事务管理器的基本操作,客户请求 到达驻留在服务器上的客户代理进程 ,服务器通过注册参加到该应用中。作为客户方通讯的一部分,事务管理器访问BB,然后选择服务器,接着,服务器消息队列的地址被返回,客户方的请求被马上传送到合适的队列等待服务为它进行处理。

1 事务管理器工作流程示意图

  1.3 工作站

  工作站把Tuxedo ATMI API扩展到客户应用程序中,使得平台透明化。使用ATMI的客户端程序,可以访问在Tuxedo分布式环境中任何地方的服务。

  一个多路网关进程,称为工作站处理进程(WSL),驻留在Tuxedo应用服务器上,配合Workstation Handler(WSH),处理工作站客户和事务管理器应用服务之间的通讯。工作站处理进程把来自大量客户应用程序的请求,会聚到Tuxedo事务管理器,以便完成所管辖的服务。

  1.4 服务器及其队列

  Tuxedo提供了一个简单的可选机制,用于给应用请求和回答进行进队和出队。 Tuxedo队列服务使下列应用变得可能: 工作流应用 提交和完成要求确保完成的事务 提交时间敏感型请求 Tuxedo MIBGUI的集成 出队请求的事务控制 利用简单的服务镜向和数据镜向进行软件容错   2.影响Tuxedo IPC的系统参数

  在UNIX系统,Tuxedo大量使用IPC资源,然而通常系统默认的参数值远远低于Tuxedo应用程序的要求。因此,在安装Tuxedo应用程序前,必须合理地设置其参数值。这不仅决定应用程序能否正常操作,还将影响日后投入运行时的性能。

  以下就是系统V影响Tuxedo IPC资源的可调整系统参数。

  表1. 系统V IPC参数 名字 描述 取值 共享内存 SHMMAX 单个共享内存段的最大尺寸(以字节为单位) 越大越好,取决于可分配的系统内存 SHMSEG 一个进程可用的共享内存段的最大可用数目 取决于可分配的系统内存 SHMMNI 系统范围内允许的共享内存段最多数目 取决于可分配的系统内存 SHMMIN 单个共享内存段的最小尺寸(字节) 1 信号量 SEMMNS 系统范围的最大信号量数量 至少需满足MAXACCESSERS-MAXWSCLIENTS+13 SEMMNI 可被创建的信号集的数目 通常等于SEMMNS SEMMSL 每套信号集允许的最大信号量数量 通常等于SEMMNS,因为Tuxedo不直接对信号集,但它对每个信号集分配尽可能多的信号量 SEMMAP 控制映射表里用于管理信号量的记录数量 SEMMNI+2 SEMMNU Undo 结构的数目Default 30 至少>SEMMNS SEMUME Undo 结构中记录数量 1 消息队列 MSGTQL 系统核心中能够存储的系统消息头的最大数量 应足够大 MSGMNB 消息队列最大尺寸(字节) 至少等于MSGMAX,当消息长度大于75%MSGMNB时,消息将被存到文件中去,这将大大降低总体性能。 MSGMAX 每条消息的最大尺寸(字节) 应足够大来处理应用程序的请求。 MSGSEG 系统拥有消息段数目 取决于可分配的系统内存 MSGSSZ 每个消息段的尺寸(字节) 一条消息可使用多个消息段,取决于可分配的系统内存 MSGMNI 最多可被创建的消息队列数目 至少要大于MAXACCESSERS + 7 +number of servers with REPLYQ) +number of MSSQ sets) - number of servers in MSSQ sets) MSGMAP 控制映射表里用于管理消息段的记录数量 等于MSGSEG

本文来源:https://www.2haoxitong.net/k/doc/d8bd1b682379168884868762caaedd3383c4b587.html

《基于IPC机制浅析Tuxedo及其应用.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式