图1 Tuxedo网关连接Web服务器和Tuxedo

Tuxedo网关采用“请求/应答”模式,不仅将Web服务器的请求发送到Tuxedo平台,同时,接收Tuxedo平台的处理结果,将处理结果回送到Web服务器,至此,完成一次交易。

3 总体设计

3.1 系统结构

从系统并发能力和Tuxedo对客户端的并发限制考虑,Tuxedo网关采用多进程并发服务器模型,由多个进程协同处理来自Web服务器的Tuxedo访问请求。同时,采用并发方式,可以实现对Tuxedo用户License的共享复用。

从吞吐量考虑,Tuxedo网关与Web服务器的通信采用长连接、异步读写方式,与Tuxedo的通信采用异步调用方式,每个进程可以同时处理多个Tuxedo访问请求。

系统中包含INIT、MANAGER和PROXY三类进程,INIT进程和MANAGER进程在整个系统中各有一个,PROXY进程的数量可以根据需要配置,各自功能如下:

MANAGER进程:负责与Web服务器的通信,接受来自Web服务器的连接和访问请求并回送结果;将请求分发给PROXY进程处理并接收PROXY进程的结果;负责流量控制和系统本身的负载均衡;守护PROXY进程。

PROXY进程:负责与Tuxedo服务通信;应用协议与ATMI协议的转换;调用Tuxedo服务并接收调用结果。每个PROXY进程连接一个Tuxedo系统,可以通过本地客户端或WorkStation方式与Tuxedo通信。

INIT进程:MANAGER进程的守护进程。MANAGER进程与Web服务器之间采用基于TCP/IP的Socket长连接,与PROXY进程之间采用FIFO通信。

图2 Tuxedo网关系统结构

3.2 工作流程

WEB服务器访问Tuxedo服务的一个完整的交易过程如下所示:

1. 启动Tuxedo网关,端口;

2. WEB服务器主动连接Tuxedo网关的端口,Tuxedo网关接受连接;

3. WEB服务器将应用数据按照协议封装成报文,通过TCP/IP协议发送到Tuxedo网关;

4. Tuxedo网关接收到该报文,MANAGER进程根据一定规则将其分配给指定的PROXY进程处理;

5. PROXY进程接收到MANAGER进程发送的请求,将报文转换为TuxedoATMI类型的数据,通过ATMI接口调用Tuxedo服务;

6. PROXY进程接收到Tuxedo服务返回的结果,将其转换为特定格式发给MANAGER进程;

7. MANAGER进程接收到PROXY进程的结果,将其按照协议封装成报文发送给WEB服务器;

8. WEB服务器接收到Tuxedo网关发来的响应,解析报文,取出应用数据,至此完成一次访问。

整个过程中,WEB服务器和Tuxedo服务之间传递的应用数据对Tuxedo网关透明,Tuxedo网关只负责协议转换,应用数据的具体格式和内容由WEB服务器与Tuxedo服务协商确定。

3.3 部署方式

根据访问Tuxedo服务方式的不同,Tuxedo网关可以采取两种部署方式。

一种方式是将Tuxedo网关与Tuxedo服务部署在同一用户环境下,Tuxedo网关做为本地客户端与Tuxedo通信。调用tuxedo

另一种方式是将Tuxedo网关部署在任意用户环境下,Tuxedo网关通过WorkStation方式与Tuxedo通信。

第一种方式效率较高,但仅限于访问同一用户环境下的Tuxedo服务;第二种方式具有更大的灵活性,可以访问不同Tuxedo平台的服务,但效率会受一定的影响。

4 总结

Tuxedo网关使基于Java和.NET平台的Web服务器能够实时访问Tuxedo服务,局域网内在WindowsJava客户端看到的单次访问时间可以达到1ms以内(消息长度1k以内),处理能力1800TPS(非极限,对应CPU仅15%左右)以上,为前后台之间的通信提供了一种新的解决方案,有望替代Jolt、WTC等产品的部分功能,节约成本。

这是自毕业以来独立完成的比较复杂的一个系统,也是最感兴趣的一个系统,基本上涵盖了从需求分析到设计、实现、测试的整个过程,在这个过程中得到了很多同事的帮助,学到了不少知识。

当亲自动手,从零开始的时候,很多事情并没有想象的那么简单。在这个过程中出现了许多意想不到的困难,很多时候甚至产生放弃的念头,幸运的是总能得到同事的支持和鼓励,风雨过后见彩虹,最终得以实现了最基本的功能。

补充2012年9月测试数据:

并发处理能力:14000QPS,非极限,单PC机客户端测试程序能力有限

服务端资源占用:CPU idle 35%,vsz 800M, rss 350M, loadAverage<2

服务端配置:UNIX, 2*2core(UltraSPARC,1.5GHz),16G Mem

客户端配置:PC WinXP,2*2core(Intel,2.2GHz), 2G Mem,120thread/process *7

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-27448-1.html

tuxedo客户端调用java_tuxedo调用客户端_tuxedo调用java socket_调用tuxedo相关推荐

  1. java 调用 go_实践总结:在 Java 中调用 Go 代码

    在 Java 中调用 Go 的大致过程如下go --> cgo --> jna --> java 整个过程要解决的问题主要两个:数据类型在两种语言中如何转化 何时清理无用的数据 下面 ...

  2. java kotlin相互调用_Kotlin的互操作——Kotlin与Java互相调用

    原标题:Kotlin的互操作--Kotlin与Java互相调用 互操作就是在Kotlin中可以调用其他编程语言的接口,只要它们开放了接口,Kotlin就可以调用其成员属性和成员方法,这是其他编程语言所 ...

  3. java调用方法出现i 2a_性能-Java方法调用与使用变量

    性能-Java方法调用与使用变量 最近,我与团队负责人就使用临时变量与调用getter方法进行了讨论. 很长时间以来,我一直认为,如果我必须多次调用一个简单的getter方法,我会将其放入一个temp ...

  4. 解决用 posman 调用 openai API 正常,用java代码调用超时问题

    参考:https://github.com/PlexPt/chatgpt-java 一.接口调用 posman 调用正常 java 调用报错:ConnectException: Connection ...

  5. java中调用python

    在Java中调用Python </h1><div class="clear"></div><div class="postBod ...

  6. 在Java中调用Python

    写在前面 参考:https://www.cnblogs.com/nuccch/p/8435693.html 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然 ...

  7. 在Java中调用Python,java面试题,java初级笔试题

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 写在 ...

  8. Java JNI调用IC卡读卡器

    Java JNI调用IC卡读卡器 Java调用IC卡读卡器的DLL一般有以下2种方式: 1.使用JNative第三方库调用IC卡读卡器dll的接口. 2.使用JNI调用IC卡读卡器dll的接口. JN ...

  9. gRPC的通信方式-客户端流式、服务端流式、双向流式在Java的调用示例

    场景 gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...

  10. 服务器端调用智能合约,《精通以太坊:开发智能合约和去中心化应用》 ——3.4 远程调用以太坊客户端...

    远程调用以太坊客户端 远程调用以太坊的客户端是指相比全功能客户端,只提供了一部分功能的客户端.这些客户端通常不会保存完整的区块链数据,所以它们的启动速度更快,也不会消耗大量的磁盘空间. 远程调用以太坊 ...

最新文章

  1. php删除指定对象的属性及属性值
  2. mysql 一条sql update多条记录
  3. python round函数_Python round() 函数
  4. 《Python Cookbook(第3版)中文版》——1.9 在两个字典中寻找相同点
  5. Python Django 常用命令:创建迁移文件/数据库建表/创建admin超级用户
  6. VLAN访问控制列表(VACL)的配置方法
  7. 强化学习扫盲贴:从Q-learning到DQN
  8. 应用容器Application container
  9. openresty 前端开发序 1
  10. unity摄影机depth模式_[蛮牛教程] Unity3D 浅析-Camera(摄像机)
  11. 算法入门:股票最大收益
  12. 评职称自费出书多少钱
  13. /deep/ 在谷歌浏览器89+版本失效问题解决
  14. 【引用】DMA内存申请--dma_alloc_coherent
  15. 2021年展望Android原生开发的现状,你不懂还不学?
  16. 网易邮箱支持手机收发邮件的服务器,手机如何使用IMAP服务收发网易的邮件
  17. 网站银联支付证书更换
  18. 要求树根像果实一样作贡献,就只好把它做柴烧了
  19. python和java学哪个好-Python和Java二选一该学啥?
  20. 关于@GeneratedValue和@GenericGenerator的学习笔记

热门文章

  1. java操作pdf之iText快速入门
  2. Python爬取北京市所有电子眼名,再也不怕被隐藏摄像头偷拍
  3. RBF神经网络滑模控制
  4. 在Ubuntu 将PHP5升级到PHP7.0 PHP7.1
  5. php网页版进销存源码ERP多仓库管理系统源码
  6. 软考 java程序设计,软考程序员考点Java语言程序设计之数组
  7. Win7安装IIS出错,总是提示“出现错误。并非所有的功能被成功更改。”
  8. visio2013剪除_Visio 2003 图形剪切合并 高级技巧
  9. 目标检测应用竞赛 | 天池铝型材表面瑕疵(含数据集、详细解决方案)
  10. 火焰之纹章java武器代码_《火焰纹章回声:另一个英雄王》金手指全代码一览 代码大全...