zoukankan      html  css  js  c++  java
  • tuxedo 配置小记

    初次接触。从昨天下午弄到现在,终于添加好了一个简单的服务。

    先简单了解一下tuxedo 的原理:

    The heart of the Tuxedo system is the Bulletin Board (BB). This is a shared memory segment that contains the state of a Tuxedo domain.

    看来IPC真是个很重要的知识些。tuxedo 这些大名鼎鼎的分布式系统,用的无非就是IPC技术。

    1、服务(service )是 tuxedo 的核心概念。每个服务对应c 中的一个函数。服务是阻塞运行的。

    两个请求先后到达时,后来的必须等先到的处理完毕才能被处理。为了解决排队的问题,可以把一个程序启动多份实例(启动的进程数量在 *.ubb中指定 ),tuxedo 会自动地找到空闲的进程。这就是所谓的负载均衡(load balance )。

    2、程序(server)是服务的集合。一个程序中可以有多个服务。编译时使用 -s 选项将这些服务导出,以供 tmboot识别。

    2、一个程序可以运行多个进程实例。同一主机上有若干程序/进程,一个进程可以提供若干服务。这些服务可通过函数呼叫(tpcall())的方式来相互调用,无论进程内部还是进程之间。

    3、进程的类型:一个主机上可以有三种进程:管理进程(admin process 或者叫 bbl process )、网关进程(gateway processes )、服务进程( server processes ),用来同步主机间的信息。
    4、tuxedo 的长/短连接,阻塞/非阻塞的概念。
    tpconnect() 是长连接。可以是阻塞模式(request/response communication )。也可以是非阻塞模式(Conversational communication )。
    tpcall() 是一种阻塞的短连接。

    程序开发:
    tuxedo 使用了 dispatch机制:在编译时提供了 service_name 和 service_instance 的映射关系。client 可以指定 service-name 向管理进程申请调用相关的 service。( connect 或 call )。管理进程则根据 service_name 来将处理请求 dispatch 到指定的 service(进程)。
    管理进程和 service_name 是通过数据结构 tpsvcinfo 来实现数据交换的:

    struct tpsvcinfo {
    #define XATMI_SERVICE_NAME_LENGTH  32
            
    char    name[XATMI_SERVICE_NAME_LENGTH];//  service name invoked 
            long    flags;          //  describes service attributes 
            char    *data;          //  pointer to data 
            long    len;            //  request data length 
            int     cd;             //  connection descriptor 
            long    appkey;         //  application authentication client key 
            CLIENTID cltid;         //  client identifier for originating client 
    };

    以上,date 和 len 指定了 client 的数据输入缓冲的地址和长度。 cd 即 socket 句柄。可以看出,无论 call 还是 connect ,内部都是使用了 socket 来实现的。

    添加一个服务的完整过程:

    1、写程序,编译。编译时用 -s 来指定服务名称

    2、将程序放到指定的目录下。

    3、在 .ubb 中添加 service 。这里可以指定进程最大数量,最小数量,所属的 group 等等。

    4、编写 Bulletin Board config file ( ubbconfig file ),并使用 tmloadcf 命令编译将其编译为二进制文件,称做 TUXCONFIG 文件。该文件的文件名在环境变量中设定的:

    $env |grep TUXCONFIG
    TUXCONFIG=/hbtest/bin/bill.tux

    5、编写工作站配置文件( domain configure file,用于发布服务和注册路由 )使用 dmloadcf 命令编译为二进制文件。

    6、tmboot -s serviename 启动服务。 

    缩略语介绍:
    ATMI:Application-to-Transaction Monitor Interface
     相关资料:

    维基百科上的 Tuxedo (software) 

     化繁为简来学习编写BEA TUXEDO会话的程序 

  • 相关阅读:
    【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
    【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】
    【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
    【Java EE 学习 34】【struts2学习第一天】
    【JavaScript中的正则表达式】
    【Java EE 学习 33 下】【validate表单验证插件】
    【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
    【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】
    【Java EE 学习 32 上】【JQuery】【选择器】
    【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】
  • 原文地址:https://www.cnblogs.com/diylab/p/1525086.html
Copyright © 2011-2022 走看看