作者:张岩,2016年加入京东,熟悉大型分布式系统设计及开发,有丰富的web开发实战经验,对spring等开源框架有源码级了解,目前主要负责京麦插件市场及交易平台的研发工作。 
责编:钱曙光(qianshg@csdn.net)

来到京麦团队一年多,回顾这一年的工作,是时候对我们京麦交易平台做个总结了,那么京麦交易平台从无到有,从0到1都经历了什么呢?下面跟随笔者看看交易平台的系统演进及如何稳定的对外提供支付能力的。

正文

京麦交易平台是为我们内部系统附能交易能力的支付平台,它包含下单、支付、结算等核心功能,其次还是涉及了一些发票、优惠券的其他业务,我们致力于打造一个平稳、高效、开发的交易平台,接下来笔者会从0到1介绍一下我们交易平台。

一、插件市场

为了提高京麦的开放能力,打造一个从服务商入驻、服务提审、审核发布、订购履约及服务商订单查询的交易生态闭环,设计初始我们搭建了京麦插件市场,为服务商和商家提供了交易桥梁,实现了PC版和移动版的插件市场,这个时候并没有交易平台的概念,我们将整个交易流程都放在了插件市场中,下图是整个交易生态系统的功能架构图:

接下来随着我们业务的发展,插件市场中不断有新的服务商接入,也有我们自营的商品发布,此时我们的系统显得过于臃肿,业务复杂导致我们系统之间交互也变得复杂,所以为了更好的支撑业务,并使系统更加稳定、易扩展,将支付交易能力解耦出来,我们决定打造了京麦交易平台。

二、交易平台

由于接入系统较多,业务需求非常复杂,对系统稳定性及扩展性要求非常高,所以交易

平台采用了组件化设计,将系统拆成5大核心组件分别是交易网关、结算页、订单中心、支付中心、补偿机制,满足了业务需求。

下面就交易平台的设计思想及几个关键的功能点,来看看是如何稳定、高效易扩展的。

组件化

首先通过对交易平台的组件化设计,对系统功能进行复用,自由组合实现不同的业务,如:交易平台目前支持2种接入方式,来满足不同接入系统的接入需求。

1、交易网关—>结算页—>订单中心—>支付中心

2、交易网关—>订单中心—>支付中心

引导路由

由于系统业务的复杂性,商家进入结算页展示哪些支付方式的逻辑是非常复杂的,并且随着业务的发展,未来判断的逻辑更加复杂,大量的if else语句令我们非常痛苦,新增一个条件变的异常复杂,因此我们设计了引导路由,将影响的支付方式的条件抽象出一个路由规则,每个路由规则都是可以自定义配置并且可插拔的,那么根据每个路由规则计算出的支付方式取交集,得出最终的支付方式输出到结算页。

订单状态机

对于一个交易系统来说订单状态的流转是核心中的核心,为应对订单状态的不断增多,以及状态流转的复杂性不断增大,我们设计订单状态机,采用了设计模式中的状态模式,实现对订单状态的统一管理,扩展订单状态只需要增加新的状态类和行为即可。

补偿机制

对于交易系统来说,支付成功率就代表着系统的稳定性,一笔订单能否及时完成并进行后续履约对用户来说是至关重要的。由于系统之间不可避免的会出现网络抖动、接口不稳定的情况,这就会导致订单卡单,对用户来说是不可接受的 ,那么对于这种异常情况,设计了相应的补偿机制,及时修复异常数据,并使订单状态继续向下流转;除此之外对于每一个重要的支付结算步骤都会记录日志,方便对问题订单的追踪和恢复。

在线支付:定时任务反查对账单。

货款抵扣:推送结算单失败后,立即自产自消MQ进行失败重试。

经验与总结

在整个交易平台一步步走到今天,踩过很多坑,遇到过很多问题,在解决问题的同时,也成长了不少,也有几点小收获:

  1. 核心思想,系统间一定要做好解耦,不断拆分。

  2. 尽量使系统组件化或者说是在系统设计时,要考虑到复用,不要重复造轮子。

  3. 做好系统监控,系统出问题是正常的,如何快速定位、解决问题才是关键。

2018年我们会对系统进行一次重大升级,期待下一次的分享,能给大家带来更多干货,一起讨论学习。

相关阅读:

京东11.11:京麦服务市场交易平台备战实践


1月13日,SDCC 2017之数据库线上峰会即将强势来袭,秉承干货实料(案例)的内容原则,邀请了来自阿里巴巴腾讯微博网易等多家企业的数据库专家及高校研究学者,围绕Oracle、MySQL、PostgreSQL、Redis等热点数据库技术展开,从核心技术的深挖到高可用实践的剖析,打造精华压缩式分享,举一反三,思辨互搏,报名及更多详情可点击此处查看。

原文地址 http://blog.csdn.net/dev_csdn/article/details/78981674

京东京麦交易平台设计与实现(转载)相关推荐

  1. 京东京麦交易平台设计与实现

    作者:张岩,2016年加入京东,熟悉大型分布式系统设计及开发,有丰富的web开发实战经验,对spring等开源框架有源码级了解,目前主要负责京麦插件市场及交易平台的研发工作. 责编:钱曙光(qians ...

  2. 京东京麦开放平台的高可用架构之路

    京东京麦开放平台的高可用架构之路 京麦是京东商家的多端开放式工作平台,是京东十万商家唯一的店铺运营管理平台,为京东商家提供在移动和桌面端的操作业务,京麦本身是一个开放的端体系架构,由京东官方和 ISV ...

  3. 京东京麦商家开放平台的消息推送架构演进之路

    1.前言 京麦实时消息推送是京东的京麦商家开放平台的核心组成部分.从消息源到消息中心再到触达用户,以及最终根据消息协议呼起操作页面,京麦实时消息推送是一个完整且健康的生态闭环.下面我会详细的介绍下京麦 ...

  4. Netty干货分享:京东京麦的生产级TCP网关技术实践总结

    1.引言 京东的京麦商家后台2014年构建网关,从HTTP网关发展到TCP网关.在2016年重构完成基于Netty4.x+Protobuf3.x实现对接PC和App上下行通信的高可用.高性能.高稳定的 ...

  5. 京东 八爪 机器人 编程_京东京麦JDA流程自动化机器人

    来源:京东卖家论坛 商家在日常操作中存在着较多重复性工作,需要占用大量时间,例如商品属性调整.退款审核.对账.图片打标等等.这不仅浪费了人力财力,也增加了工作出错的风险.这些工作往往存在着操作路径固定 ...

  6. 深度linux使用京麦,京东京麦开放平台的高可用架构之路

    京麦是京东商家的多端开放式工作平台,是京东十万商家唯一的店铺运营管理平台,为京东商家提供在移动和桌面端的操作业务,京麦本身是一个开放的端体系架构,由京东官方和 ISV 为商家提供多样的应用服务. 京麦 ...

  7. 谈京东京麦TCP网关的Netty应用实践

    张松然,京东商城,商家研发部架构师.丰富的构建高性能高可用大规模分布式系统的研发.架构经验.2013年加入京东,目前负责京麦服务网关的系统研发工作. 京麦从2014年构建网关,从HTTP网关发展到TC ...

  8. 2020-09-16Netty干货分享:京东京麦的生产级TCP网关技术实践总结

    1.引言 京东的京麦商家后台2014年构建网关,从HTTP网关发展到TCP网关.在2016年重构完成基于Netty4.x+Protobuf3.x实现对接PC和App上下行通信的高可用.高性能.高稳定的 ...

  9. 计算机毕业设计Java京津冀畅游网设计(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java京津冀畅游网设计(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java京津冀畅游网设计(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

最新文章

  1. 关于App开发:模拟服务器数据接口 - MockApi
  2. 浅析聚簇索引与非聚簇索引(也叫二级索引)
  3. Redis—字符串和SDS
  4. VB 设置控件边框颜色(如:List、Text、Picture)
  5. Mac与Windows或Linux的键鼠共享神器Synergy
  6. vue怎么实现手风琴效果_Vue中使用v-for制作动态手风琴效果
  7. Oracle 进程 说明
  8. php excel引入tp,TP5引用PHPExcel实现导入导出功能
  9. selector多路复用_selectors模块 - 实现多路复用简单介绍
  10. Linux(Centos)服务器时间校准
  11. 2022华为杯研究生数学建模竞赛F题思路解析
  12. java服装销售系统课程设计_毕业论文(设计)基于javaweb的服装销售管理系统的设计与实现.doc...
  13. 二元logistic模型案例_二元Logistic模型(上)
  14. Spring 的事务传播机制
  15. 后盾网php 百度盘,后盾网PHP操作exce视频教程
  16. SVN入门教程,超简单,30分钟学会!
  17. 两个人体红外传感器计数,判断屋里的人数的单片机程序
  18. Python——实现防止微信撤回消息
  19. 预编译器错误:代码使用了less语言,但未安装相应的编译器插件,请前往插件市场安装该插件
  20. 安卓Android轻松完成支付宝支付教程

热门文章

  1. 404页面跳转到其他页面的安全做法
  2. 设计模式PDF下载了4.0万本!那,再肝一本《Java面经手册》吧!
  3. 【CV-Paper 19】PReLU:Delving Deep into Rectifiers
  4. 深入理解JVM 一字节码详解
  5. 死链URL抓取【土拨鼠网站日记管理(分析推送二合一)】宝塔插件之死链蜘蛛列表说明书
  6. python 绘制3D散点图
  7. 引用计算机写源码,C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件。 ”的解决...
  8. 射频功率放大器 简介
  9. 四种方法生成XML文件
  10. 什么是GB、BIG5、GBK、GB18030字集?