我的物联网项目(四)订单系统

订单系统是整个平台的独立的核心业务流程,它本身并不复杂,最初的原始需求如下:

1.用户打开app,登录进入主界面。
2.点击扫码,扫码摇摇车身上的二维码。
3.app显示扣费,摇摇启动。
4.用户订单中心显示消费明细,商家订单中心显示收入明细。

长期写代码形成的思维习惯,脑袋里面立马意淫起来,浮现出一幅画面:
路边有辆摇摇车,用户张三打开app,迫不及待的扫码摇摇车,系统提示,未登录,张三输入手机号码和密码,登录成功,可以扫码了,这个时候系统又提示钱不够,张三只能通过app充值,充值成功后,继续扫码摇摇车,终于app提示扫码成功,消费1元,1秒钟后,摇摇启动了,用户可以在用户中心看到每次都消费明细,商家可以通过微信登录商家中心,查看每天都收入,到达一定的资金量后,可以申请提现。

从这个需求里面,大概知道一个整体流程应该怎么走,下面要做到就是根据具体的业务场景做功能设计,依然是程序员的惯性思维首先想到的是: 用户点击扫码摇摇车,然后摇摇车启动这个过程怎么交互?
其实我前面有说到过,摇摇车信号启动这个过程,已经有人在研究并打通,软件这边只需要发送相关协议即可。由于硬件这边是C语言,两边的通信采用什么方式需要考虑。当然,物联网项目现在也比较成熟,相关的解决方案也大把,我们用的是阿里云的平台,阿里云这边已经提供物联网套件的整个解决方案。我们采用的MQTT协议作为软件和硬件的一个交互中心,光听MQTT名字就大概知道MQTT属于消息中间件了,它和传统的MQ系列产品(如RabbitMQ,ActiveMQ等)稍微不一样,MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,主要用于小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量,像摇摇车(摇摇车身上装了个智能盒子,盒子里面有个2G流量卡,盒子发信号给摇摇车)这里面用的就是2G的流量卡这种业务就非常适合这种。

大概的通信过程就是如此简单:  软件应用层发送协议到MQTT中间件,摇摇车身上的盒子订阅消息,一旦收到消息,盒子就发送启动命令给摇摇车,摇摇启动。

所以订单系统的第一次发版流程如下:

备注: 由于涉及到平台的一些机密,订单系统不可能详细描述到传某个参数,怎么去数据库查询,甚至贴核心代码上来,如果有感兴趣的技术朋友,可以单独探讨!

整体功能性开发差不多,核心主干流程一旦打通(到目前第一版总共差不多花了1个半月左右时间),当然迫不及待地投入到市场进行模式验证,从投入到第一辆摇摇车开始,运营平台后台陆陆续续在产生订单数据,这个过程绝对是大幅度提高士气的,大家看到了希望,前面大概2,3周到时间里面,老板们整天盯着运营平台的订单页面不断的刷新订单记录,每看到一个用户充值的订单,都是欣喜若狂啊。

创业的路都是艰辛的,其实每个创业者真正拼的并不是纯粹的市场盈利模式,也不仅仅是管理策略,我一直认为创业公司能走多远,就看每个人在这个路上想走多远。同时,只有走的更远才能看的更远。所以一切从简,一切利益最大化,效率最大化为原则。

行业内本身经验的欠缺,时间的仓促等各方面原因立马检验出第一版上线订单系统有如下的BUG:

1.用户app扫码需要判断当前车辆(设备)是否在线,如果在线,就用户扣费,然后发送协议到MQTT。这个版本里面的判断设备在线用的是阿里云提供的一个公共接口,而且阿里云也后来指出这个接口不能用于主干核心业务流程,尤其使用很频繁的业务场景,当初没看到,结果造成很多设备其实不在线,但是用户继续扣费,发送协议到MQTT,当然盒子因为没在线,也不会发生启动指令给摇摇车,摇摇车没启动,这样造成了大量的用户投诉,说乱扣费,结果那段时间客服在后台一个个的退费(退费有依据的,看我上面的流程图就知道,盒子要是订阅到消息,会通过订单号修改数据库状态就知道盒子有没有发送启动指令了)。

2.正常情况下,就是设备真的在线整体流程走下来,但是到了设备那一端(看我图),盒子接受启动指令,发送指令给摇摇车,这个过程并不是摇摇车百分之百就一定启动,原因就是摇摇车本身硬件的不成熟。这么一来就彻底尴尬了,设备在线,用户扣费,发送MQTT协议,设备订阅消息,并修改数据库状态表示发送启动指令给摇摇车了,但是摇摇车就是没启动,简直无从查起,毫无证据保留,那段时间唯一的解决方案就是尽量送用户一些用车卷进行低调安抚了。

于是,经过讨论,修改如下,在确定设备有返回的时候在去下订单,即在MQTT应用层这一层去下订单。

这个算是订单流程系统的第二次发版,又过了大概一周,重新优化,原因是依然有个问题,那就是盒子发送指令到摇摇车依然不是百分之百靠谱能启动,这样导致用户要是扫码没启动,虽然没扣费了,但是平台也没下订单,没有订单依据,用户体验也不好。当初由于硬件这边条件上的限制,在设备这边流程上不能做到:盒子接受启动指令,发送指令给摇摇车,摇摇车收到指令回复盒子,盒子这个时候再返回信息到MQTT。

目前的硬件条件暂时还做不到这种流程,订单系统再次进行第三次发版,主要改动点如下:

1.用户扫码摇摇车,如果设备在线,账号余额充足,先下一个预扣费的订单,然后发送协议到MQTT。

2.盒子监听MQTT消息,收到消息,发送启动指令到摇摇车,然后上报消息(发送指令到MQTT)。

3.MQTT应用端监听上报消息,收到消息,并核对流水号凭证,这个时候才去做订单具体业务,包括用户扣费,商家分成,修改订单状态等操作。

这次改版虽然改进了用户扫码后没有反应,有数据追查的凭证,相对提高了用户的体验,但是盒子发送启动指令到摇摇车和盒子上报消息到MQTT依然是个并行的操作,依然存在盒子发送启动指令到摇摇车有可能不能正常启动的可能(包括摇摇车本身的问题导致),所以后续在摇摇车本身的质量上包括启动技术实现方案上需要不断的去改善改进。

时间: 2024-10-11 11:24:33

我的物联网项目(四)订单系统的相关文章

浅谈工业级物联网项目架构设计及实施

[说明]这是发表在<程序员>电子刊10月B架构专题文章 网页链接:http://www.csdn.net/article/2015-10-31/2826093 摘要:互联网+和物联网由于发展的侧重点不同,在做架构设计上肯定有所不同.而以中小项目为主的物联网项目,其实更看重的,一是系统稳定可靠,能保证系统长期稳定的运行.本文主要介绍工业级物联网项目的架构设计及实施. 前言 早在1999年就已经有了“物联网”这个概念,但是直到十年之后的2009年,IBM提出“智慧地球”的概念,才推动很多国家把物联

我的物联网项目(二)初建团队

今年三月初也是机缘巧合下接触这个项目,说实话也是非常看好这个项目,以前做过企业级项目,互联网项目,但是物联网项目也是第一次接触,相关资料了解了下何为物联网,原来是物物相连的互联网,与传统行业相结合的互联网.首先简单描述下这个项目的主要业务: 摇摇车又称摇摆机,摇摆车,其实就是儿童投币那种摇摇车,是游乐设备中的一种,大多在路边商家门店,比如超市,母婴店较多,在一些商场也经常见到也有它的存在.存在即是合理,这里不过多讨论经济学的东西,我们其实要做到就是在传统的摇摇车身上赋予更多的使用方式,并连接互联

我的物联网项目(十二) 单体应用架构不行?

单体应用架构在创业型项目里面是非常合适的,毕竟它主要的担当还是在验证创业模式以及迅速功能实现,所以它从开发到部署,在少量开发人员的基础上能非常减少成本,主要是门槛低,开发效率也非常高.到目前为此,这个物联网项目从开发开始到现在线上运行大概经历了5个月左右的时间,订单数据从日订单几百到现在的七八万,在应用层本身来说并没什么压力瓶颈,中间主要升级了数据库RDS的配置,由原来的4核8G升级到了8核16G,对数据库稍微做了些优化,依然跑到很稳定.公司从实施想法开始,到目前半年的时间里面,不断的总结创业思

美团外卖订单系统演进

美团外卖从2013年9月成交第一单以来,已走过了三个年头.期间,业务飞速发展,美团外卖由日均几单发展为日均500万单(9月11日已突破600万)的大型O2O互联网外卖服务平台.平台支持的品类也由最初外卖单品拓展为全品类. 随着订单量的增长.业务复杂度的提升,外卖订单系统也在不断演变进化,从早期一个订单业务模块到现在分布式可扩展的高性能.高可用.高稳定订单系统.整个发展过程中,订单系统经历了几个明显的阶段,下面本篇文章将为大家介绍一下订单系统的演进过程,重点关注各阶段的业务特征.挑战及应对之道.

开箱即用!Android四款系统架构工具

开箱即用!Android四款系统架构工具_天极网 一款功能强大且实用的开发工具可以为开发者简化开发流程,提高工作效率,允许开发者在应用开发本身投入更多的时间和精力,从而提高作品质量.本文就为大家分享4款实用的Android应用架构工具. 开发者若想开发出一款高质量的应用,一款功能强大的开发工具想必是不可或缺的.开发工具简化了应用的开发流程,也能使开发者在应用开发本身投入更多的精力.本文就为大家带来4款实用的Android应用架构工具. 1. Spring for Android Spring f

物联网项目落地困境

[说明]这是2016年8月左右写的一篇文章,虽然过去了半年时间,不过里面的一些看法还是有借鉴意义的. 一直从事物联网领域相关的工作,前不久也陆陆续续写过几篇关于物联网的文章,对物联网的前景是一直看好的,但是具体实施起来,要真正让物联网项目落地,却不是一件很容易的事.最近一两年实施了几十套污水监控.垃圾监控等物联网系统,并且现在也一直在实施部署物联网养殖监控系统(目前已经实施了近十套)就深有感触.单就落地这一点来说,当前的物联网项目有点类似智能家居,前景很美好,但近十多年的发展,除了一些高档住宅外

IBM:要从小处着手,尽快启动物联网项目

进入2017年,物联网在中国的发展正处于提速阶段.中国电信预计在2017年6月建成全球最大的NB-IoT网络之一,工信部近日表示正积极研究物联网相关政策并将尽快出台相关标准以支持物联网产业的发展.而根据全球移动通信协会GSMA的观点,中国已迅速成为全球最大的M2M(机器对机器)市场. 而对于企业用户来说,物联网被视为数字化转型的关键路径.在一份由ARM和IBM共同赞助.由经济学人智库完成的<2017物联网商业指数>报告中,55%的全球受访企业期待物联网技术在未来三年能帮助他们降低内部运营成本.

极速发展的饿了么订单系统架构演进--转

原文地址:http://www.infoq.com/cn/articles/eleme-order-system-architecture-evolution 本文根据石佳宁在2016ArchSummit全球架构师(深圳)峰会上的演讲整理而成,ArchSummit北京站即将在12月2日开幕,更多专题讲师信息请到北京站官网查询. 先自我介绍一下,我于2014年加入饿了么,那时正是饿了么飞速发展的起始点.我一直从事后台领域的研发,比如BD系统.客服系统和订单系统,现在专注交易架构相关的工作. 今天要

物联网项目的思考

一直从事物联网领域相关的工作,前不久也陆陆续续写过几篇关于物联网的文章,对物联网的前景是一直看好的,但是具体实施起来,要真正让物联网项目落地,却不是一件很容易的事.最近一两年实施了几十套污水监控.垃圾监控等物联网系统,并且现在也一直在实施部署物联网养殖监控系统(目前已经实施了近十套)就深有感触.单就落地这一点来说,当前的物联网项目有点类似智能家居,前景很美好,但近十多年的发展,除了一些高档住宅外,智能家居并没有进入寻常百姓家,个中原因是值得玩味和深思的. 互联网时代催生了阿里.腾讯.百度等网络公