[原创]数据依赖路由的理解_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
6
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4097 | 回复: 5   主题: [原创]数据依赖路由的理解        下一篇 
meng.luo
注册用户
等级:上尉
经验:657
发帖:22
精华:0
注册:1970-1-1
状态:离线
发送短消息息给meng.luo 加好友    发送短消息息给meng.luo 发消息
发表于: IP:您无权察看 2014-5-5 20:33:58 | [全部帖] [楼主帖] 楼主

当遇到非常巨大的数据需要传递时,可以将单一的数据分割成几个部分进行传递。分割的标准根据其商业应用而定。例如,可以根据省份、邮政编码或金额来分割数据。而在TUXEDO系统中,数据依赖路由(DDR——Data Dependent Routing)就是为了解决此类大型商业应用,而且不需要进行任何程序工作。仅仅改变一下ubbconfig文件就可以了。数据依赖路由是根据数据缓冲区中一个指定域的值,把一个交易请求映射到一个指定的服务组的机制。

       可以在不同的资源组中配置相同的服务器,这样就可以为这些服务器提供的服务配置数据数据依赖路由。TUXEDO系统受到针对这些服务的调用请求后,就会根据请求缓冲区中某个特征字段的取值,来决定把请求转发给哪一个组中的服务器处理。


如图所示,3个资源组BANKB1、BANKB2和BANKB3中都部署了服务器TLR。TLR提供的WITHDRAWAL服务分别用于出来账号空间10000~49999、50000~79999和80000~109999中的取款业务,这时路由规则就可以按照下面的方式来定义:

*ROUNTING
ACCOUNT_ID  FIELD=ACCOUNT_ID  BUFTYPE="FML"
RANGES="10000-49999:BANK1,
50000-79999:BANK2,
80000-109999:BANK3"


       上面这个例子定义了一个路由规则ACCOUNT_ID,它以请求缓冲区中账号字段ACCOUNT_ID的取值为判断标准,把账号在10000~49999之间的交易请求转发到BANKB1组中处理,把账号50000~79999之间的交易请求转发到BANKB2组中处理,把账号在80000~109999之间的交易请求转发到BANKB3组中处理。在*SERVICES段中可以通过下面的配置来引用路由规则ACCOUNT_ID:

*SERVICES
WIDTHRAWAL    PRIO=50    LOAD=50    AUTOTRAN=Y    TRANTIME=30
ROUNTING=ACCOUNT_ID


北京联动北方科技有限公司
在这里还有一个疑问,不同的资源组中配置相同的服务器???
我们都知道,资源组中的服务器,是在*SERVERS节中通过SRVGRP=BANKB1来配置的,那么不同的资源组配相同的服务器,

TLR SRVGRP=BANGKB1 SRVID =1
TLR SRVGRP=BANGKB2 SRVID =1
TLR SRVGRP=BANGKB3 SRVID =1


这里不知道该如何配,希望大神们能指导指导




赞(0)    操作        顶端 
meng.luo
注册用户
等级:上尉
经验:657
发帖:22
精华:0
注册:1970-1-1
状态:离线
发送短消息息给meng.luo 加好友    发送短消息息给meng.luo 发消息
发表于: IP:您无权察看 2014-5-5 20:36:25 | [全部帖] [楼主帖] 2  楼

帖子中的图片没有上传成功,在这儿把贴上



赞(0)    操作        顶端 
meng.luo
注册用户
等级:上尉
经验:657
发帖:22
精华:0
注册:1970-1-1
状态:离线
发送短消息息给meng.luo 加好友    发送短消息息给meng.luo 发消息
发表于: IP:您无权察看 2014-5-5 20:37:58 | [全部帖] [楼主帖] 3  楼

北京联动北方科技有限公司



赞(0)    操作        顶端 
koei
版主
等级:大校
经验:4186
发帖:7
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei 加好友    发送短消息息给koei 发消息
发表于: IP:您无权察看 2014-5-6 6:32:54 | [全部帖] [楼主帖] 4  楼

同一个服务可以创建多个实例,所以一个服务配到多个组就很自然;

另外,又没有看域间路由?这是使用更广泛的场景。



赞(0)    操作        顶端 
koei
版主
等级:大校
经验:4186
发帖:7
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei 加好友    发送短消息息给koei 发消息
发表于: IP:您无权察看 2014-5-6 6:33:39 | [全部帖] [楼主帖] 5  楼

有没有,打错了,不是又没有。。。 北京联动北方科技有限公司



赞(0)    操作        顶端 
xiaosong.chen
高级会员
等级:上士
经验:264
发帖:0
精华:0
注册:1970-1-1
状态:离线
发送短消息息给xiaosong.chen 加好友    发送短消息息给xiaosong.chen 发消息
发表于: IP:您无权察看 2014-6-11 12:20:00 | [全部帖] [楼主帖] 6  楼

有个简单的示例可以参考:

*GROUPS
GROUP1
LMID=simple GRPNO=70 OPENINFO=NONE
GROUP2
LMID=simple GRPNO=80 OPENINFO=NONE
*SERVERS
routing1 SRVGRP=GROUP1 SRVID=250 MIN=2 MAX=10
RQADDR="Routing_Q1" REPLYQ=Y RESTART=Y MAXGEN=10 CLOPT="-A -p 1,30:2,10     -- -T"
routing2 SRVGRP=GROUP2 SRVID=260 MIN=2 MAX=10
RQADDR="Routing_Q2" REPLYQ=Y RESTART=Y MAXGEN=10 CLOPT="-A -p 1,30:2,10     -- -T"
*SERVICES
INQUIRY PRIO=50 ROUTING=TEST_ROUTE
*ROUTING
#TEST_ROUTE FIELD=ROUTE_ID
#  BUFTYPE="FML"
#  RANGES="0-5:GROUP1,0-5:GROUP2,6-10:GROUP2,6-10:GROUP1,*:GROUP1"
TEST_ROUTE FIELD=ROUTE_STR
BUFTYPE="FML"
RANGES="'1':GROUP1,'2':GROUP2"


另外要配置TEST_ROUTE FIELD中的ROUTE_ID和ROUTE_STR

环境变量中配置:

FIELDTBLS=Usysflds,appflds
FIELDTBLS32=Usysfl32,evt_mib,tpadm
FLDTBLDIR=E:\bea11\tuxedo11gR1\udataobj;E:\bea11\apps
FLDTBLDIR32=E:\bea11\tuxedo11gR1\udataobj;E:\bea11\apps


修改appflds文件,使用mkfldcs32.exe编译生成appflds.h文件。在服务中包含appflds.h,编译生成服务。



赞(0)    操作        顶端 
总帖数
6
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论