第1页
基于Java容器的多应用部署技术实践
第2页
2016-4-21
第3页
个人经历
魏鹏 花名:豫楚
阿里巴巴中国网站交易平台(2009-2013)
• 服务化 • 数据迁移
中间件技术部-容器与服务框架(2013-)
• 应用容器Pandora • 服务框架HSF
《Java并发编程的艺术》
第4页
目录
阿里Java容器的发展历程 容器架构 合并部署
多版本部署
第5页
阿里Java容器的发展历程 容器架构 合并部署
多版本部署
第6页
阿里Java容器的发展历程
起源(2009)
•服务框架的重构 •基于OSGi •隔离与应用之间 依赖 •基于Jboss部署
发展(2010)
•软负载组件 •配置组件 •单元化组件
新生(2013)
•基于Java类加载 器 •插件部署规范 •容器运维
升级(2015)
•多应用部署 •合并部署
挑战(2016) •多版本部署
第7页
阿里Java容器的发展历程 容器架构 合并部署
多版本部署
第8页
容器架构
Java容器(2015.05)
• 多应用部署 • 生命周期 • 事件体系
Ali-Tomcat
Ali-Java容器
插件部署 生命周期
类加载器 事件体系
服务框架 消息组件 配置组件 数据访问
提供中间件 的服务
使用所需 的服务
部署
应用生命周期 的事件通知
第9页
阿里Java容器的发展历程 容器架构 合并部署
多版本部署
第10页
调用链路长
部 署 复 杂 度
用户请求
用户请求
用户请求
规模
红色:远程调用
第11页
如何优化
线路热 点已知
核心链 路确定
流量入 口固定
从流量入口下手,优化 核心链路中的热点线路
第12页
合并部署
核心链路上强相关的多应用部署
第13页
远程调用转本地调用
容器提供给服务框架当前部署的应用信息,调用时“查表”, 本地调用需要进行“深拷贝”
服务框架
远程调用 用户请求
消费服务C 消费服务B 提供服务A
本 消费服务D
地 调
用 提供服务C
深拷贝
消费服务E
提供服务D
远程调用
Ali-Tomcat
第14页
“深拷贝”
跨类加载器对象深拷贝的示例:
public Object deepClone(Object instance, ClassLoader Loader2) { 1. 以目标Loader2创建类型实例
Loader1
2. 返回Object实例clone 3. 按照instance进行反射拷贝
Loader2
return clone; }
第15页
“深拷贝”性能对比
• 平均只有Hessian的15% • 没有统计网络开销
10W次测试,单位:毫秒
第16页
合并部署的效果
• QPS提升超过50% • 数据越大提升越发明显
其中合并部署的机器配置为基准环境的4倍
第17页
实际情况
• Rt下降了50% • 毛刺基本消失,链路更加平稳
商品详情页合并部署改造前后Rt对比
改造前后不同周六上午6时到12时的数据
第18页
合并部署带来了什么
降低成本
双十一没有增加 机器
• 商品详情 • 交易开放平台
提升性能
RT下降明显
• 50% • 丝般顺滑
第19页
目录
阿里Java容器的发展历程 容器架构 合并部署
多版本部署
第20页
时间哪里去了
Electric Cloud在2013年3月发起一项调查,抽取了443名软件工程师,每周19个小时用于开发
第21页
当前的发布方式
• 多批次 • 一个接一个 • 回滚也是按批次
100台 验证通过 100台 验证通过 100台 验证通过 100台
30分钟
平均1-2小时,长的也有4小时
发布日意味着一下午没了…
第22页
批次的矛盾
发布问题
扛流量的机器减少
前一批次的负载升 高
客户端调用失败概 率升高
批次内机器变多 发布总时间下降
能不重启就发布吗?
减少批次
第23页
多版本部署
• 多应用部署
• 一个应用多个版本
• Ali-Tomcat的多版本 切流命令
• App##Version2.war • App##Version1.war
• 应用区分维度
• 应用名 • 版本号
• 外部链接不断
HTTP
远程调用
Ali-Tomcat
消息处理
服务框架
数据访问
消息组件
提供中间件 的服务
部署
版本切换
第24页
资源释放的问题
第25页
事件体系
响应事件来释放资源, 事件类型:
• 应用部署事件 • 应用退部署事件 • 流量关闭事件 • 流量开启事件
切流 部署 停止
Ali-Tomcat
事件通知 服数 配 数消 务据 置 据息 框组 组 访组 架件 件 问件
提供中间件 的服务
部署
第26页
资源隔离的问题
应用版本1
内存 CPU I/O带宽
应用版本2
内存 CPU I/O带宽 系统变量
第27页
多租户JVM
数据隔离 资源配额 资源隔离 多租户API AliJDK8
第28页
Tenant与Context
依靠Tenant做到资源隔离。
• Context对应Webapp • Tenant中创建Context • 销毁Context时销毁Tenant
Ali-Tomcat
部署
Context 版本1
Context 版本2
第29页
多版本部署带来了什么
发布提速
全量发布
• 商品详情应用 • 2小时到10分钟
自由切流
• 按比例
秒级回滚
旧版本暂时不 下线
• 回滚不是即刻发 生的
极速回滚
• 1小时到30秒
第30页
总结与展望
应用部署方式和思考维度的改变 合并部署与性能提升 多版本部署与发布提速 模块化应用的支持 高密度部署
第31页
29