京东详情页怎么做,京东详情页技术解密?( 三 )


数据异构带来的好处是可以减少一些基础服务的强依赖 , 之前老板提的一个目标就是基础服务挂了 , 上层业务还能很好的活着 , 但是京东这个数据体量来看成本是非常巨大的 , 因此APP单品页选择部分数据异构 , 减少基础服务接口的强依赖 , 主要是商品的基础数据、扩展属性信息、商品的详情数据 , 全量数据同步一次之后通过中间件JMQ进行增量的数据同步变更 , 存储使用的是缓存中间件jimdb(redis缓存) 。
4. 并发请求异步化
APP单品页前期属于野蛮发展 , 很多RPC的依赖极其不合理 , 比如依赖关系没有层次概念 , 超时时间设置超长、内外网接口同时依赖 , 造成任何的服务质量变差和网络抖动对整体API影响非常大 , 因此进行了一次SOA化改造 , 主要工作是把单品页系统从大网关分离出来 , 然后制定服务接入标准并进行改造 , 第三方面就是上游基础服务调用并行化 , 系统整体并发能力及稳定性得到了极大的提升 。
服务依赖的标准
依赖接口必须是内网服务 , 不允许依赖外网服务;
接口超时时间不超过100ms , 并且除了一些核心数据 , 比如商品、价格、库存 , 其他都不进行重试;
核心接口必须可支持跨机房的双活容灾 , client端出现问题必须可切换 , 并且要有降级方案;
RPC调用最好是依赖中间件JSF , 这样是点对点的长连接服务 , 减少每次建连的开销 , HTTP依赖需要经过内网的LB , 增加一层代理的开销 , 会出现一些不可控的问题 。
随着流量不断增加 , 并行化遇到了瓶颈 , 每次请求会创建大量的线程 , 线程的维护和上下文切换成本本身比较消耗CPU资源 , 因此基于现有HttpClient和JSF基础组件的异步化支持 , 进一步进行异步化的改造 , 单机压测效果还是比较明显 , 并发能力提升40% 。
5. 监控
系统流量到一定程度 , 系统的各维度监控尤为重要 , 可以帮助我们缩短排查、定位问题的时间 , 甚至可以帮助预警风险 , 当前APP业务从用户到后端整个服务链条的监控都已经非常完善 , 包括各运营商入口流量的监控、内外部网络质量、负载均衡、以及网关流量的监控以外 , 我重点介绍下单品页业务层的监控 , 下边是业务监控系统数据异步埋点的架构 , 主要分为两类数据 , 第一业务指标数据比如单品页各渠道访问数据 , 通过UDP协议实时埋点到Kafka , 然后storm实时在线分析形成最终需要的数据落地 , 另一类是大流量数据 , 比如系统异常信息落到磁盘日志中 , 然后通过logCollector异步发送到Kafka中 , 这类数据对磁盘IO、网卡IO的流量占比大 , 针对磁盘IO , 会按照文件大小100M滚动生成日志文件 , 数据搬走之后进行删除操作 , 网卡IO在数据传输过程中进行了限速 , 按照1m/s的速度进行传输 , 可进行动态调整 , 基本对业务不产生任何影响 , 大促峰值期间会针对一定比例降级 。

京东详情页怎么做,京东详情页技术解密?


业务系统除了基本的服务器各项指标CPU、MEM监控 , 服务的性能、可用率监控以外 , 介绍几个比较实用的业务能力监控:

推荐阅读