本文共 3069 字,大约阅读时间需要 10 分钟。
在集团大数据、算法的背景下,猫客(天猫客户端)首页率先从2015年的坑位运营走向2016年的全面个性化,猫客首页个性化业务点多达50多处,个性化场景大部分通过通过Aladdin(天猫推荐)接入TPP(集团个性化平台)来实现的。走向个性化的同时也接入大量的第三方服务,例如:阿里妈妈钻展、新人礼包等。
2016老版本猫客首页问题梳理
2016老版本猫客首页问题分析
2017新版猫客首页业务架构
为了承接2017新的业务架构,猫客首页研发的服务端动态化平台TAC,后面我们主要介绍动态化平台TAC。
TACTangram App Container
TAC目标
低成本开发与发布流程
低成本搭建与维护开发环境高稳定性保障动态化脚本语言选型
结论:在目前高并发,低延时,追求极致用户体验的移动会联网背景下,稳定性、性能对服务端来说至关重要,故容器化使用集团很多开发人员精通的java语言。对应目前猫客Tangram,Android开发人员可以完全胜任。
Java语言动态发布: 动态编译、动态加载、热部署
1. 动态编译技术选型
结论:为了让开发人员获得的类编译信息、方便问题定位,同时结合集团服务端早普及jdk1.6且目前很多应用已升级1.8,故使用了StandardJavaFileManager进行类的动态编译。
1. // 1.创建需要动态编译的代码字符串 2. String nr = "\r\n"; //回车 3. String source = "package temp.com; " + nr + 4. " public class Hello{" + nr + 5. " public static void main (String[] args){" + nr + 6. " System.out.println(\"HelloWorld! 1\");" + nr + 7. " }" + nr + 8. " }"; 9. // 2.将欲动态编译的代码写入文件中 1.创建临时目录 2.写入临时文件目录 10.File dir = new File(System.getProperty("user.dir") + "/temp"); //临时目录 11.// 如果 \temp 不存在 就创建 12.if (!dir.exists()) { 13. dir.mkdir(); 14.} 15.FileWriter writer = new FileWriter(new File(dir,"Hello.java")); 16.writer.write(source); 17.writer.flush(); 18.writer.close(); 19. 20.// 3.取得当前系统的编译器 21.JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); 22.// 4.获取一个文件管理器 23.StandardJavaFileManager javaFileManager = javaCompiler.getStandardFileManager(null, null, null); 24.// 5.文件管理器根与文件连接起来 25.Iterable it = javaFileManager.getJavaFileObjects(new File(dir,"Hello.java")); 26.// 6.创建编译任务 27.CompilationTask task = javaCompiler.getTask(null, javaFileManager, null, Arrays.asList("-d", "./temp"), null, it); 28.// 7.执行编译 29.task.call(); 30.javaFileManager.close();
2. 动态加载技术选型
结论:结合Tomcat的类加载结构进行,以及类加载双亲委派模型,采用了通过多个classloader来实现类的动态加载3. 类热部署技术选型
TAC —架构1.0
TAC流程和和相关流程节点的核心技术
1.TAC控制台-申请阶段
2. TAC控制台-开发阶段
3.TAC控制台-预发布阶段
预发布阶段-类的动态编译
4. TAC控制台-开发调试
5. TAC控制台-正式发布(将触发TAC引擎-CORE做类的动态加载、热部署)
6. TAC引擎-CORE(类的动态加载、热部署)
7. TAC控制台-线上回归 8. TAC控制台-发布结果 目前TAC支持的业务,动态服务已达50+
TAC 2.0 规划
2017新首页开发模式
2017新猫客首页服务端技术架构图-理想生活上天猫
架构师的成长之路,永无止境。如果你对这套架构模式、解决方案,还有其他的想法和建议,也欢迎在文章底部留言,我们一起交流、学习。
本文出自阿里技术公众号,
转载地址:http://esiea.baihongyu.com/