Más contenido relacionado
La actualidad más candente (20)
Similar a Web请求异步处理和海量数据即时分析在淘宝开放平台的实践 (20)
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
- 3. Web请求异步化的原因
s 为什么要异步化?
渲染
根本原因:容器线程利
展示 用率不高。
s 业务处理天然异步化需
业务 求(业务处理消耗比较
处理 久,外部事件激发)
容器线 s 减少连接带来的消耗,
充分利用服务端并行处
程 理能力
s 减少业务依赖不稳定对
容器线程资源的低效率
占用
- 4. 异步化模式在开放平台的使
用场景
框架控制串行化逻辑隔
离
实际应用:服务降级,
Beta发布
半异步化模式再次分配
请求处理资源
实际应用:服务隔离
并行任务执行,部分累
加输出
实际应用:batch
api
基于事件驱动,服务端
异步消息推送
实际应用:streaming
api
- 5. 异步化模式在开放平台的使
用场景
管道化:
1.串行逻辑非关键路径降级。
2.框架级支持公用逻辑植入。
(log,lazy
parser,event
driven,comet…)
3.流程逻辑复用与隔离。
- 11. “海量”、“即时”的需求背景
现状 需求
应用维度分析
服务维度分析
1台实体机器+12台
虚拟机
器
平台维度分析
15亿(400G)
监控告警,趋势分
析
产出周期小于2分(结果
钟)
- 13. 整体设计结构和思路
Master:管理任务(分析任务),合
并结果(Reduce),输出结果(全量
统计,增量片段统计)
Slave:Require
Job
+
Do
Job
+
Return
Result,随意加入,退出集群。
Job:(Input
+
Analysis
Rule
+
Output)
的定义。
- 14. 整体设计结构和思路
• 后台系统任务分配:无负载分配算法,采用细化任务+工作者按需
自取+粗暴简单任务重置策略。
• Slave与Master采用单向通信,便于容量扩充和缩减。
• Job自描述性:数据来源,分析规则,结果输出。异构化任务处理
集群共享Slave。
• 数据存储无业务性,分析规则包含业务含义(优势在于可扩展,劣
势在于全量扫描日志)
• 透明化整个集群运行状况,保证简单粗暴的方式下能够快速定位出
节点问题或者任务问题。
• Master单点采用冷备方式解决。(异步化外移状态,减少服务端状
态数据)
- 15. 整体设计结构和思路
Master Slave
数据量:2千万 -‐-‐>1亿 -‐-‐>8亿 -‐-‐>15亿。
报表输出结果:10份配置 -‐-‐>30份 -‐-‐>60份 -‐-‐>100份。
统计后的数据量:10k
-‐-‐>10M
-‐-‐>
9G。
统计周期的要求:1天 -‐-‐>5分钟 -‐-‐>3分钟 -‐-‐>1分半。
- 17. 优化实践
流程中间数据优化
减少中间结果无 节省带宽,
用存储和处理 内存,
cpu
压缩中间结果和内部 taobao.user.get—12132342—fangweng
标识(可逆vs不可逆,
算法vs对照表) 服务成功率=服务成功次数/服务总数
- 18. 优化实践
特殊化处理特殊的流程:
Master
1. 简化序列化(已知序列化对象可简单化)
2. 减少内存申请,尽快释放处理后的数据
3. 减少中间过程的消耗
- 19. 优化实践
特殊化处理特殊的流程:
<K,V>
à
Report
=
N
*
<K,V>
group
by
K
KV
Pool1
apiName,apiTotalCount
1.深度遍历+二维数组
apiName,apiResponse
apiName,apiFailCount
KV
Pool2
2.广度遍历+一维数组
KV
Pool3
Report
apiName,apiTotalCount,apiResponse,apiFailCount
- 20. 优化实践
合并调度及磁盘内存互换的优化:
合并数据是内存消耗重灾区:
合并数据是内存消耗重灾区:
1.是否可以快速处理回收?
1.合并前有大量数据挂接在接收 2.是否可以减少中间结果占用空
缓存列表上
间
2.合并过程会消耗大量的内存
3.是否可以释放主干,需要时载
3.合并后主干占用大量内存
入
4.输出时占用大量内存 4.是否可以压缩和过滤
- 22. 优化实践
磁盘内存互换的优化:
消耗:
主干载入和输出
收益:
周期内主干内存
释放(GC减少提
高速度)
优化细节:
1.载入最优时机
2.输出内容压缩,
速度加快
3.导出异步化
4.
- 23. 优化实践
1.
利用可横向扩展的系统来分担纵向扩展系统的工作。
2.
流程中中间数据的优化处理。
3.
特殊化处理可以特殊处理的流程。
4.
从整体流程上考虑不同策略的消耗,提高整体处理能力。
5.
资源的快用快放,提高同一类资源利用率。
6.
不同阶段不同资源的互换,提高不同资源的利用率。