京东商城|全栈出征,京东技术基石如何为“618”大促护航?( 四 )



(图搜系统架构图)
1、微服务架构

  • 采用K8S进行服务部署、编排

  • 采用Istio进行负载均衡和流量管理
  • 采用OSS/mysql进行数据持久化
  • 采用redis进行业务数据缓存
  • 采用kafka/http/grpc进行服务通信
  • 2、服务分层
    • 基础服务:包含算法仓库、图片服务、索引服务
    • 核心服务:包括调度服务和路由服务
    • 业务服务:包含人脸识别、行人重识别、商品识别服务 。

    京东商城|全栈出征,京东技术基石如何为“618”大促护航?
    本文插图

    该图搜索系统的核心模块包括调度模块scheduler , 路由模块router、索引服务indexServer、注册服务register , 以及算法仓库模块algoHub 。
    针对此前版本遇到的痛点 ,
    该系统进化出一些关键技术 , 比如针对解决亿级底库 , 海量查询的痛点 , 通过把亿级底库分成多个Slice , 通过调度模块 , 根据一定的策略调度到合适的IndexServer上 , 以提高性能;之前的版本将底库和服务器做了静态绑定 , 这种方案
    灵活性、扩展性和容灾能力差 , 无法感知库数量和大小的动态变化
    , 为了支持
    实时建库、入库 , 设计了scheduler模块 , 由他来监控group、slice、indexServer的状态 , 根据这些状态对slice进行调度和rebalance , 并发布slice到indexServer的路由信息 , router模块根据路由信息 , 路由入库信息以及分发搜索请求、聚合搜素结果 。
    在性能参数上 , 618期间 , 该图搜系统承受了QPM为80W的查询洪峰 , 特征服务使用了约120张P40卡 , tps为180;索引服务使用了25台32核机器;接入服务使用了460台双核机器;底库数量达100万 , 召回率达98%以上 , 调用量最高的一天达5亿次 。
    京东商城|全栈出征,京东技术基石如何为“618”大促护航?
    本文插图

    数据蜂巢Dcomb , 保证数据传输关键时刻不掉链子
    京东商城|全栈出征,京东技术基石如何为“618”大促护航?
    本文插图

    贺思远 , 京东物流架构师
    演讲题目:《京东物流数据同步平台——数据蜂巢Dcomb大促保障之路》
    演讲精华:
    数据蜂巢(Dcomb)是一款轻量级数据处理系统, 已在京东物流大规模使用 , 系统采用分布式架构 , 具有高可用及负载均衡的特性 , 可实现数据实时采集、历史数据加工同步、实时数据单表加工同步 , 以及实时数据宽表加工同步四大功能 。

    京东商城|全栈出征,京东技术基石如何为“618”大促护航?
    本文插图

    Dcomb系统架构采用的是Master、Slave分布式架构 。 Slave内部包含pieworker、streamworker、batchworker几个部分 。 其中 ,
    stream负责数据采集
    ;Store采用文件队列 , 将解析过的数据存到本地;单表
    对数据进行消费、加工;宽表
    按照join逻辑 , 将多表关联 , 实时输出;此外还支持数据的离线同步 。 目前 , Dcomb系统已经应用于京东物流多个核心业务上 , 对业务数据进行加工同步 , 输出相关报表用以指导生产 。
    为了保证今年618顺利进行 , Dcomb系统做了很多优化工作 。
    1.
    首先是如何保证数据采集传输 。
    大促期间 , binlog生成的速度极快 , 几十秒就会生成1G的binlog文件 , 在数据采集上 , 瓶颈主要在于序列化和压缩、解析上 , Dcomb对MySQL的binlog进行预处理 , 再并发进行解析 , 以提升性能 。 2.
    传输

    在跨区域将数据从园区传到IDC时 , Dcomb也做了优化 , 比如二次压缩 , 并发传输 , 最大程度的利用区域带宽 , 以解决因网络质量引起的延迟 , 提高时效性 。 3.


    推荐阅读