微服务插件容器国际化 灵活应对合资业务架构出海

微风

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

文字内容
1. 微服务插件容器国际化 灵活应对合资业务架构出海 阿里巴巴-高级技术专家 陈旭东
3. 目录 1 合资业务出海的机遇与挑战 2 插件服务总体解决方案探讨 3 插件容器技术深入 4 业务插件全球版本化管控 5 回顾总结
4. 电子商务国际化态势 海外业务持续性布局 加拿大 俄罗斯 国内成功业务模式出海 美国 印度 非洲 东南亚 澳大利亚
5. 业务出海技术挑战及总体解决思路 改造方向 挑战 全球 精细化运 营 国 内 业 务 • 跨国用户访问 • 多语言 • 本地化 • 业务可配置 • 快速运营 共同业务 海 外 业 务 Alibaba.com • 内容管控 • 网络管控 • 贸易管控 海外业务需求可定制 1.业务国际 化 Saas 电商 产品 可定制 国内业务扩展点+海外业务扩展点 支付结算 • 外汇结算 • 货币 2.精细化运 营&定制 。。。 • 时区 • 度量衡 3.业务架构 平台化 商品 业务插件 交易 业务插件 搜索 业务插件 会员 业务插件 店铺 业务插件 金融 业务插件 支付 业务插件 运营 业务插件 导购 业务插件 Paas 技术产品 业务插件容器(微服务+平台技术) 轻量级 轻量级平台技术产品与业务解耦 轻量级业务运行标准环境 零售通 通用服务插件(基础服务SPI及实现) 标准化 标准化的业务微服务研发体系 1688.com Paytm 业务平台插件化 策略 国际合规 落地及未来 方案落地 挑战 用户体验 技术突破 Iaas 海外基础设施 中间件
6. 目录 1 合资业务出海的机遇与挑战 2 插件服务总体解决方案探讨 3 插件容器技术深入 4 业务插件全球版本化管控 5 回顾总结 2.1 业务插件海外协同研发模式 2.2 全球精细化微服务配置管控 2.3 海外合资业务扩展点配置化
7. 插件技术解决方案介绍 统一开放的业务工作平台 用户视图 设计师 产品经理 开发者 运营 Application J2EE Container Business-Plugin IDispatcher 请求路由 Module 展示组件包 Plugin XLang 智能翻译集成 IService(微服务) IFunction 微功能点 业务服务 项目 配置交换 Pluginframework 微功能点 服务调用(framework) http、dubbo、Bundle 微功能点 微功能点 Plugin-Container(Plugin运行环境) 扩展点 配置 开发 发布 基础数据 服务 组件 报表 BT 服务 配置 组件 配置 跳转规 则 BT 配置 权限 管理 功能 授权 算法 工具 产品 工具 运营 工具 测试 工具 运维 工具 监控 工具 基础工具 扩展点 Feature(扩展点) Plugin 业务服务 微功能点 Definition 语义语法 ICondition 条件 业务操作 Plugin-framework配置交换 • 可自主定制开发平台工具 Application(自主根据开放的模型定制功能) Service 服务实现 Function 功能点实现 方案特点:业务服务通过微功能点组合,业务插件在同一个JVM下隔离运行 业务应用通过平台技术隔离 Module 展示组件包实现
8. 海外合资业务如何协同研发业务插件 目标: 低成本 高效 开放 合资企业业务研发团队:自主开 发的业务插件包 3.提供可自主应用运维的 能力 Plugin运行环境 Application Merge 五阿哥业务插件包 +公共插件包 Merge Alibaba业务插件包 +公共插件包 Merge paytm业务插件包 +公共插件包 J2EE Container 国内集群 业务集群环境中的应用 是什么样的? Plugin-Container(运行环境) 业务插件 DataService插件 国外集群 2.提供自主的业务插件开发 能力 配置 模板 服务实现 中美集群 其他公共插件 Plugin-Framework 开发框架集成 1.提供高度复用业务应用环境 的能力 技术平台团队维护: 1.Carry运行环境 2.Carry-Framework开发框架集成 (服务、模板组件、请求路由等) 3.Carry标准的通用插件
9. 业务插件海外协同研发业务示例 业务插件A 模块A展示服务 页面服务 功能点A 功能点B 模块B展示服务 复用公共翻译微功能点服务B 公共插件 翻译功能点A 翻译功能点A 美国合资企业 模块C展示服务 翻译功能点B 功能点实现C 复用模块C 业务插件B 模块C展示服务 中国合资企业 页面服务 翻译功能点B 模块D展示服务 功能点C 模块E展示服务 功能点D 翻译服务A 组 合 成 新 服 务 翻译功能点B 数据服务B 功能点C suggest业务服务C 功能点D 复用公共翻译微功能点服务B
10. 业务插件开发脚手架能力支持 业务插件开发代码自动构建 业务插件开发生命周期 可视化构建支持 springboot Initializr -------com.alibaba.xxx.service(标准服务开发方式) ------view ------business ------data -------templates (标准描述的页面组件) ------pages ---defaultlayoutpage ----package.json ---- defaultlayoutpage.vm -----css -----js ------modules 配置工具 -----其他扩展功能 -----pom.xml 从Aone拉插件分支 1.提供开发调试环境,并 对接服务文档等 开发 业务插件 mvn plugin:run mvn plugin:debug mvn plugin:commit 启动 CarryContainer 提交发布 发布业务插件 mvn plugin:deploy 3.通过业务工作平台进行 服务、模板等配置 完成功能上线 2.提供Tracer平台,在线 调试线上数据
11. 业务插件-全球精细化运营业务服务 请针对来自A国家的人群不展示广告推荐? 请针对B语种的展示阅读习惯切换为从右到左? 运营C 运营A 请针对来自B语种的服装类目检索需求人群展示gallery橱窗大图展示模式? 运营B 运营共性需求建模? 微功能点组合示例 筛选区服务 主数据区服务 功能扩展点 排序筛选功能点 图片信息功能点 行业运营 condition 价格区间功能点 Offer打标功能点 输入变化 参数 行业运营功能点 服务属性功能点 展示数据 功能实现 大市场SN服务 搜索头服务 选购热点功能点 搜索框功能点 价格行情功能点 搜索热词功能点 需求变化点
12. 业务插件-全球精细化运营模型可视化 支持精细化运营 支持服务分层 IFunction IService 支持扩展定制 IExtendFeature Condition 组合 FunctionA FunctionB 可扩展 服务 可扩展 FeatureA FeatureB FeatureC 功能点
13. 业务插件-全球精细化运营模型可视化 testServiceA 业务A 业务A测试服务 http://xxxx/testServiceA.?params'>http://xxxx/testServiceA.?params TKD服务 服务模型可配置化 buildTKD testServiceA APP1 业务A 扩展模型可配置化 Dubbo扩展 自定义扩展 业务A测试服务 http://xxxx/testServiceA.?params'>http://xxxx/testServiceA.?params 业务A展示层服务 TKD服务 buildTKD
14. 业务插件-全球精细化运营模型可视化 翻译功能点 翻译功能 机器翻译 country(“Russia”,“US”) 只在俄罗斯、美国生效机器翻译 翻译功能 功能点模型可配置化 人工翻译 翻译功能点 country(“CN”) 只在中国生效人工翻译的功能 人工翻译细粒度通用逻辑控制参数A true 人工翻译细粒度通用逻辑控制参数B false 人工翻译细粒度通用逻辑控制参数C xxxx 人工翻译细粒度通用逻辑控制参数D {a,b,c} 人工翻译细粒度通用逻辑控制参数E 12345 人工翻译细粒度通用逻辑控制参数F abc 人工翻译细粒度通用逻辑控制参数G true 人工翻译细粒度通用逻辑控制参数G true 功能点个数:8 机器翻译功能点 人工翻译功能点 运营静态文本翻译功能点
15. Function+Condition组合执行链设计 用户行为 国家=美国 类目=12345 关键词=连衣裙 商品展示功能点 图片功能点 大图展示功能点 阅读习惯功能点 小图展示功能点 Condition 类目=12345 类目匹配 从左到右功能点 (默认) 交易度量功能点 交易笔数 功能点 Condition 交易件数 功能点 Condition 类目=123 空 默认匹配 上级类目匹配 执行链 小图展示功能 点 从左到右展示功 能点 展示交易件数 功能点 多色多码功能点 特色标签功能点 交易成交额 功能点 多色多码功能点 Condition 关键词=连衣裙 关键词匹配
16. Function执行链分层匹配算法 用户 40%流量 人群识别 按国家划分人群 全球来源新用户 10% 语种识别 英语 俄语 5% 意图识别 10% 按母语划分人群 进口采购人群 Amazon商家 修正人群识别异常 10% 10% 德语 法语 。。。 5% 检索行业意图 C类采购偏好 B类偏好采购 。。。 行业A 行业B 行业C 行业D 行业E 功能点A 功能点A 功能点A 功能点A 功能点A 功能点B 功能点B 功能点B 功能点C 功能点C 功能点C 功能点D 功能点E 功能点D 功能点E 用户行为业务指标产出 动态调整功能点组合 准实时数据产出
17. 目录 1 合资业务出海的机遇与挑战 2 插件服务总体解决方案探讨 3 插件容器技术深入 4 业务插件全球版本化管控 5 回顾总结 3.1 技术栈容器化解耦业务 3.2 插件生命周期 3.3 插件类隔离解决方案
18. 通过插件容器平台化解耦业务的思路 平台技术、业务应用、工作 平台分离,业务应用研发各 自差异化实现 插件运行生 命周期? 通过插件运行环境封装平台 技术,标准化解耦业务、平 台工具 平台技术 协同研发 工作平台 Ued dev Framework 前端开发框架 前端开发框架解决方案 1688搜索 互通 Plugin-Framework plugin-framework 集团安 全解决 方案 pluginEnv 运行环 境解决 方案 运行 环境 olugin-framework 应用集成解决方案 扩展适配 Webx XXX 组件开发框架 组件化解决方案 RPC XXX 服务开发框架 服务化解决方案 服务开放 XXX icbu搜索 工作流程 一站式运维 SpringMVC 应用集成解决方案 互通 支撑 引擎查询框架 解析标准化方案 RestRpc 多端同步解 决方案 XXX 组件隔离解 决方案 Wire 无线集成解决方案 数据同步管理 Definition 语义文档解决方案 应用通信 支撑 Message 灰度发布解决方案 协同研发 算法开放管理 工作平台 Dump定制管理 业务测试 BT 业务测试解决方案 插件部署 支撑 AliDocker 应用容器 Carry-AS 应用保障体系化解决方案 BT工具 运行环境工具
19. 插件的生命周期 3.业务团队管理业务插件 EE 1.搜索团队开发维护公共 插件库 2.搜索团队维护的插件运 行环境 插件运行环境 execute load 公共功能插件 插件管理控制台 Module 2.业务团队开发业务插件 展示 组件 布局 组件配置信息 组件管理 us ServiceA ServiceB 构建插件 依赖树 业 务 插 件 start plugin stop plugin install plugin uninstall plugin Plugin Life Cycle 服务管理 管理服务 Service dao BeanDefinition Register 业务服务 Function Condition 公共服务 Function Condition 服务配置信息 插件版本管理 难点2:插件生命周期 难点1:插件隔离 插件依赖配置信息
20. 插件隔离轻量级解决方案 IDaoPlugin 接口包 IPlugin 实现包A install Container install install PluginAClassLoader IPlugin 实现包B PluginBClassLoader IPlugin 实现包C PluginCClassLoader 实现包可直接install 将依赖打包到实现包中 2方库A Version:1.0.0'>Version:1.0.0'>Version:1.0.0'>Version:1.0.0 2方库B Version:1.0.0'>Version:1.0.0'>Version:1.0.0'>Version:1.0.0 2方库A Version:1.0.1 2方库C Version:1.0.0'>Version:1.0.0'>Version:1.0.0'>Version:1.0.0 2方库A Version:1.0.2
21. 插件隔离方案配置化 侵入性 网状 无侵入性 用户 操作隔离方案切换 管理平台 方案对 比 轻量级 方案 侵入性 方案 无侵入 性方案 Bundle打包 方式 依赖直接打 包到实现包 内 接口包和实 现包需要转 换 接口包和实 现包需要转 换 类加载 只针对实现 Bundle包做 隔离 需要篡改应 用类加载关 系 接口包采用 应用类加载 器,实现包 使用OSGi类 加载寻找 2方依赖加 载 2方依赖重 复加载 只加载一次 2方依赖 接口包依赖 与应用共享, 实现包依赖 只加载一次 配置变更消息推送 restart 应用类加载器提供 Carry-Container
22. RPC服务native化 APP1 export ServiceB可视化 APP2 import ServiceB rename to ServiceA可视化 插件仓库 下发pluginA 下发pluginA、PluginB 请求pluginA 美国APP1 Install plugin Bundle ServiceB APP1 新加坡 APP2-Container Install pluginA Bundle Install pluginB Bundle 应用本地执行代替远程调用 ServiceA 协议可选择、可扩展定制 自动识别关联插件信息
23. 目录 1 合资业务出海的机遇与挑战 2 插件服务总体解决方案探讨 3 插件容器技术深入 4 业务插件全球版本化管控 5 回顾总结 4.1 插件容器版本化基线 4.2 业务插件版本化发布 4.3 插件部署示例方案 4.4 插件运行态元数据
24. 插件容器的版本化基线发布 Plugin-Container /home/admin/plugin-container/bin 发布Plugin-Container rpm版本 应用基线变更 调用容器脚本 平台团队 PEConfig 调用统一运维脚本 Container-PE-Service 通过平台Console来触发发布工作 返回发布状态给Console 发布平台Console 业务团队 /home/admin/appname/appname.war 从maven仓库获取业务jar 业务Jar (pom) IService 服务 IFunction 功能点 template 模板 Maven 仓库 优势: 1.自主性更强,通过搜索业务中台自主发布来生效任意版本 2.后期可以通过扩展修改ContainerPEService来兼容各类发布系统 发布2方库 第3方开发
25. 业务插件版本化发布 编译期转换为固定版本号 Bunlde-PluginA 1.0.0 BundleA1 1.0.1 BundleA2 1.0.0 版本化申请发布 当前运行版本(artifactId:groupId:version) 1.com.xxx.plugin.search:plugin-app-xxx:1.0.0 运行态元数据 修改人 发布时间 点击申请发布按钮 ArtifactId GroupId 第一次发布找不到这2个值时 打开手工设置 可用版本: 口 1.com.alibaba.xxx.search:'>com.alibaba.xxx.search:plugin-app-xxx'>com.alibaba.xxx.search:'>com.alibaba.xxx.search:plugin-app-xxx :1.0.3 修改人 发布时间 口 2.com.alibaba.xxx.search:'>com.alibaba.xxx.search: plugin-app-xxx :1.0.2 修改人 发布时间 口 3.com.alibaba.xxx.search:'>com.alibaba.xxx.search: plugin-app-xxx :1.0.1 修改人 发布时间 口 4.(正在使用)com.alibaba.xxx.search:'>com.alibaba.xxx.search:xxx-app-xxx:1.0.0 修改人 发布时间 提交发布 取消
26. 插件容器混合部署案例 1.技术平台团队基础镜像 Docker Container基础镜像 2.插件容器混合部署 部署 A集群 Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container 业务插件1 业务插件2 Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container 业务插件3 部署 B集群 Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container 业务插件1 部署 C集群 Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container 3.合资公司A自己开发的 插件 业务插件1 业务插件2 业务插件3 Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container'>Docker:Container 业务插件4 业务插件2 4.合资公司B自己开发的 插件
27. 目录 1 合资业务出海的机遇与挑战 2 插件服务总体解决方案探讨 3 插件容器技术深入 4 业务插件全球版本化管控 5 回顾总结
28. 回顾 • • 解决方案探讨 Ø Ø 统一开发体验,(插件容器+Framwork+平台管控) Ø 业务插件海外协同研发模式 Ø 全球精细化微服务配置管控,微功能点执行链分层匹配, Ø 解决精细化运营 Ø Ø 海外合资业务扩展点配置化 Ø Ø 技术栈容器化解耦业务研发 Ø • 插件容器技术深入 ü 插件生命周期 ü 插件类隔离解决方案 ü 跨国调用可视化治理,RPC服务native化,解决访问性能 ü 插件容器版本化基线 ü 业务插件版本化发布,提供全球多版本精细化服务 ü 多合资企业业务插件混合部署示例 l 未来 ü 开源计划中 曾经遇到的坑 类隔离方案引入OSGi+无侵入性设计方案增 加研发成本,最后采用了轻量级隔离 执行链匹配,常见脚本引擎高并发下存在性 能问题,采用自建语法树预编译.class 容器内业务插件隔离通信 国际部署网络问题,插件包下载慢(镜像) 。。。
31. THANKS /感谢聆听 --------- Q&A Section --------