ATMP设计

发布于 2022-08-28 21:15:14 字数 3537 浏览 12 评论 4

/*******************************************************************************
* 主控进程流程 AtmpMain:
*******************************************************************************/
1、守护进程 DaemonInit();
2、设置信号处理函数 SIGCHLD、SIGCLD、SIGTERM( Exit--释放资源 )
3、加载配置信息 LoadConfig
   (1) IPC KEY信息
   (2) 服务进程列表 AtmpServer, AmtpJob, AtmpMonitor
4、创建消息队列和共享内存
5、启动所有服务进程 fork-execl
   将进程ID号保存下来存放到临时文件中中
6、循环检查子进程运行情况
   每隔20秒钟检查消息队列、共享内存、信号灯使用情况;
   检查子进程运行情况;
   根据统计情况,按照重启机制重新启动进程。
重启机制:
    (1) IPC出现问题(如消息队列堵塞等),重启所有进程 (RestartAll)
      (2) 单个子进程出现问题, 重启单个进程(Restart)
         kill(pid, 0)   kill(SIGTERM)

/*******************************************************************************
* 监听进程 AtmpServer (用于接收ATMC的连接 常连接)
*******************************************************************************/
1、获取配置信息
方案:
  (1) 消息队列方式
  (2) 命令行传入方式
  (3) 硬盘文件方式
2、创建守护进程 DaemonInit()
3、设置信号处理程序 SIGCHLD, SIGCLD, SIGTERM, SIGHUP, SIGINT, SIGSYS, SIGPIPE
4、创建socket,设置socket属性
5、绑定套接字 bind
6、监听 listen
7、循环处理ATMC连接
  (1) 使用select监听是否有连接
  (2) accept接收连接
  (3) 交易分流
       行内交易  -> MsgId1  ->   AtmpJob
                 <- MsgId2  <-   AtmpJob
       银联交易  -> MsgId3  ->   AtmpJob2
                 <- MsgId4  ->   AtmpJob2

/*******************************************************************************
* AtmpJob 调度进程
*******************************************************************************/
1、获取配置信息
2、创建守护进程 DaemonInit()
3、设置信号处理程序
4、循环从消息队列 MsgId1 获取交易请求
  消息格式:socket(2字节) + Atmc端信息( AtmcInfo )
  (1) 获取消息
  (2) 从客户端套接字获取请求报文
  (3) 报文解析
  (4) 交易预处理 PreProcess
  (5) 交易处理 WrkProcess
  (6) 交易延迟处理 AftProcess
  
  (7) 组包发送到消息队列 MsgId2
  ( 登记监控信息 WriteMonitor (MonMsgId 监控消息队列)
  (9) 返回(1)
/*******************************************************************************
* AtmpMon 监控进程
*******************************************************************************/
1、获取监控消息队列 MonMsgId
2、创建守护进程
3、创建子进程用于定时刷新监控界面
4、父进程循环处理监控信息
  (1) 从监控消息队列获取监控信息
  (2) 监控信息处理

/*******************************************************************************
* AtmpStrike 自动冲正进程
*******************************************************************************/
1、创建守护进程
2、循环处理待冲正记录
  (1) 从数据库获取待冲正记录
  (2) 调用冲正函数处理
  (3) 更新冲正结果(冲正成功,冲正次数)
  (4) 等待间隔时间 sleep(delay);

注:本人刚接触ATMP端开发不久,需望各位牛人多多指点。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

薄凉少年不暖心 2022-08-29 21:19:55

NICE JOB

怪我太投入 2022-08-29 20:32:15

原帖由 一介村夫 于 2009-10-25 11:33 发表
功能还不如我十年前做的全,钞箱管理、设备管理、部件管理……啥啥都没有。

看标题是P 不是C

枯寂 2022-08-29 20:31:10

功能还不如我十年前做的全,钞箱管理、设备管理、部件管理……啥啥都没有。

夏了南城 2022-08-29 10:45:28

坐沙发

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文