【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

京东 618:三大系统防作弊,挑战直面用户的困难

  • 2016-06-17
  • 本文字数:4632 字

    阅读完需:约 15 分钟

京东的前端业务系统发展到今天,已经基本覆盖了京东交易环节的全流程。而今年的 618,除了流量上的考验,还增加了大量个性化数据、动态定价等诸多京东智能卖场所提出的新要求。那么,京东的前端是如何应对的呢?用到了哪些工具和技术呢?

受访嘉宾介绍

尚鑫,京东商城网站移动研发部负责人。2007 年加入京东,见证了京东 IT 系统演进的全过程,先后负责京东多个核心系统,熟悉大流量高并发系统架构设计。

InfoQ:晨总(京东集团 CTO 张晨)提到,今年 618 大促“PC 端大部分活动都是由京东大脑来支持的”,对于用户来说,很多数据都是个性化的。请您讲一下,对于首页来说,哪些数据是由京东大脑支持的,哪些是人工或半自动化设置的。对于不同类型的数据,处理的方式有何种不同?

尚鑫:首页对用户个性化概念是在 2014 年首页改版的时候提出的。随着近两年京东对大数据的运用以及京东大脑的成熟,今年 618 期间将由智能卖场为用户提供更加精准的品牌个性化推荐。

针对不同用户,在区域进行对首页各楼层下商品的分区域展示、广告的分区域投放、今日推荐、猜你喜欢,以及 618 期间的品牌盛典,都进行了针对用户粒度的个性化商品推荐以及活动推荐。

对于一些楼层活动入口以及频道列表入口目前多采用排期自动更换的半自动化设置来满足业务人员对于首页运营的需求。

对于个性化数据的展示一般多采用前端异步实时调用的方式来获取个性化数据,做到了粒度为每个 PV 的实时商品运算。人工运营的部分以时间为单位由后端系统提前生成好展示给用户。

InfoQ:作为大型电商网站,京东的页面有很多种,如首页、单品页等。请您讲一下目前京东页面的种类,并举例说明针对不同页面的特点,分别采用了怎样的架构,遵循的原则是什么?

尚鑫:承载用户浏览、导购商品的页面主要为首页、频道页、列表页、单品页。它们各自的功能如下:

  • 首页是京东的门面承载着整个京东所有业务体系以及重大活动(如 618)的流量入口。
  • 频道页作为用户场景化、内容化导购的入口为用户展示商品以及活动。
  • 列表搜索页则以类目和关键词为用户提供精准的单品入口导流。
  • 单品页则作为用户购买商品前的最后一个商品展示环节为用户展示商品的所有信息细节。

从页面的流量特点上来说,首页和频道页的访问都较为集中,而列表搜索页和单品页则体现为长尾和分散。所以针对不同的流量和展示特点系统架构层面也存在着很大的差别。

首页系统作为门面对于页面的响应时间和首屏速度有着极高的要求,所以在进行设计的时候我们将首页进行了碎片化的处理,根据业务场景以及优先级将首页切分成了若干碎片并引入了 BigPipe 的概念来提升页面加载速度增强用户访问体验。对于可进行静态化的部分通过静态化的处理减少后端运算提升处理速度。页面上的 css/js、dns 预解析等方面也做了相应的优化来提升用户访问速度。

与首页流量特点形成鲜明对比的单品页访问分散并且长尾,在架构设计上考虑更多的是对于系统间依赖的解耦、对于差异较大的垂直业务的支持以及亿级商品数据的存储和展示。

所有的网站前台系统在设计上都会遵循数据闭环、动静分离、异步化、无状态、水平扩展几个原则进行设计保证系统的稳定性、扩展性以及对于业务瞬息万变的响应。

InfoQ:首页承载了大量二级页面的入口,那么首页的这些数据是采用怎样的方式加载的?采用了哪些技术来保证快速高效地处理这些数据?目前,京东的前后端是否已经完全分离?是否有中间层?

尚鑫:目前首页前后端已经完全分离,首页的数据维护以及各下级页面入口都是通过 CMS 系统后台来完成内容搭建维护的。各个业务系统数据更新通过消息的方式通知到中间层来实现数据更新、加工最后同步到前台展示层。像首页的非个性化数据一般是已经预先排期生成好的,所以除非遇到紧急的临时更新一般情况下首页的数据更新是非常高效实时的不会存在延迟的情况。

InfoQ:商品详情页的数据,尤其是价格方面的数据是非常重要的,对于数据的处理遵循哪些原则?采用了哪些技术来保证数据的准确性?另外,智能卖场提到此次 618 大促活动中会植入动态定价,前端是如何对此进行保障的?

尚鑫:商品详情页的数据来自于多个业务系统。数据的闭环、消息化、异步化三个原则是保证商品详情页稳定高效的基石。

每分钟几十万次的商品信息操作更新通过消息的方式通知到商品详情页系统再由系统将页面展示所需的数据异构到本地进行闭环处理最后展示给用户。

对于价格、库存这种重要实时性要求高而且敏感的数据采用异步的方式实时获取从而保证展示的准确性。

InfoQ:为了备战今年的 618 大促,京东针对 618 的压测方案有哪些?压测的数据是怎样设定的?具体采用了哪些技术?是如何进行压测的?

尚鑫:由于网站系统读大于写的特点,一般压测都是为了找到系统的读性能瓶颈。

之前采取的是通过 TCPCopy 的方式进行线上压测,但由于 TCPCopy 的压测方式具有一定的风险性,所以后来放弃了这种方式。现在采用的是从线上 nginx 日志中离线采集访问请求然后处理成压测请求脚本后使用 jmeter 对目标机进行压测。压测一般是看正常情况下的系统访问承载能力的极限、异常请求下的系统容错能力和系统承载能力以及自我恢复能力。

压测的数据根据以往系统日常流量和峰值流量的访问来进行压测基数的设定,然后在此基础上进行成倍的增加请求,并通过性能监控系统辅助,来找到系统的性能拐点以及承载的极限点。而异常压测则是将系统依赖的服务进行干扰模拟接口服务不稳定或不可用的情况下系统容错能力和稳定性。

压测后根据两种场景的结果来对系统进行优化提升性能和对缺陷进行改造提升稳定性。

InfoQ:为了实时了解 618 大促的情况,前端是否有相应的监控平台?具体的功能是什么?采用了哪些技术实现的?

尚鑫:监控我们从两方面来做。服务端的监控,京东有统一的监控平台,可以通过它看到系统在服务端的性能表现。而对于在浏览器端展现的页面层面,我们内部有个前端监控系统,主要从以下两个角度对页面进行实时监控:

  • 主动监控,针对页面上的一些异步服务进行延迟、错误主动信息上报,提前发现有问题的服务并采取降级等相关措施。
  • 被动监控,通过抓取设定的样本页面并模拟浏览器的访问来看页面上 dom 元素内容加载情况、页面乱码、接口内容获取失败等问题并进行报警。这种和前端用户访问直接相关的风险点在后端是很难做监控的尤其在页面启用 cdn 后,前端页面的展示和后端完全分离开来这时候就需要一些被动抓取式的监控策略来保证出现。

目前我们对京东流量 Top10000 的页面及其各种临时的促销活动页面进行快速自动抓取。这类页面如果产生错误状态码(404,50x)、页面空白、跳错误页等,就会立即触发报警系统,后台主要使用 NodeJS 异步任务队列定时执行。而针对页面内容的检测通过系统的规则引擎对页面 dom 信息和预期规则进行匹配如果验证错误就会记录错误信息,保存现场快照,然后触发报警机制进行邮件或者短信通知。

InfoQ:在 618 大促过程中,前端是如何对用户的数据进行统计分析的?使用了哪些工具?如何快速筛选出非正常用户并对其进行快速隔离?

尚鑫:我们将从用户可以直接感知的前端业务风控系统进行剖析:

  • 交易订单风控系统

交易订单风控系统主要致力于控制下单环节的各种恶意行为。该系统根据用户注册手机,收货地址等基本信息结合当前下单行为、历史购买记录等多种维度,对机器刷单、人工批量下单以及异常大额订单等多种非正常订单进行实时判别并实施拦截。

目前该系统针对图书、日用百货、3C 产品、服饰家居等不同类型的商品制定了不同的识别规则,经过多轮的迭代优化,识别准确率已超过 99%。对于系统无法精准判别的嫌疑订单,系统会自动将他们推送到后台风控运营团队进行人工审核,运营团队将根据账户的历史订单信息并结合当前订单,判定是否为恶意订单。从系统自动识别到背后人工识别辅助,能够最大限度地保障订单交易的真实有效性。

  • 爆品抢购风控系统

在京东这样的电商平台,每天都会有定期推出的秒杀商品,这些商品多数来自一线品牌商家在京东平台上进行产品首发或是爆品抢购,因此秒杀商品的价格会相对市场价格有很大的优惠力度。但这同时也给黄牛带来了巨大的利益诱惑,他们会采用批量机器注册账号,机器抢购软件等多种形式来抢购秒杀商品,数量有限的秒杀商品往往在一瞬间被一抢而空,一般消费者却很难享受到秒杀商品的实惠。针对这样的业务场景,秒杀风控系统这把利剑也就顺势而出。

在实际的秒杀场景中,其特点是瞬间流量巨大。即便如此,“爆品抢购风控系统”这把利剑对这种高并发、高流量的机器抢购行为显示出无穷的威力。目前,京东的集群运算能力能够到达每分钟上亿次并发请求处理和毫秒级实时计算的识别引擎能力,在秒杀行为中,可以阻拦 98% 以上的黄牛生成订单,最大限度地为京东的正常用户提供公平的抢购机会。

  • 商家反刷单系统

随着电商行业的不断发展,很多不轨商家尝试采用刷单、刷评价的方式来提升自己的搜索排名进而提高自家的商品销量。随着第三方卖家平台在京东的引入,一些商家也试图钻这个空子,京东很早就提出了对此类行为的“零容忍”原则,为了达到这个目标,商家反刷单系统也就应运而生。

商家反刷单系统利用京东自建的大数据平台,从订单、商品、用户、物流等多个维度进行分析,分别计算每个维度下面的不同特征值。通过发现商品的历史价格和订单实际价格的差异、商品 SKU 销量异常、物流配送异常、评价异常、用户购买品类异常等上百个特性,结合贝叶斯学习、数据挖掘、神经网络等多种智能算法进行精准定位。而被系统识别到的疑似刷单行为,系统会通过后台离线算法,结合订单和用户的信息调用存储在大数据集市中的数据进行离线的深度挖掘和计算,继续进行识别,让其无所遁形。而对于这些被识别到的刷单行为,商家反刷单系统将直接把关联商家信息告知运营方做出严厉惩罚,以保证京东消费者良好的用户体验。

前端业务系统发展到今天,已经基本覆盖了京东交易环节的全流程,从各个维度打击各种侵害消费者利益的恶意行为,几年时间,成绩斐然。

InfoQ:为了保障 618 大促的顺利进行,前端做了哪些预案?在何种情况下回启动这些预案?启动的方式是怎样的?

尚鑫:由于前端系统调用了众多业务系统的接口服务,所以我们的预案大多会集中在对于前端调用接口的治理上。

我们开发了前端使用的“三峡系统”来为前端系统提供接口的监控、降级、切换一站式服务。“三峡”,顾名思义就是作为一个总闸来控制所有前端系统对接口的调用和内容展示。从接口的性能、可用性、数据正确性几个方面进行监控,并提供便捷的降级和切换功能。这样可以保证一旦监控发现依赖的接口服务性能或可用性下降,我们就可以一键式从后台对接口服务进行降级、切换处理保证前台页面展示。

InfoQ:京东的前端团队是如何分工的?在 618 大促期间是如何保障团队内部的高效沟通与合作的?与其他部门又是如何协作的?

尚鑫:目前京东前端团队主要负责京东商城的网站前台系统建设。团队主要根据业务线进行垂直划分。但团队的内部沟通并不会影响团队的沟通效率和合作。用户的每一次访问、每一个点击,都会将每个团队串在了一起。

我们的内部沟通不拘泥于任何形式,只要有问题出现大家就会聚在一起进行讨论,并形成一个可执行的方案进行推进。

对于外部,由于我们是处在系统链的最前端,所以我们会建立主动沟通机制,和各个团队进行随时随地的沟通,来预防和解决任何可能出现影响用户体验的问题。同时,由于我们部门所负责的各个系统全部面向客户,有任何的小问题都会严重影响到客户体验。因此,我们也建立了问题快速响应的专职团队,负责及时解决客户反馈的任何问题。将用户体验的损失降低到最低。

2016-06-17 21:574506
用户头像

发布了 28 篇内容, 共 16.6 次阅读, 收获喜欢 29 次。

关注

评论

发布
暂无评论
发现更多内容

数字税务时代的革新利器:低代码开发平台助力税务办公数字化大步迈进!

快乐非自愿限量之名

人工智能 低代码 数智化 税务云

领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)

汀丶人工智能

人工智能 深度学习 nlp 知识图谱 智能问答

超级App快速开发的一种创新模式

FinFish

小程序 小程序生态 超级app 小程序化

春分将至,发版当时:StoneDB-5.7-v1.0.3版本正式发布!优化主备能力,提高主从同步性能,众多细节优化,快来体验~

StoneDB

版本更新 StoneDB

消除企业信息孤岛的低代码开发平台

力软低代码开发平台

终结对列存数据库的偏见!SAP HANA数据库的高效事务处理 | StoneDB学术分享会 #7 原创 读论文的StoneDB StoneDB

StoneDB

MySQL 数据库 StoneDB

MySQL生态的下一代HTAP数据库创新与实践 | StoneDB邀您参加第12届数据技术嘉年华(2023 DTC)

StoneDB

MySQL 数据库 StoneDB

API全场景零码测试机器人——ATGen带来“超自动化”测试模式

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

Region Failover在GreptimeDB 集群中的实现

Greptime 格睿科技

时序数据库 云原生数据库 failover region datanode

阿里云 EMAS & 魔笔:6 月产品动态

移动研发平台EMAS

阿里云 消息推送 移动开发 低代码开发 移动测试

从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于 REfO 的简单KBQA

汀丶人工智能

人工智能 自然语言处理 深度学习 知识图谱 智能搜索

Gluten + Celeborn: 让 Native Spark 拥抱 Cloud Native

阿里云大数据AI技术

后端 企业号 7 月 PK 榜 Push Shuffle

华为云SI伙伴新路径启航,携手全面开拓市场新空间

新消费日报

一站式运维管家 ChengYing 主机接入原理解析

袋鼠云数栈

开源 运维

什么是CI/CD?让你的项目变得更加敏捷!

这我可不懂

CI/CD Github Action

神州数码:我们和阿里云是市场和技术的共同体

新云力量

云计算 阿里云 神州数码

入围 | StoneDB 顺利晋级“2022 年中国开源创新大赛”决赛,并荣获 “2022中国优秀开源项目/社区”奖项

StoneDB

MySQL 数据库 StoneDB

StoneDB 开源社区月刊 | 202303期

StoneDB

MySQL 数据库 StoneDB

提高开发质量的 5 个必要实践

互联网工科生

Java Code Review 开发质量

OWASP 定义的大模型应用最常见的10个关键安全问题

华为云PaaS服务小智

云计算 华为云 代码检查 华为开发者大会

活动回顾 | StoneDB亮相2023数据技术嘉年华:增强AP、升级TP、信创替换,让万千DBA用得更省心,企业用得更省钱

StoneDB

数据技术 StoneDB 数据技术嘉年华

OpenTiny 前端组件库正式开源啦!面向未来,为开发者而生

OpenTiny社区

开源 Vue 前端 UI组件库 angluar

华为云“All in ”大模型:革命性助推!华为盘古3.0点燃人工智能巨星之梦

EquatorCoco

华为云 盘古大模型 大模型 数智化

低代码平台之流程自动化测试

鲸品堂

低代码 企业号 7 月 PK 榜

数智浪潮!低代码开发平台扬帆迈向智慧诊疗领域新纪元!

不在线第一只蜗牛

人工智能 低代码 数智化 医疗健康

MySQL:我的从库竟是我自己!?

爱可生开源社区

软件测试/测试开发丨Windows系统chromedriver安装与环境变量配置

测试人

软件测试 windows 环境变量 测试开发 chromedriver

低代码平台实用吗?有哪些大型企业在用低代码?

优秀

低代码

国家电投江西公司与特斯联设立合资公司 发掘资本在新能源行业的潜在投资机遇

TE智库

京东618:三大系统防作弊,挑战直面用户的困难_语言 & 开发_韩婷_InfoQ精选文章