专栏名称: 京东成都研究院
京东商城成都研究院信息平台
51好读  ›  专栏  ›  京东成都研究院

B2B价格平台技术分享

京东成都研究院  · 公众号  · 成都  · 2017-10-18 17:26

正文

B2B 价格平台目前不仅仅支持上图中出现的价格类型(级别价、阶梯价、京东价、协议价、 VIP 价、一口价、市场价、零售价、批发价),此外还支持:区域价、区域级别价、区域阶梯价等价格类型;平台支撑了四大业务线:分销、大客户、掌柜宝、医药城,在平台现有 650W+ 的数据中各业务线分别占比为: 6.66% 89.75% 0.24% 3.35%

平台分别由 CBI (价格服务中心)、 SYNC (异步组件)、 SVR (平台服务)、 DAL (数据访问层)、 RPC (外部服务依赖层)、数据持久(储存层)六大模块组成。

  • 数据持久层:数据库采用 Mysql ,由于数据量大,借助公司 Gum (弹性数据库)实现分库存储和查询。由于价格接口访问量大,接口效应时间和可用率和并发性要求高,数据查询将不直接查询数据库,通过缓存实现。缓存分为两种:本地缓存 Ehcache 和分布式缓存 Redis ,其中 Redis 使用公司统一缓存服务 Jimdb ,减少维护成本,查询服务首先查询本地缓存,未命中则查询 redis 缓存。为了解决分库后,批量价格查询跨库问题,引入 Es 集群。数据库与缓存( Ehcache Redis )、 ES 集群、 Hbase 间数据同步使用 BinLake 管道减少数据延迟。 Hbase 集群用于记录价格变化历史归档信息。

  • DAL (数据访问层):价格服务中心与数据层间的通讯管道,提供统一的数据访问服务。为了满足未来价格数据的增量,价格底层数据采用分库,根据业务路由字段访问具体的数据库。

  • RPC (外部服务依赖层):负责与外部依赖接口交互,如:主站仓报价、京东价、 POP 价格、 B2B 任务引擎、返利系统等。

  • SVR (平台服务):负责完成平台服务组装。

  • CBI (价格服务中心):由 publish 服务、 pick 服务、异步组件组成。其中:

  • Publish 服务:支持价格发布服务(写服务),包括:价格设置、价格清零、价格限量(数量增、减)等。

  • Pick 查询服务:统一价格查询服务,经过流程编排计算、数据格式转换返回指定价格类型数据。流程编排,针对于不同大客户的合同类型(折扣价、实时价、京东价、稳定协议价、较低协议价、较低实时价)计算、组合出不同的价格。

  • Publish 服务、 pick 服务独立部署,避免读、写服务间互相影响。

价格服务中心的接口需提供 JSF HTTPS 两种不同的调用方式,以此便于适应不同的外部调用场景。

  • SYNC (异步组件):由 MQ Worker 组成,其中:

  • MQ 组件。负责 MQ 的接收、发送。接收的 MQ ,如: POP 价格变化 MQ (新通路 POP 商品)、京东促销价格变化 MQ (大客户),平台价格变化 MQ 发送;

  • Worker 组件。完成历史数据归档、缓存同步、数据清写和纠正;由 B2B 任务引擎执行统一调度;

上图流程展示了整个平台的数据流向,平台 B2B-PRICE-SYNC 接收到 Binlake 变更消息后,调用 B2B-PRICE-SVR B2B-PRICE-DAL 服务。 B2B-PRICE-DAL 层将开启多线程分别完成对异步数据源 Jimdb Hbase Es 集群的异步写,如果 Jimdb 集群写成功则,发送 MQ 消息通知 Ehcache 集群进行数据更新,仅当 Jimdb Hbase Es 集群全部写成功后,再由 B2B-PRICE-SYNC 对外统一发送价格平台变更 MQ 消息通知外部系统。如果 B2B-PRICE-SYNC 调用底层重试 3 次(保持幂等性)失败,则把数据写入任务引擎,由引擎调度延迟重试。

平台建设中接入了公司的 Binlake 系统,下面简单介绍下组成 Binlake 系统的三大服务组件:

  • Wave 服务







请到「今天看啥」查看全文