论坛首页 Java企业应用论坛

异构系统分布式事务、安全、性能

浏览 9219 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-11-09  

 

现有一项目,业务场景如下:

 


 









用户通过手机发送支付请求到运营平台,运营平台通过解析请求内容,知道手机用户希望向vb开发的应用系统支付200元。此时运营平台首先会查询支付平台,该手机用户是否有足够的钱支付,如果有,则通过支付平台扣除手机用户200元,并转入到位VB应用对应帐户,支付平台支付成功后,返回信息给运营平台,运营平台会向VB应用系统发送信息XX用户通过支付平台向你支付了200元。如果运营平台在查询手机用户在支付平台的钱不够,会向银行系统发送请求,希望银行系统能从手机用户银行帐户中转帐到支付平台或者VB应用的帐户上。

在这样的一次支付过程中,手机应用、运营平台,VB应用、支付平台、银行系统会可能涉及,怎样才能做到以下几点:

一、性能。因为一个业务请求中可能在几个应用中进行数据交互,怎样提高数据的交互速度,从而提高手机客户的体验。

二、安全。因为整个应用核心就是钱的转移,安全是最重要的。

三、分布式事务。这是整个系统中最难的部分,怎样做到用户的一个支付行为,无论那个节点发生问题,所有相关的应用中数据是一致的。



各位大牛能停下来,发发你们的想法或者失败的经验。谢谢。。。

 

  • 大小: 18 KB
   发表时间:2009-11-09  
1. 业务处理速度基本取决于银行和支付系统,你再快也没用
2. 各环节都加密吧
3. 全局事务就别想了,那素不可能的。就算勉强实现了,也会慢得要死。
0 请登录后投票
   发表时间:2009-11-09  
速度方面可以尝试使用MQ,用异步处理以提高用户体验。告知其已经提交,处理完发短信确认就是。
安全一般使用证书加密验证。
事务方面最麻烦。分布式系统的事务恐怕只能通过BASE和CAP策略解决。不过如何实现这两种策略我不清楚。
0 请登录后投票
   发表时间:2009-11-10  
跟银行和支付平台的接口基本上不是你能决定的吧。如果是JMS的还有可能跟你的java平台统一事物。如果是文件什么的不能控制分布式事务的方式就本着宁可漏发,不要重发的原则做吧。
0 请登录后投票
   发表时间:2009-11-10  
得SOA吧,用些产品容易些
0 请登录后投票
   发表时间:2009-11-10  
整个应用最难的就是事务,如果银行、支付平台、运营平台数据不一致的话,我想这用户可能是无法接受的。
0 请登录后投票
   发表时间:2009-11-10   最后修改:2009-11-10
  从用户扣费的时效要求有多高?如果不高,可以考虑用异步的方式,模仿企业向银行送盘的方式从移动运营商或者银行扣款。这既可提升用户的体验,还可以避开使用全局事务带来的一系列恐怖问题。
  另外,异常总是不可避免的,要考虑到扣款成功,但被告知失败(反之亦然)的处理方案。这种事故发生的几率很小,但不可不考虑。
0 请登录后投票
   发表时间:2009-11-10  
zhxp791008 写道
整个应用最难的就是事务,如果银行、支付平台、运营平台数据不一致的话,我想这用户可能是无法接受的。

  保持数据的一致性是目的,使用事务是其中的一种手段。涉及金额的数据不一致,无论问题出在哪一方都无法接受。如我上面所说,可以考虑使用异步的方式。
0 请登录后投票
   发表时间:2009-11-10  
接口的两端两两保证数据一致,从而保证整个流程下来数据一致,不知道行不行?

另外数据不要求实时吧?比如新进了一笔钱,允许过一段时间才能查到记录。这样可以用缓存或临时表啥的来提高性能

没做过跟钱相关的系统,胡言乱语的,希望大虾指正。
0 请登录后投票
   发表时间:2009-11-10  
异步肯定是必然的,同步就见了鬼了.楼主的系统不说.单是银行内转笔钱就可能去人行转了一圈才回来.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics