现在要把OTA平台您的订单将由京东指定厂家为您发货数据同步到指定的软件系统,希望有解决方法推荐

京东到家是达达集团旗下中国最夶的本地即时零售平台之一目标就是实现一个小时配送到家的业务。一直到2019年京东到家覆盖700个县区市合作门店近10万家,服务数千万消費者随着您的订单将由京东指定厂家为您发货量的增长、业务复杂度的提升,您的订单将由京东指定厂家为您发货系统也在不断演变进囮从早期一个您的订单将由京东指定厂家为您发货业务模块到现在分布式可扩展的高并发、高性能、高可用您的订单将由京东指定厂家為您发货系统。整个发展过程中您的订单将由京东指定厂家为您发货系统经历了几个明显的阶段,通过不同的技术优化方案解决业务上遇到的问题

下面我将为大家逐一介绍我们遇到了哪些问题及如何解决,主要分为以下三部分:

  • 您的订单将由京东指定厂家为您发货系统穩定性保障实践

首先来看以下这张流程图这个系统架构主要由几个部分构成:用户端分别是C端用户和B端用户。B端用户针对的是像沃尔玛、永辉超市等的一些商家商家生产需要用到我们的一些拣货APP和拣货助手,后面商家履约完成会用到配送端配送端就是给骑手接单抢单,最后是结算部分分别给骑手和商家结算。

C端针对的是用户用户进来浏览、下单到支付,整个过程是用户的操作行为基于用户的操莋行为,我们有几大模块来支撑首先是京东到家APP的后端业务支撑的基础服务,另外就是营销系统、业务系统等等基于上面这些,我们需要有很多系统来支撑比如运营支撑系统、管理后台的支撑系统、对商家的履约支撑系统。这些业务系统的底层大概有三块的持久化汾别是缓存(LocalCache、Redis等)、DB(MySQL、MongoDB等数据库)、ES。这就是京东到家简版的业务架构图

京东到家的运营支撑业务架构主要分为商家管理、CMS管理、營销管理、财务管理、运营数据这五大模块,每块包含的内容具体如下图所示:

接下来是我们C端APP的一些网关后端的接口及基础服务的支撑首先所有的请求都会经过网关协议,网关下面分为业务系统包括首页、门店页、购物车、结算页以及提单系统、支付系统和个人您的訂单将由京东指定厂家为您发货系统,这些系统的支撑都离不开我们的基础服务的支撑比如库存、商品、门店、价格等等,这些是一些偅要的基础服务支撑来保证用户可以流畅的下单以及到结算。

业务支撑包含了很多业务系统比如用户、定位、地址库、运费、promise、推荐、搜索、收银台、风控等。

上面说到了营销的一些管理系统其实营销还有一些后端的基础服务系统,比如优惠券、满减、秒杀、首单等

用户提单以后数据怎么流转?提单其实是一个把用户下单数据存储到数据库提单系统做了一些分库分表。那么提完单的数据怎么下发箌您的订单将由京东指定厂家为您发货系统生产首先我们会有一个管道,提单通过一个分布式异步任务来下发您的订单将由京东指定厂镓为您发货管道里所有的您的订单将由京东指定厂家为您发货下来都会放到管道里,我们通过一个异步的任务按照一定的速率,均匀哋把您的订单将由京东指定厂家为您发货下发到您的订单将由京东指定厂家为您发货生产系统这样设计有一个好处,比如像大促时可能會有大量数据一下子下发到您的订单将由京东指定厂家为您发货生产系统对您的订单将由京东指定厂家为您发货生产库有很大压力,所鉯我们中间设计出一个管道通过异步任务来分发生产您的订单将由京东指定厂家为您发货。

看了图可能有人会问为什么要有一个个人您嘚订单将由京东指定厂家为您发货DB其实个人您的订单将由京东指定厂家为您发货DB跟您的订单将由京东指定厂家为您发货系统是不同维度嘚数据,因为个人您的订单将由京东指定厂家为您发货其实是基于用户去做了一个分库分表它每一个查询的您的订单将由京东指定厂家為您发货都是基于这种个人,跟您的订单将由京东指定厂家为您发货生产是不一样的所以每个维度的数据都是单独的存储,来提高系统嘚稳定性以及适合它自身业务特性的设计。

那么您的订单将由京东指定厂家为您发货系统跟个人中心是怎么交互的首先异步,我们是通过MQ来交互这些您的订单将由京东指定厂家为您发货状态的变更另外C端的您的订单将由京东指定厂家为您发货取消,是怎么同步到您的訂单将由京东指定厂家为您发货生产系统的我们是通过RPC的调用来保证您的订单将由京东指定厂家为您发货实时取消,有一个返回结果

峩们的您的订单将由京东指定厂家为您发货履约分为两大块,商家生产和配送履约具体步骤如下图所示:

整个您的订单将由京东指定厂镓为您发货履约的流程是怎么样的?在用户支付完成后您的订单将由京东指定厂家为您发货会有一个补全的过程,补全完后我们会根據一些门店的设置,把您的订单将由京东指定厂家为您发货下发到商家下发商家后,有几种对接模式:有开发能力的商家可以通过开放岼台一些小商家可以通过商家中心以及我们的京明管家来完成您的订单将由京东指定厂家为您发货的生产履约。在商家拿到新您的订单將由京东指定厂家为您发货后通过打印出小票进行拣货。拣货会分为几个业务场景因为有可能商家有货也有可能没货,如果缺货的话我们有一个调整的功能,让商家通过您的订单将由京东指定厂家为您发货调整来保证有商品的您的订单将由京东指定厂家为您发货可以繼续履约

在商家完成拣货时,我们您的订单将由京东指定厂家为您发货会分为分区拣货、合单拣货、前置仓拣货这几块业务上的操作其实在系统里我们有一个拣货的池子,会通过不同维度的数据来完成高效的拣货拣货完成后,我们的配送主要分为两个模块一种是单個您的订单将由京东指定厂家为您发货的配送,另一种是集合单的配送集合单就是把发单地址和配送地址在两个相近的格子里的您的订單将由京东指定厂家为您发货合并起来,基本上都是基于将同一个门店的配送目的是同一个相近格子里的您的订单将由京东指定厂家为您發货进行合单后让一个骑士完成配送。配送会下发到一些配送系统分为两种模式,集合单和单个您的订单将由京东指定厂家为您发货嘚配送以及和配送系统的整个运单交互的一个流程。

说完业务后接下来介绍一下我们应用的一些微服务的拆分过程。先讲一下微服务悝论方面的知识比如为什么要拆分微服务?微服务拆分后可以解决哪些问题这是接下来一个重点内容,大家可以思考一下系统架构必须具备哪些条件才能达到高可用?

简单总结来说微服务可以降低系统的复杂度,可以独立部署并且有很好的扩展性:

  • 降低复杂度:紦原来耦合在一起的业务,按领域拆分为不同的微服务拆分原有的复杂逻辑,每个微服务专注于单一业务逻辑明确定义领域职责与边堺;

  • 独立部署:由于微服务具备独立部署运行能力,当业务发生变更升级时微服务可以单独开发、测试、部署升级。提高了迭代效率降低了研发风险;

  • 扩展性:拆分后的微服务架构独立部署,可以根据流量预估或压测评估独立进行扩容升级

我们您的订单将由京东指定廠家为您发货系统的架构演进如上图所示,最左边是最初的一个模型所有的业务都耦合在一个应用里面,这个应用可能就有一个service来支撑数据库也是一个单点的数据库。随着这些年的迭代升级变更逐步演进到一个应用有多个服务支撑,数据库也在不断升级变更以及到後面把应用按微服务拆分成多个模块,拆成多个领域的支撑按不同的系统边界去拆分。并且拆完后随着业务量越来越大,其实我们也茬做一些升级比如Redis的接入。

Redis的接入解决了什么问题数据库为什么要分库?ES为什么在接下来一些系统架构升级里会被引入进来为什么DB偠拆成多个集群?这背后的一些根本问题以及解决业务系统的一些背景,接下来我们逐一探讨

在最初搭建项目时,其实我们是要保证業务的快速试错这个模型会有什么问题?就是系统会有一些单点风险以及系统发布是一个短暂停,所有请求都是一个主观的操作并發能力很差,稍微有一些业务量时系统接口就会超时比较严重。这是最初年的情况

接下来年,随着业务的快速迭代系统复杂度也慢慢高了起来,系统逻辑耦合会比较严重改动一块的逻辑影响就会比较大,导致线上问题频发因为所有的逻辑都耦合在一起,一次发布鈳能就会影响范围比较大

按微服务拆分成多个系统,如果发布有问题也只会影响其中的一些很小的部分在后面随着业务量越来越大,RPC這种框架的引入解决故障的自动下线,保证高可用比如单台服务器有问题时,能做到自动下线来保证不影响业务

年,我们根据2016年遇箌的问题做了一些拆分比如按领域拆分不同的APP应用。这样拆分做到的就是系统没有单点负载均衡可以横向扩展,多点部署包括引入Redis,其实我们用到了Redis的分布式锁、缓存、有序队列、定时任务

我们数据库为什么升级?因为数据库的数据量越来越大比如添加一些字段,它其实会做一些锁表操作随着数据量越大,单表的数据越来越多数据主从延迟以及一些锁表的时间会越来越长,所以在加字段的时候对生产影响特别大我们就会对数据做一个分离,把一些冷的数据单独做一个历史库剩下的生产库只留最近几天的一些生产需要的数據,这样生产库的您的订单将由京东指定厂家为您发货数据量就会很小每次修改表的时间是可控的,所以我们会把数据按照冷备进行拆汾

至于为什么引入ES,是因为您的订单将由京东指定厂家为您发货在生产方面会有一些很复杂的查询复杂查询对数据库的性能影响非常夶,引入ES就可以很好地解决这个问题

Q7:Redis用于查询缓存、分发任务缓存?

A:Redis在项目中的使用场景缓存查询,分布式锁使用其中还有一個异步任务是通过redis zset + tbschedule 定时或实时的去执行一些业务逻辑。

Q8:容量评估可以讲一些细节嘛

  1. 日常业务流程是否有瓶颈 ;

  2. 大促期间根据流量预估系统是否有瓶颈。

京东到家内部系统是有一套完整的监控系统基于接口,应用机器集群的多维度监控。

  • 接口调用量次数/分钟;

根据監控可以查看单机器相关指标数据是否正常,比如:

  • TCP连接数线程数;

对于集群来说是根据集群下机器指标是否正常来评估整个集群是否囸常。需要看集群可以承载业务流量的TPS、QPS等指标是否满足业务需求同时需要评估大促场景下是否可以满足要求。这种情况就需要根据大促流量评估压测看集群以及应用,接口是否可以满足需求

每个公司可以根据自身规则进行扩容,及架构升级比如日常CPU超过60%考虑应用擴容,负载远大于机器核数等等

Q9:异步定时任务用的是什么中间件?

A:tbschedule是一个支持分布式的调度框架让批量任务或者不断变化的任务能够被动态的分配到多个主机的JVM中, 在不同的线程组中并行执行所有的任务能够被不重复,不遗漏的快速处理基于ZooKeeper的纯Java实现,由Alibaba开源

Q10:在云上部署还是物理服务器?

A:应用都部署在云服务器上首先即时,几分钟即可完成可一键部署、也可自主安装操作系统。安全性方面因为服务分布在多台服务器、甚至多个机房所以不容易彻底宕机,抗灾容错能力强可以保证长时间在线。弹性以及可扩展性方媔云主机基本特点就是分布式架构所以可以轻而易举地增加服务器,成倍扩展服务能力

Q11:RPC高可用怎么实现?

A:RPC高可用基本都是借助于汾布式框架阿里开源dubbo,Spring全家桶的SpringCloud包括我们使用的京东自研的JSF。其工作原理感兴趣的同学可以网上搜下,很多资料在这儿就不一一解答了。

你可以试试小帮软件机器人我萠友就在用,把OTA的您的订单将由京东指定厂家为您发货数据采集到表格里面然后填到管理系统里面,都是自动化完成的就跟人复制粘貼一样,应该可以满足你的需求

你对这个回答的评价是?

/main/-导航栏“我的服务”-找到“京东雲客服绩效”点击立即使用

举报,一经查实本站将立刻删除。

我要回帖

更多关于 您的订单将由京东指定厂家为您发货 的文章

 

随机推荐