美文网首页
业务系统中间状态设计的重要性

业务系统中间状态设计的重要性

作者: jerrik | 来源:发表于2017-09-15 11:30 被阅读0次

    一、进入正题

    笔者从属于金融领域,肯定免不了要和银行打交道。业务系统要想做到和银行完全隔离,就免不了中间代理,中间代理只专注于处理和银行对接,接收请求,响应请求,处理编码解码、重连等一系列操作。具体业务系统怎么调用,他们无需关心。这样业务系统就能和银行系统完全解耦开了,即使将来某一天银行的通信协议或者接口变更,对业务系统来说,都是无感知的,只需在中间代理层做修改即可。

    交互图交互图

    这里我主要想强调下中间代理中间状态的重要性。业务系统发起一笔业务,中间系统接收业务系统请求,封装通信协议 发送给银行,然后银行解析请求,操作具体业务,将结果返回给中间代理,中间代理负责解析请求,将结果告诉业务系统。试想中间代理要是状态不明,哪条链路断了都不清晰,解决问题就十分困难了。
    其中涉及到4个链路,每个链路都有可能出问题。而且中间代理层要涉及到对请求和响应消息的编码和解码,有可能会因为一方的更改没有告诉另一方导致失败,所以中间代理层必须得定义出6个状态来标识一个正常的请求响应链路进行到了哪一步,而且都要详细记录请求报文和响应报文。

    业务系统->中间代理: 已上报
    中间代理自处理:上报待处理
    中间代理->银行: 已发送
    银行->中间代理:待响应
    中间代理自处理:响应待处理
    中间代理->业务系统:已完成

    只有把这些状态边界定义清楚了,才能知道系统的问题出在哪里,才会有针对性的解决方案。

    二、思考

    其实不仅仅是业务系统,设计到很多层面。例如 当我们的业务系统依赖MQ来做解耦时,就可以利用中间状态来实现消息的一致性问题,要保证业务成功 消息就成功,同理,业务失败,消息也要失败。(具体可以参加大型网站与java中间件中的互联网中间件这一章节)

    相关文章

      网友评论

          本文标题:业务系统中间状态设计的重要性

          本文链接:https://www.haomeiwen.com/subject/zvjssxtx.html