技术讨论——地铁二维码扫码乘车场景

对于这种实际场景的应用考虑做的比较少,考虑一下这些点。

1.设计难度,为什么难
2.金融安全角度的难点
3.网络通信问题,不可靠网络场景的处理
4.信息传递,各项事件的依赖传递怎么实现
5.二维码的设计和识别问题
6.面向异常设计,若中间流程出现异常怎么办,出站或进站出现延迟阻塞怎么办
7.网络交互的框架设计
8.各种实际场景问题

设计难度

  1. 使用人数考虑
  2. 网络状况不稳定的考虑
  3. 将二维码和其他付款方式结合兼容
  4. 设备布设的问题

解决的方法:统计地铁人流量;使用被动扫码,维护扫码设备网络的稳定性;设计特定的设备,联系地铁站设计等相关知识。实际上是一个软硬件结合的问题。

金融安全角度的难点

是一个软硬件结合的系统,硬件出问题的话需要回复的事件较长,软件的话可能有恶意二维码的情况,如果是主动的扫码的话,可能会有这种情况,被动的话需要做好恶意访问的拦截。

网络通信问题,不可靠网络场景处理

使用的是先乘车后付费的形式,采用的是自动扣款的方式,所以扣费的行为是可以延迟进行的。扫二维码实际上是一个身份、事件和地点凭证,扫码设备是固定的,保证这部分网络的稳定情况下,要解决的网络问题主要是手机设备的问题,主要是二维码生成的问题,这里使用的是离线支付的方式,二维码是采用令牌可以离线生成的,而且是动态的,如果是静态的会有被盗刷的风险,动态二维码也可以保证信息的一致性。

信息传递,各项事件的依赖传递怎么实现

扫二维码可以获取账号时间地点信息,只要经过处理就可以计算出票价等相关信息。

二维码的设计和识别问题

二维码的生成可以离线实现,主要是结合了令牌生成器的原理。这样的话二维码也是动态的,防止盗用情况的出现。

采用被刷的形式,而不是主动扫码的形式,因为主动扫码可能会被而已篡改二维码而达成某些不法目的,同时网络维护的主体是车站设备而不是手机端,维护的难度和稳定性更高。

异常?

框架设计?

实际场景?