• 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会话的程序 

  • 相关阅读:
    猜数字和楼层扔鸡蛋问题
    python+selenium+unittest----skip(跳过用例)
    python+selenium+unittest----常用属性详解(框架属性详解)
    php----等比缩放图片
    Vue----生命周期
    js----定义变量的几种方式
    quartz(7)-源码分析
    quartz(6)--集群
    quartz(5)--作业管理和存储
    quartz(4)--quartz.properties文件
  • 原文地址:https://www.cnblogs.com/diylab/p/1525086.html
Copyright © 2020-2023  润新知