数据异构带来的好处是可以减少一些基础服务的强依赖 , 之前老板提的一个目标就是基础服务挂了 , 上层业务还能很好的活着 , 但是京东这个数据体量来看成本是非常巨大的 , 因此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监控 , 服务的性能、可用率监控以外 , 介绍几个比较实用的业务能力监控:
推荐阅读
- 小红书在线官网首页,小红书在线官网首页如何运营?
- 在Word中如何将页面一页设置成横向,一页设置成纵向?
- 网站内容页优化怎么做,网站优化的3大建议?
- 京东购物车营销,如何做好京东购物车营销?
- 京东如何开店,京东开店基本流程?
- 页面无法显示怎么办,页面无法显示如何解决?
- 儿童页游有哪些(儿童页游很早的4款介绍?
- 网站页面布局怎么做,6个设计布局示例?
- 淘宝详情页如何制作,淘宝详情页制作方法推荐?
- 详情页制作教程,详情页制作教程思路推荐?