内容发布更新时间 : 2024/12/27 8:59:59星期一 下面是文章的全部内容请认真阅读。
周报
TUXEDO系统在账务和接口出现得比较频繁,除了ATM编程,域的配置也是比较重要的,这周就结合下账务和接口现有的架构总结下我对域的理解吧。 域的作用主要是实现系统间的交互,一台或者多台服务器都可以构成一个域。你可以把一个域看成域名+IP+PORT。账务这边的tuxedo系统,正常会配置两个或者三个对外的域:第一个是给账务前台使用,账务前台使用的weblogic服务器,这时前台的weblogic系统自己可以看成一个域,后台的tuxedo也是一个域。Weblogic侧和tuxedo侧都要配置好对方和自己的域名,不光是地址和端口号要一样,连域名也要两边一致。要配置地址和端口号,这个是很好理解的,这是不同主机间交互的必要条件,但是为什么域的两边都要加入对方的地址和端口呢?当我服务为单侧调用时,只调用端加入被调用方的地址不就行了么?这就如socket通信,客户端只要知道服务端的地址就行,服务端可以接收到请求时自动知道客户端的地址,而不用配置客户端的地址。一开始我不知道是什么原因,后来知道了原因,系统间交互是要讲究安全减小风险了,两侧都要配置进对方的域是为了仅仅只和对方通信,这也是域名两边也要一直的原因。如果账务的tuxedo服务随便什么域都能调用,那还得了?第二个域是用来调用计费侧的实时欠费的,这时候账务侧的tuxedo和计费侧的tuxedo分别是一个域。预付费用户要计算余额得减去实时欠费,总账表中其实就有数据,账务侧自己就能算实时话费,何必要劳烦计费侧呢?这个原因是不是为了提升缴费时的查询速度?我们都知道计费侧的事实欠费时放在内存中的,从它那去肯定要比账务侧快。其实这样做的目的并不是为了账务前台的查询,而是为了满足停复机的需求,账务侧缴费会触发停复机,缴费的数据量是很大,对时间的要求很高,即使现在这种优化了的办法有时候还是满足不了短期内高数据量的需求,比如说批扣。第三个域是给VC充值接口用的,当然有的地方没有,这种情况类似欠费前台,都是WTC互联,就不再说了。 下面说下tuxedo侧域的配置的方法,一个简单的配置文件如下: *DM_RESOURCES VERSION=U22 *DM_LOCAL_DOMAINS
test_tux GWGRP=GROUP3 TYPE=TDOMAIN
DOMAINID=\ BLOCKTIME=240 MAXDATALEN=204800 MAXRDOM=89
CONNECTION_POLICY=ON_STARTUP *DM_REMOTE_DOMAINS bank_135 TYPE=TDOMAIN
DOMAINID=\ *DM_TDOMAIN
bank_135 NWADDR=\
*DM_LOCAL_SERVICES #server[SQL_AGENT]
SHORT_SQLAGENT ##service in SERVER [sqlagent_s_serv] 03.05.29 ADD
LONG_SQLAGENT ##service in SERVER [sqlagent_s_serv] 03.05.29 ADD
其中
*DM_LOCAL_DOMAINS这个模块里面是配置本地域名,*DM_REMOTE_DOMAINS这个模块是配置远程通信域名,*DM_TDOMAIN里面用来配置所有域的地址和端口。*DM_REMOTE_SERVICES是用来配置远程域中可以被本地调用的服务名,*DM_LOCAL_SERVICES则是配置本地域中可以被远程域访问的服务。 通常配置域的方法是修改域的配置文件,然后通过dmloadcf命令来编译它。当然你也可以用dmadmin来直接修改编译后的二进制文件,但是这种方法容易出错,命令也不好记,所以很少有人这么用。域配置好后最好要检查互通情况,这时可以dmadmin下的pd –d 本地域名来查看各个域的通信情况。 Weblogic侧的域的配置是有界面,很简单,就不说了。 最初我对域的理解是负载均衡用的,而不是“用于通信”,后来我发现不对,虽然通过域我们可以实现简单的负载均衡。上次131主机上账务服务僵死导致充值接口出问题后,老陈问我可不可做一个负载均衡。我自己晚上在测服上实验了一下,在把测试主机的weblogic的前台配置了两个后台tuxedo域,一个是测试的tuxedo服务,一个正式环境下的tuxedo服务,我用老陈宁夏的号码去测试前台做缴费测试,由于测服上没有老陈的资料,正服才有,接口我一会能查到老陈的资料,一会又查不到。这说明welogic是在间隔调用两台tuxedo服务器的,那么这是负载均衡么?我的理解是不是,或者说不算一个合格的负载均衡。原因是党我把测服务停掉后,在前台查询老陈的号码时,一会能查,一会又报后台服务错误,这就说明weblogic域无法动态的根据域的服务的僵死或正常的情况实现合理的服务指派,它的“负载均衡”是一种类似随机闭着眼睛的分配。其实它的这种做法我们也是完全可以理解的,一个域和其他的域通信,它只会知道其他两个域是否处于激活状态,而根本不知道其他域下的每个服务的生存状态,所以调用服务时只能随机选择一个激活的域。负载均衡实际上是集群要做的事,一个集群可以组成一个域。在集群中,每台服务器的服务的状态系统都是知道,所以这时候的负载均衡才完善。