喜马拉雅服务化演进之路

微风

2019/03/24 发布于 技术 分类

文字内容
1. 喜⻢马拉雅服务化实践 王志强 技术中⼼心
2. 在此键⼊入姓名 在此键⼊入Tittle
3. ⽬目录 01 起步之路路 03 02 ⾃自研之路路 升级之路路 04 体会
4. 01 起步之路路:内部状态
5. 01 起步之路路:挑战 ⽤用户量量快速增⻓长 业务越来越多 维护迭代复杂
6. 01 起步之路路:选择 开源? ⾃自研?
7. 02 ⾃自研之路路:⽬目标 ⽔水平扩展 监控预警
8. 02 ⾃自研之路路:⽔水平扩展 admin <> zookeeper服务注册发现 client 临时节点 server <> <> <> <> zookeeper
9. 02 ⾃自研之路路:发布系统 cmdb统⼀一发布流程 ⽆无缝发布 灰度发布 1 4 cmdb 2 3
10. 02 ⾃自研之路路:⽇日志收集与监控 sparkstreaming es kafka opentsdb flume flume-agent hbase
11. 02 ⾃自研之路路:监控维度 ServiceA 调⽤用链数据 trace_id=1 trace_id=1 trace_id=1 内存、GC、堆栈 trace_id=1 ServiceB 线程池 连接池 …… trace_id=1 ServiceD trace_id=1 ServiceC
12. 02 ⾃自研之路路:调⽤用埋点 业务代码⽆无侵⼊入 magic sequence 2bytes 4bytes method body 2+mbytes nbytes javaagent与aspectj tracedata xbytes
13. 02 ⾃自研之路路:治理理 服务依赖关系计算 防⽌止循环依赖 控制调⽤用深度
14. 02 ⾃自研之路路:业务隔离 基于调⽤用⽅方的隔离 mobile-service group=track scope= mobile-service group=track scope= open-service group=track scope=open track-service scope= track-service scope= track-service scope= group scope
15. 02 ⾃自研之路路:成果 业务⾃自由扩展 流量量⽆无损发布 实时监控预警
16. 02 ⾃自研之路路:不不⾜足 性能还有提升空间 异步调⽤用代码编写复杂 路路由不不够灵活 ⽆无⾃自动熔断 ⼤大流量量业务启动报错 ⽆无事务⽀支持
17. 03 升级优化:集成netty 重新开发idl代码⽣生成器器 命令⾏行行⼯工具,⽀支持maven插件 简化异步代码编写 优化内存使⽤用
18. 03 升级优化:集成netty client 异步tracedata传递 server RpcContext RpcContext ThreadLocal ThreadLocal tracedata 1 RpcMessage 2 RpcMessage rpc payload Header Header 5 6 tracedata(traceid spanid 4 3 serviceid )
19. 03 升级优化:灵活路路由 router router:选择集群 cluster:集群策略略 failfast splitmerge failover hybrid processor cluster loadbalance serialize loadbalance:选择实例例 serialize random roundrobin consistencehash transport transport client server
20. 03 升级优化:灵活路路由 client <<1 >> Spliter split-merge 实现Spliter和Merger Merger Loadbalance <<6,8,9>> <<1 >> <<3,5,7>> track track track cache cache cache
21. 03 升级优化:快速失败 熔断降级 超时连接释放 超时时间调整
22. 03 升级优化:熔断 实例例⽅方法级别 client server client server client server client server 调⽤用⽅方强制熔断 慢恢复
23. 03 升级优化:服务端限流 io-loop CustomThreadPool 0 ⾃自定义业务线程池个数及⼤大⼩小 核⼼心业务⽅方法独⽴立线程池 DefaultThreadPool ⾮非核⼼心业务⽅方法慢进⼊入隔离线程池 ThreadPool Chooser CustomThreadPool 1 … IsolationThreadPool CustomThreadPool N
24. 03 升级优化:慢启动 client 流量量缓慢分配 server newserver
25. 03 升级优化:tcc事务⽀支持 集成tcc-transaction ⽀支持spring注解配置
26. 03 升级优化:现状 接⼊入应⽤用800+ 实例例数4000+ 内部⽇日均调⽤用量量500亿+
27. 04 体会 调⽤用⽅方与被调⽤用⽅方互相不不能完全信任 分布式环境更更需要集中管理理 控制调⽤用深度,不不宜太深 多级缓存,提⾼高命中率
28. 04 体会:回顾 01 起步之路路 跨语⾔言 ⻓长连接 基本的负载均衡 可⽤用性 02 ⾃自研之路路 ⽆无缝发布 ⾃自由增减实例例 监控预警 实例例隔离 扩展性 可⽤用性 03 04 升级之路路 未来之路路 集成netty 与其他系统深度集成 简化异步代码编写 加强治理理能⼒力力 熔断 提升运营效率 限流(线程隔离) 慢启动 易易⽤用性 稳定性 ⾼高性能 产品化
29. 在此键⼊入姓名 在此键⼊入Tittle
30. 在此键⼊入姓名 在此键⼊入Tittle
31. Thanks