一文了解电商大促系统的高可用保障思路-献给技术伙伴们

本文面向受众可以是运营、可以是产品、也可以是研发、测试人员,作者希望通过如下思路(知历史->清家底->明目标->定战略->做战术->促成长)帮助大家能够了解电商大促系统的高可用保障,减少哪些高深莫测的黑话和高大尚的论调,而是希望有个体系化的知识让读者有所得。

一、【知历史】电商大促的简介

1.1、什么是电商大促

电商大促是电商平台组织的一种大型销售推广活动,目的是通过提供各种优惠、折扣等方法,提高商品销售额和网站流量,增加消费者的购物欲望,以实现销售目标。电商大促活动通常会在一些特定的节点或者节日举行,比如“双11”、“618”、“黑色星期五”等,这些时期的电商大促极具吸引力,既有大量的商品打折优惠,又有丰富多样的活动供消费者参与,是电商平台提升销售业绩的重要手段。 电商大促活动期间,大家可以购买到平时心仪已久的商品,并且价格通常会远低于平时,而电商平台也会通过活动吸引更多的消费者流量和购买力,进一步提升其在电商行业的影响力。电商大促不仅仅是一种营销方式,也是电商平台和消费者互动、提高用户粘性的有效方式。

1.2、典型的电商大促活动简介

618大促:每年6月是京东的店庆月,也是京东的电商促销主战场,在店庆月京东都会推出一系列的大型促销活动,从6月1日延续至6月18日(近几年开始从5.20日左右开启预售模式,但是整体时间依然是以6月1日开门红为准)。从2010年开始,以满减、优惠券等活动的方式,通过单品类、跨店铺等方式逐步蔓延到23年的百亿补贴,历时已经13年之久为整个京东零售平台的GMV营收带来不小的贡献。

双十一&双十二: 双十一是指各网络购物平台在每年11月11日的大型促销活动,最早起源于中国阿里巴巴旗下购物网站在2009年11月11日举办的“淘宝商城促销日”,现已演变成全行业一年一度的购物活动,及影响全球零售业的消费现象。2012年11月11日网络购物全日销售额超过美国网路星期一,成为全球最大的互联网的购物节日。双十一购物节战场延伸进12月,即“双十二”。(备注:淘宝商城项目刚独立,后更名为天猫,该营销活动主打品牌商的商品,是想要模仿美国感恩节大促销这种活动,通过一个活动或一个事件,让消费者记住淘宝商城)。(参考维基百科)

黑色星期五:Black Friday最早于2005年美国网络shop.org创造的购物节日,与1111被电商炒成购物节原因相似。与之相对应的还有兴起于法国、葡萄牙与德国的Cyber Monday。关于黑色星期五这一叫法的起源,较普遍的一种认为看法是,由于这一天是感恩节(11月第四个星期四)后开业的第一天。再加上人们通常由此开始圣诞节大采购,很多商店都会顾客盈门从而有大额进帐。传统上商家会用不同颜色的墨水来记账:红色表示亏损即赤字;反之黑色则为有盈利。商家把这个星期五叫做黑色星期五,用以期待这一天过后,年度营收由负转正,由红字转为黑字。而商店的员工则使用黑色星期五这一名字来自嘲,表示这一天会非常忙碌。黑色星期五这一天一般都会是一个大的采购狂潮,销售额是一年中第二或第三高的一天,而通常一年中销售额最高潮是圣诞节前夜或之前的一个星期六。(参考维基百科)

除上述比较大型的电商促销活动外,其他零售电商平台比如苏宁818、国美418,以及其他电商平台也在自己造节日,而近几年的拼多多、抖音、快手等电商平台更多的是借势双11或者618来提升整个电商平台的GMV交易额。

二、【清家底】电商平台的商业模式与系统

2.1、电商平台的商业模式

经过上面电商大促简介,大家心里已经有一个简单的电商大促活动认识,对于电商行业从业者,电商大促活动是基本的知识,近几年随着“新零售”、“无界零售”、“全渠道”等新词的频出,给原本电商大促活动增加了更多的业务复杂性。这也是为甚么会在这里提下系统分类的原因。在整个零售业链路的节点上,刘总曾经提到过“十节甘蔗”理论,而我们致力于做的事是后5节甘蔗的内容,大家知道京东是以自建仓储物流打通供应链为核心驱动力,而淘宝天猫平台更多是聚集在平台交易环节通过营销和兼并购买生态产品带动流量增长为核心驱动力(近几年阿里也开始布局菜鸟平台开始衍生至其他节甘蔗);拼多多商业模式更侧重于不同的营销模式,所以系统也聚焦在营销、交易侧,采用第三方商家和物流配送体系;抖音、快手直播电商本身是在构建一个流量场,从开始京东、淘宝天猫入驻流量场到现在独立发展电商,他们更多是希望搭建的平台场来实现交易额;





通过上面的讲述其实是想要说一件事,如果单纯字面上说电商大促备战是没有意义的,针对不同环节的"甘蔗",整个电商大促中重要性不同,所以电商大促备战中,需要明确自己的系统在整个业务链路中的位置,同时系统提供的核心功能,是否涉及资损、用户体验、阻碍交易行为或者影响公司名誉、品牌、集团战略、营销计划等内容。

2.2、电商平台下的系统链路划分

基于上述内容,我们可以基于营销、交易、仓储、配送、售后来划分京东零售整个系统的业务链路环节初步划分,从大促活动来看营销是吸引流量、聚集流量、进行流量转化的手段,属于整个大促活动的核心环节;从我们的电商平台大促目的来说,大促活动更多的是希望带来交易订单的达成,促进交易额的提升,所以整个交易链路是真正目标核心链路,属于整个大促活动的最重要环节;从仓储、配送、售后来看更多的是交易后履约服务保障,这里面更多的是给电商平台带来的口碑影响,和用户的长期体验,对于电商平台长期发展来看也是非常重要,但是在电商大促的特定场景下可能相对前置的交易属于次重要核心环节。因为涉及业务知识比较庞大,以下我简要说明下链路作为大家一个参考(如有不对,可联系ERP:liuxiaocheng6反馈)

营销链路:营销策略方案制定->营销方案采销/商家宣讲->营销方案外部市场公关->营销活动创建->营销活动审核->营销活动投放->促销招商->商家报名->商家选品、发品->营销活动商品审核->营销活动、优惠券、商品的投放&推荐

交易链路:登陆(网站/APP/小程序/H5)->京东首页(搜索&推荐)->商详->购物车->结算页->收银台(支付)->订单(订单列表/订单详情页)->资金对账

履约链路:订单拆分、转移、下传、出管->POP商家(采销/供应商)接单->发货、拣货、打包、出库、打印面单->分拣、配送、自提->确认收货

售后链路:拒收/订单取消/售后退货、换货、退款->商家审核/快速退款/纠风判责->暂停修改订单、拦截物流返仓、原路(部分)退款、上门维修、换新单等->财务对账->客户满意度评价

上面提到的链路因为分叉分支很多,比如时效保证、开寄发票、预售先款/先货、商品评价、直播空间、店铺评价、客服处理等等内容未涉及,也从侧面想说明如果想要保障整个电商平台的大促稳定,如果不区分重点的话,那么眉毛胡子一把抓是肯定完不成好的效果,所以这一个环节主要想要阐述说明在特定场景下,电商大促更多的是保障重点在哪里。

三、【明目标】大促备战目标

大促备战目标的核心一个点:稳。在我们工作中,很多有经验的同学会发现,如何去设计一个良好的系统,大概会从如下几个要素考虑:功能性、可用性、性能效率、安全和扩展性,有些场景可能比如秒杀系统更多考率的是高并发因素。那么在整个大促备战过程中,基于场景不同,所以我们的大促备战目标也不可同述。但是整体的总目标来说,依然维持在可用性,如何保障交易核心链路更稳、更好的支撑用户购买下单,促成交易。

但是事与愿违,往往我们会发现管理者、项目、产品、研发、测试总是会面临同样的一个问题,资源不足,无论是人力、物力或者财力,永远资源不足的问题是我们要解决的一大核心问题。从古至今,上到将军打仗、皇帝恩济百姓,下到企业家创业,资源不足就决定了我们在做决策的时候,需要集中优势力量兵力结合正确的战略方针,攻击目标最薄弱的环节,保障方案正确落地,正所谓蛇打七寸。所以接下来就很明晰我们要做什么?如何做是我们要考虑的重点。

四、【定战略】大促整体备战思路

大促备战是一个完整的事件,具备着详细的故事线,这里面延展开说明下,在领域驱动设计的建模过程中有个事件建模其实就非常好的应证了这一个点,如果我们将人类文明的活动想要梳理清楚,其实很多时候会发现越理越乱,所谓的点-线-面-体,其中线是我们更好的中间表述环节。基于故事线来看的话,那么整体备战思路,我们拆解为事前-事中-事后来考虑,相对而言会比较全面的将大促备战体系针对特定场景下的备战尽可能全面。

4.1、事前:基于现状进行整体提前工作安排

(1)参与部门/集团大促启动会,及时获取最新集团备战导向和最新的战略内容,比如京东的三道防线战略。

(2)进行资源盘点梳理,包含人员、应用、上下游依赖、中间件、数据库,本次大促的SLA约定,值班上下游群,问题反馈群,大促备战手册等。

(3)针对可以降低发生概率的事项进行改造,比如梳理核心链路,针对链路上的薄弱点进行改造,并对于日志进行改造可以基于不同场景进行日志输出,规范整个大促备战的指南方案。

(4)宣讲仪式增强备战感知,比如基于大促封板需求开始,进行大促意识宣讲,同时完善监控大盘,补充关键日志,报警邮件短信治理,历届大促相关指标同环比数据对照分析数据表等。

(5)宣讲会后日检工作内容,比如成立应急故障虚拟小组,基于历史故障和常见问题形成故障手册,同时制定限流和降级预案等指南手册。







4.2、事中:基于备战情况保持警惕备战状态

(1) 每日邮件指标报表通晒

(2)每日错误日志收集并反馈和解决

(3)每日监控报警根因分析

(4)每日站会同步当天系统应用和人员情况

(5)跟进部门/集团大促备战日例会

4.3、事后:基于整个备战结果进行效果复盘

(1)业务目标的达成情况,比如某个营销活动的达成情况,做的好的,待改善的,可以萃取经验的内容。

(2)产研测团队的系统需求保障情况,比如大促前期和中间上线的需求,上线情况和需求收益达成情况。

(3)系统应用的指标、资源成本、人力成本投入情况,比如每年大促备战基于成熟化的工作流程、工具等内容,在业务变化不大的情况下,成本投入应该逐年下降等。

(4)备战沉淀的经验形成文档资产,每次大促都是系统历炼的一次非常好的机会,期间形成的文档资产都可以归档方便下次使用。

(5)大促备战中的待办工作内容和事项持续跟踪,很多时候团队部门缺少跟踪事项表,只是记录了时间和人但是持续跟踪的事情没有持续性。

五、【做战术】大促整体备战工作

5.1、流量沙漏防护原理介绍

因为上述战略中我们提到的内容比较多,我们这里以系统应用为切入点,开始进行系统评估是否属于良好的应用,如果特征因素中有不满足的我们进行薄弱挖掘,比如大促备战中,其实整个防护工作是以流量沙漏防护原理为核心的,从流量请求开始,CDN、Nginx、业务网关/前端应用直到后端应用(包含中后台系统)以及依赖的相关组件和其他应用,其实是在一个整个流量沙漏下,最复杂最核心的也是我们最常讲的就是后端应用故障稳定保障。





5.2、流量沙漏防护原理后端应用考虑因素评估表

基于上述的流量沙漏防护原理我们可以进行如下的考虑因素进行后端应用评估,挖掘薄弱点。

考虑因素特征措施
功能/适用性合适原则系统需求的可理解
性能效率全面性页面、接口、功能加载时间
时间性RT响应时间、吞吐量
资源利用率内存、磁盘空间、CPU使用率
可扩展性代码、架构设计
可用性全面性平均无故障时间、平均修复时间、平均故障间隔时间
稳定性平均停机时间
容错性错误崩溃、代码覆盖率、多机房容灾、冗余备份等
可维护性全面性应用维护人力投入情况
模块化结构清晰、边界清晰
可重复使用性代码、功能复用情况
可测试性代码覆盖率
可分析性复杂性、代码圈复杂度、服务之间交互耦合等
可变更性代码大小、变更、代码耦合、服务单一职责等
成本全面性开发、测试、部署维护
基础设施云/本地基础设施成本

5.3、流量沙漏防护原理的备战重点&应用健康度

CDN动静分离:主要集中在我们的前后端分离场景下,但是据笔者了解因为历史、组织结构调整交接等各种原因依然有很多应用没完整彻底的前后端分离,界面还是以后端维护和编写;但是如果是核心应用的话基本上都完成了前后端分离,所以这块优化相对简单。

网关安全保障:通常我们的网关分为技术网关和业务网关,技术网关更多关注的是安全、鉴权、防刷、防攻击、限流和降级等功能,业务网关更多的是偏BFF层的业务接口适配、裁剪等能力。这块我们应该更多面对的是热点流量峰值的不确定性、用户行为的不确定性以及安全攻击等风控行为,需要结合风控团队对于黑产异常流量、异常IP、Cookie自动加入黑名单进行限流操作;同时结合大促压测进行压测指标评估,结合大促预期目标对于系统应用有个合理的阈值和水位管控。

后端应用:后端应用类型、功能、服务面向用户不同决定了高可用的保障手段不同,比如后端应用分类可以基于任务类、工具类、支撑业务类、核心业务类等划分;根据其应用分级的定义程度我们进行应用健康纬度的评估,评估基础硬件资源、容器资源、应用资源、监控报警、链路维度等明细情况,进行薄弱环节治理,比如公司平台的应用健康度能够合理的给应用进行画像,便于问题的诊断和定位。

类型检测指标
基础资源应用跨集群
应用跨机房
应用跨POD
应用POD分布
JIMDB POD分布
网络TCP重传
应用容器CPU
JIMDB CPU
JMQ CPU
数据库 CPU
JIMDB分片拓扑
JIMDB分片POD
数据库主从
数据库机房
数据库规格
JMQ POD
VIP机房数量
后端机房数量
错误后端(ip)
集群环境一致
容器容器存活
应用模块化
GIT分支
灰度更新超时
CPU利用率
内存使用率
磁盘繁忙
网络流入
TCP连接数
CPU利用率
内存使用率
Swap使用率
磁盘繁忙
磁盘使用率(根目录)
磁盘使用率(export)
网络连通性
网络流入
网络流出
系统时间偏差
应用JSF版本
JMDB版本
JMQ2版本
JMQ4版本
UMP版本
DUCC版本
LOG4J版本
JVM版本
Full GC/Young GC
JVM_XMX最大堆内存
JVM_XMS最小堆内存
JVM_堆外内存
JVM_ParallelGCThreads
JVM_GCConcGCThreads
JVM_CICompilerCount
JVM_Metaspace
JVM_CMS回收阈值
JVM_新生代大小
JVM_HeapDump
JVM_Server模式
JDOS_日志清理
JSF_Timeout超时时间
JSF_跨单元调用
JSF_跨环境调用
JSF_跨机房调用
JSF_重试次数
负载均衡
JSF_限流
JSF_动态别名
JSF_设置黑名单
JSF_同机房部署
JSF_别名命名规范
JSF_混合环境部署
color网关timeout
最大连接数
初始连接数
connectTimeout
SocketTimeout
maxWait
时区
JIMDB FAILOVER状态
JIMDB 热KEY
JIMDB 大KEY
JIMDB 慢日志
JIMDB 扫描过期频率
JIMDB 服务端版本一致
JIMDB 服务端风险版本
淘汰策略
JIMDB_Swap交换区
JIMDB_绑核
JIMDB_CPU模式
JIMDB_网卡软中断
慢SQL
优先治理慢SQL
含外键表
索引过多表
自增溢出表
大表
接入方式
最大线程数
JIMDB读超时
JIMDB跨单元调用
JIMDB连接超时
JIMDB等待超时
JIMKV连接超时
JIMKV读超时
JMQ_sendTimeout
空应用
纯预发应用
单实例应用
预发流量过大
预发资源过多
不活跃预发分组
应用_实例存活
应用_Port存活
应用_URL存活
JSF_Provider接口存活
JSF_Consumer接口存活
依赖JIMDB集群异常Server_OPS次数
Server_CPU利用率
Server_内存使用率
Server_内存RSS
Server_网络流入
Server_网络流出
Server_连接数
tp99异常次数
积压
broker 主机-负载
broker 主机-磁盘繁忙
JED Qps
JED连接数
JED主从延迟
监控报警CPU利用率
负载
内存使用率
Swap使用率
磁盘繁忙
磁盘使用率
网络连通性
TCP连接数
TCP重传
网络流入
网络流出
系统时间偏差
JsfProvider组件报警
JimDB组件报警
JmqProducer组件报警
Mysql组件报警
SpringMVC组件报警
UMP JVM监控
UMP 方法监控
JVM_CPU利用率
JVM_内存使用率
JVM_线程数
FULLGC次数
YONGGC次数
方法TP99
方法TP999
方法可用率
方法TP99配置合理性
方法TP999配置合理性
方法可用率配置合理性
方法调用次数
Port存活
URL存活
OPS次数
连接数
内存使用率
主从断开
主从复制延迟
积压
重试
主从延迟
Logbook关键字报警配置
链路超时链路超时
链路超时JIMDB组件



其他应用/中间件/数据库:我们会发现很多时间我们的问题引入集中在三方因素较多,也是在备战中需要关注的重点:

•- 接口定义不合理,业务周知不到位,新上的业务需求直接在某个时刻脉冲流量到达薄弱依赖将服务打挂;

•- 还有部分是因为上下游依赖不稳定,比如遇到性能瓶颈,业务系统强依赖无法作出降级操作,只能静静等待恢复故障;

•- 在机房方面没有容灾,可能因为通信机房网络问题,电缆被挖断或者信号中断等问题导致网络瘫痪故障不可用;

•- 中间件使用策略异常,比如没有做业务幂等性操作、重试策略未控制次数和时间导致依赖的业务系统无法承接脉冲流量从而服务不可用;

•- 还有依赖的中间件和数据库容量水位已到阈值,没有及时扩容,从而引发业务系统的不可用。

•- 应用操作数据库线程阻塞、死锁、慢SQL等造成数据库拖垮服务应用

•- 应用操作缓存/ES出现热点的商品造成的数据流量不均引发的服务不可用。

•- 应用内存泄漏、JVM配置不合理等等

通过上述的流量沙漏防护原理是希望帮助大家能够对于大促备战有个整体框架,从而更好的结合三道防线战略,以及考虑因素评估表和应用画像来决策如何治理整改应用不合理的内容,最终形成相对合理的应用架构。





六、【促成长】其他

电商大促相对每个人来说都是很好的成长机会,通过大促备战能够让你更好的补齐自身知识的不足,也能更深入的了解所在团队的核心业务,所以建议无论是业务运营、产品、研发、测试人员都可以简单了解下。

那么如何成为一个合格的团队大促备战师呢?笔者以自身当时经历来说,就是大促备战师要做到胸有成竹,在大促备战前应该充分了解核心链路业务,做好事前工作梳理,能够有着大促指南手册宣导给团队每一个人,做到精兵强将,人人互为备份,将监控报警可视化面板进行大屏展示,及时捕捉和观察业务变动情况。

那么如何成为一个事业部架构师或者集团架构师呢?笔者认为需要有严格清晰的备战路线和里程碑,关注的重点事项以及日例会进行事项跟进和同步,因为当人数超过几十人以后,大促备战更多的是管人、管流程,而不是管应用,所以需要责任到部门、到个人,紧抓流程,同时日例会及时信息沟通减少信息变更差。

七、参考资料

- 集团应用健康度指标

- 集团三道防线



相关推荐

业务复杂度治理方法论--十年系统设计经验总结

软件设计的核心在于降低复杂性。--《软件设计的哲学》业界对于复杂度并没有统一的定义,斯坦福教授John Ousterhout从认知负担和工作量方面给出了一个复杂度量公式子模块的复杂度cp乘以该模块对应的开发时间权重值tp,累加后得到系统的整体复杂度C这里的子模块复杂度cp是一个经验值需要注意:如果一个子系统特别复杂,但是很少使用及修改,也不会对整体复杂度造成太大影响。例:spring框架内部代码较为复杂,但由于几乎不需要我们去变动,所以对系统的整体复杂度影响并不大。

JDDTechTalk的博客 2444

【转载】golang内存分配

在 1.10 以前 go 的堆地址空间是线性连续扩展的, 比如在 1.10(linux amd64)中, 最大可扩展到 512GB. 因为 go 在 gc 的时候会根据拿到的指针地址来判断是否位于 go 的 heap 的, 以及找到其对应的 span, 其判断机制需要 gc heap 是连续的. 但是连续扩展有个问题, cgo 中的代码(尤其是 32 位系统上)可能会占用未来会用于 go heap 的内存. 这样在扩展 go heap 时, mmap 出现不连续的地址, 导致运行时 throw.

JDDTechTalk的博客 1485

自增主键去哪了?---一次开发过程中的思考

MySQL是作为大家都经常接触的DB,相信大家都会有一定的认知,自增主键不连续大家肯定也遇到过,这次在联调过程中遇到这个情况,在跟别的小伙伴分享的时候,突然就想写一篇文章,文章里面如果有不正确或者不准确的地方也欢迎大家斧正~说实话,作为一名交易端的研发人员,业务开发任务压力真的蛮大的,我也迷茫过,如何在这个过程中成长,珍惜我们遇到的问题,将遇到的问题记录在册,深追问题,你会发现有很多问题其实真的是因为我们某些知识的薄弱点造成的。

JDDTechTalk的博客 1679

万字长文浅谈三高系统建设方法论和实践

整个软件的发展历程是一部软件复杂性对抗史,软件的复杂性分为技术复杂性和业务复杂性,业务复杂性主要是建模和抽象设计,技术复杂性主要是三高(高性能,高并发,高可用)的应对,C端的业务一般以技术复杂性为主,业务复杂性为辅,而B端或者M端的业务通常以业务复杂性为主,技术复杂性为辅。本篇文章主要是从后端研发的视角结合自己多年的B C端系统建设实践谈下三高系统的建设方法论和实践,希望和大家相互交流,共同进步,同时这是我参与创作者计划的第1篇文章。

JDDTechTalk的博客 2527

Vision Pro开发实践(结合24黑马idea)

利用ModelEntity加载模型,添加到RealityView的content中展示,这样可以对模型做各种操作,比如添加子模型,修改光照,材质等要素。举个例子来讲,我需要在运动鞋模型“sneaker”上面添加一个可以与用户交互的白色圆点模型,用于在用户点击的时候添加/展示对应部分的评价。这次结合的idea是我参加黑马比赛时想到的,主要内容是:在商品评价时增加商品的3D模型,用户可以在虚拟现实环境中查看商品的3D模型,并对模型的特定位置进行评论。:通过3D模型动画,用户可以直观地了解产品的特性和使用方法。

JDDTechTalk的博客 2174

买药秒送 JADE动态线程池实践及原理浅析

买药秒送是健康即时零售业务新的核心流量场域,面对京东首页高流量曝光,我们对频道页整个技术架构方案进行升级,保障接口高性能、系统高可用。动态线程池是买药频道应用的技术之一,我们通过3轮高保真压测最终初步确定了线程池的核心参数。但我们仍面临一些保障系统稳定性问题:如何监控线程池运行状态?以及因流量飙升出现任务堆积和拒绝时能否实时报警,线程池核心参数能否做到不重启应用,动态调整即时生效?经调研,业界成熟的动态线程池开源项目有dynamic-tp和hippo4j。

JDDTechTalk的博客 2051

从原理聊JVM(一):染色标记和垃圾回收算法

本篇介绍了JVM中垃圾回收器相关的基础知识,后续会深入介绍CMS、G1、ZGC等不同垃圾收集器的运作流程和原理,欢迎关注。。

JDDTechTalk的博客 1913

BFF层聚合查询服务异步改造及治理实践

本篇主要是思考如何依赖现有框架、环境的能力,从代码层面系统化的实现相关治理规范。最后仍引用王晓老师文章结尾来结束。

JDDTechTalk的博客 1922

QPS提升10倍的sql优化

总结本次优化经历•慢sql 往往是影响数据库性能的大瓶颈,sql写好了不但可以优化性能,还能节约机器成本,降本增效。•最好能看到sql语句执行的第一现场,本次主要是由于查看代码时没有及时注意到索引字段的传参类型不对这一细节,造成花了很多时间分析问题•虽然整个问题分析过程比较曲折,但问题分析的方向应该还是对的,过程中学到不少知识。•表结构的设计也有一些历史遗留原因,site_id 字段在表中定义为整型可能比较符合业务含义。表字段定义和业务含义一致,写sql也不容易犯错。

JDDTechTalk的博客 1793

一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应处理器

Graceful Response内置了两种风格的响应格式,可以在文件中通过进行配置。•gr.responseStyle=0,或者不配置(默认情况)"msg": "有内鬼,终止交易"},"data": {•自定义响应格式如果以上两种格式均不能满足业务需要,可以通过自定义去满足,Response@Override@Override@Override@Overridereturn msg;注意,不需要返回的属性可以返回null或者加上注解。

JDDTechTalk的博客 2005

【原创】【深入浅出系列】之代码可读性

原创声明:该文章是个人在项目中亲历后的经验总结和分享,如有搬运需求请注明出处。这是“深入浅出系列”文章的第一篇,主要记录和分享程序设计的一些思想和方法论,如果读者觉得所有受用,还请“一键三连”,这是对我最大的鼓励。一句话:见名知其义。有人说好的代码必然有清晰完整的注释,我不否认;也有人说代码即注释,是代码简洁之道的最高境界,我也不否认。但我都不完全接受,如果照搬前者,有人会在每个方法、每个循环、每个判断都添加大量注释,对于一个表达不严谨的coder来说,代码与汉字可能词不达意;

JDDTechTalk的博客 1747

动态化-鸿蒙跨端方案介绍

动态化目前已经具备一份代码在iOS、Android、H5三端运行的能力,该方案就是将动态化一码多端能力对接到鸿蒙系统,降低首次适配研发投入;一次开发,四端共用,长期降低业务迭代成本;并且使业务具备随时发布能力。。

JDDTechTalk的博客 2627

【ChatGPT应用篇-1】助力Beauty代码的初体验

以下是一个与ChatGPT 结对编程的一个Excel数据解析案例,大家可以根据我的思考过程进行体验,以下放了一些截图,ChatGPT的反应速度惊人,代码版本一步步进行迭代优化,感触较深的是。对于ChatGPT输出的代码没有做仔细的Review及调试,但是看代码风格基本上是改改就能用于生产的,对于代码规范、命名还是很认可的!10.提升程序效率,把解析性能在提升10倍 (架构师的成本意识,这个问题的回答有点意思)6.替换掉 poi 采用EasyExcel (替换原始的默认技术选型,替换三方包)

JDDTechTalk的博客 1524

一起单测引起的项目加载失败惨案

是相对于静态编程而言的,平时我们讨论比较多的就是静态编程语言,例如Java,与动态编程语言,例如JavaScript。最近在开发一个功能模块时,在功能自测阶段,通过使用单测测试功能的完整性,在测试单测联通性使用到静态方法测试时,发现单测报错,通过查阅解决方案发现需要对。建议大家在构建Maven项目时,仔细检查POM文件中的依赖,确保没有漏掉任何必要的库,以免因为遗漏而引起不必要的问题。但是,在我们的POM文件中,虽然我们添加了对Spring框架的依赖,但是并没有添加。: 返回修改后的字节码。

JDDTechTalk的博客 1909

京东小程序折叠屏适配探索

应用在折叠屏运行时,可以从一个屏幕切换到另一个屏幕。应用应该做好配置变更的适配和界面状态的保存,以保证应用当前任务能无缝迁移到转换后的屏幕,从而为用户提供出色的连续性体验。折叠屏作为未来Android屏幕发展的新趋势,具有很大的发展前景,做好折叠屏相关适配支持也势在必行。小程序相关适配已经跟随京东主站、小家App、小家三星预装版等发布上线,本文是作者进行相关适配的一些心得体会,如有不足敬请见谅,欢迎交流探讨。

JDDTechTalk的博客 1万+

KubeCon China 2024全球大会在香港举行,京东云受邀参加探讨云原生、开源及 AI

和数字化大潮一样,在AI化的革命下,云端也在全面拥抱AI,并在方方面面变得更安全、更高效,让全球各行各业受益。大会首日吸引了来自全球 30 多个国家和地区的 1000 多名参会者,共同探讨云原生、开源及 AI 领域的前沿进展、核心技术和最佳实践。在京东云中,联邦Serverless服务基于联邦管理模型和Serverless应用模型,为联邦应用容器部署、弹性扩展和故障迁移提供JDOS应用容器控制服务。弹性扩缩容技术方案有很广大的应用前景,京东云内部也在进行大量的生产实践和验证。1. 多集群管理和分发实践。

JDDTechTalk的博客 1168

京东搜索重排:基于互信息的用户偏好导向模型

。

JDDTechTalk的博客 1939

探索AC自动机:多关键词搜索的原理与应用案例

目前,大多数自由文本搜索技术采用类似于Lucene的策略,通过解析搜索文本为各个组成部分来定位关键词。这种方法在处理少量关键词时表现良好。但当搜索的关键词数量达到10万个或更多时,这种方法的效率会显著下降,尤其是在需要与词典进行详尽对比的场景中。本文将介绍的Aho-Corasick(AC)自动机作为多模式匹配中的经典算法,不仅能够处理大规模文本数据,还能确保搜索过程的实时性和准确性。AC自动机可以被形象地比喻为一个超级找词机器。

JDDTechTalk的博客 1491

“前端”工匠系列(一):合格的工匠,究竟该搞什么

有效的交流是需要以有效的信息为载体的。在用户端日志查询、特殊边界场景复现、日志排查定位故障等场景,“实时”就不是必要的,这种场景下一般采用T+1查询,但是又引入了大量级日志的存储周期的话题,一般企业应用级的用户日志保存14天就完全够用了,因为对于C端日志来说,更多的是对现场故障的复现、处理及跟进,如果算法策略对用户日志有需要,只需要在一定时间内采用处理任务对用户日志进行一次处理,把输出的标签、行为特征等关键数据存储就可以,基础的用户日志还是应该被存档或清除释放资源供给更有价值的最新日志来使用。

JDDTechTalk的博客 1043

mysql磁盘碎片整理

不管是使用云还是商城数据库,只要使用mysql,必然会遇到Mysql碎片问题痛点,数据量大的业务表应该设计成分区表方便磁盘碎片整理,降低维护成本和业务影响。碎片清理前后,IO性能会上升,SQL执行效率更快。所以,在日常运维工作中,应对碎片进行定期清理,保证数据库有稳定的性能和充足的空间。扩展提到提高IO性能,在紧急情况下还可以考虑开启刷盘(设置),但开启刷盘会有数据丢失风险(集团数据库模板配置参数默认。

JDDTechTalk的博客 1105

【我在京东做产研】校招 2 年,个人角度(成长)回顾 - 行且知

回顾毕业后的工作历程(文章会以现实时间为顺序来进行回顾),有很多大佬的帮助和指点。因此,想将自己的思考也分享给后来的同学们文章从个人角度(成长)出发,回顾工作点滴。后续会从团队角度(互惠)出发,写成长历程二,敬请期待1.JD的技术体系,各种中间件的了解和使用▪各种中间件的使用文档,还是非常有价值的,各种各样的名词,使用细节。如果你都不知道,怎么细节性学习?▪切勿眼高手低:▪程序员都知道文档易读,但是不如手敲一遍。敲完运行运行,可能你就有新的疑问。(例如:JSF 配置后,如何生成代理对象的呀)

JDDTechTalk的博客 927

京东云《黑神话 · 悟空》现已支持快速部署!

黑神话:悟空》是一款以中国神话为背景的动作角色扮演游戏。本服务内置《黑神话:悟空》游戏、《Steam》客户端和远程桌面《GameViewer》软件,配备顶级游戏显卡,通过计算工厂快速部署后按下方文档操作即可开启流畅游戏体验。

JDDTechTalk的博客 1429

京东平台内容合规的技术与挑战

合规域在电商平台中扮演着重要的角色,它相当于电商体系中的“免疫系统”,通过识别恶意的商品、商家以及UGC内容,确保电商生态的健康、有序和可持续发展。因此我们部门致力于打造业内领先的内容理解与审核平台,在具体工作中,通过识别并治理商家在产品、价格、服务维度的违规行为以及短视频、直播、评价、问答等内容的违规信息,降低审核成本、提升运营效率,并最终保障用户体验。。

JDDTechTalk的博客 1102

视频审核架构实践

针对不同的编码器、封装协议、传输协议,提供统一的音视频处理接口。跨平台,兼容200多种编码、180多种封装格式、20多种传输协议。世界上90%以上的音视频开发基于FFmpeg。。

JDDTechTalk的博客 1605

QUIC在京东直播的应用与实践

国内的互联网直播技术从2005年前后兴起,彼时最具代表性的直播产品是由PPLive创始人姚欣在华中科技大学就读期间发起的校园直播项目PPLive。当时的直播技术用的还是基于windows系统自带的mediaplayer内置的COM组件开发的播放器,采用的是RTSP协议。受当时的互联网传输带宽及成本限制,PPLive并没有采用现在比较流行的单播技术,而是采用P2P技术分发直播流。国内的直播技术也进入了一段以P2P技术为主的时期,其中比较有代表性的就是PPLive和PPStream。

JDDTechTalk的博客 1409

突破传统监测模式:业务状态监控HM的新思路

以上是hm的全部技术细节。hm灵魂是数据计算、治理、数据统计。hm根基是集成百家之长。是我们平台研发部自研的一款面向业务的,异常监控处理的解决方案。汇集了团队每位伙伴的智慧。

JDDTechTalk的博客 1247

如何优雅的处理异常

Java 语言按照错误严重性,从 throwale 根类衍生出 Error 和 Exception 两大派系。Error(错误):程序在执行过程中所遇到的硬件或操作系统的错误。错误对程序而言是致命的,将导致程序无法运行。常见的错误有内存溢出,jvm 虚拟机自身的非正常运行,calss 文件没有主方法。程序本生是不能处理错误的,只能依靠外界干预。Error 是系统内部的错误,由 jvm 抛出,交给系统来处理。程序正常运行中,可以预料的意外情况。比如数据库连接中断,空指针,数组下标越界。

JDDTechTalk的博客 1193

鸿蒙跨端实践-ArkTS和CAPI的混合开发实现

针对以上问题,通过和华为沟通,鸿蒙系统提供了C语言的命令式接口。C组件接口是介于UI组件的Native实现和ArkTS对接层之间的一层C接口封装,它绕过了状态管理对组件变化、刷新的自动化管理,同时避免了JS引擎和C++之间类型转换和跨语言调用的开销,因此具有较好的性能。通过C接口的对接,UI层级能直接和另外两端基本一致,通讯过程直接从JS到C++,C++可以直接调用C接口,流程大大缩短,数据类型转换变少了,列表渲染过程也由接入方自主控制,并且可以做预渲染等优化方案,同时避免了系统的二次布局。。

JDDTechTalk的博客 1756

Proxyless的多活流量和微服务治理

Joylive Agent 是一个基于字节码增强的框架,专注于多活和单元化场景下的流量治理。它提供了以下功能:多活流量调度、全链路灰度发布、QPS和并发限制、标签路由、负载均衡,熔断降级,鉴权等流量治理策略。其特性包括微内核架构、强类隔离、业务零侵入等,使其在保持高性能的同时对业务代码影响最小,是面向Java领域的新一代Proxyless Service Mesh探索实现。重要的事情说三遍:求Star,求Star,求Star。请Star完毕后继续阅读后文。

JDDTechTalk的博客 1823

工作五年小结 | 面对不确定性快速上升的外部环境,我们该如何寻求突破?

工作五年了,来京东马上满一年,前四年在开水团,不禁感叹时间过的真快啊!回想19年从西安交大硕士毕业孤身前往北京开始职业生涯,经历了孤独迷茫到自立坚定,再到23年下定决心携妻还蜀安家,并来到京东开始新的征程,这5年过的很快也很充实。今年也是我的而立之年,感觉一迈过这个坎,眼前的世界就不一样了,事业上还未成气候,更多的生活琐事就开始扑面而来。网上有段子笑称现代的“五子登科”中的五子分别指的是“车子、票子、房子、妻子和孩子”,这个词本来表达的是人们对美好生活的向往,但旧词新义体现更多的是中年人的无奈。。

JDDTechTalk的博客 850
上一篇: 一起单测引起的项目加载失败惨案
下一篇: 【ChatGPT应用篇-1】助力Beauty代码的初体验
京东云技术团队
京东云技术团队 企业官方账号 企业官方账号
博客等级 码龄6年 3626粉丝 686原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值