随着无线业务和开发技术的高速发展,APP已成为大多数互联网公司连接用户的核心渠道,移动应用架构也需要根据业务和新技术发展而不断进化。携程在移动端发力已超过6年,在无线开发和新技术探索方面具有业界领先的优势。
2017年8月27日,全球最具影响力的高端技术人社交网络EGO,带领上海分会近40位CTO、技术总监等顶尖技术领导者,一起探索携程无线开发的实战经验。
2015年,携程总部迁入处在上海虹桥临空经济园区的凌空SOHO,区域内有超过800家企业总部,是连接整个泛长三角地区最具活力和辐射力的国际化商贸总部聚集区。
凌空SOHO是继北京的银河SOHO、望京SOHO之后,SOHO中国与建筑设计师、普利兹克奖获得者扎哈·哈迪德联手打造的第3个建筑精品。
还未踏入园区,建筑外观的未来感和科技感已经扑面而来,宛如两列巨型高铁蓄势待发的商业楼宇传达着创意和互联网精神。
除了地理位置优越,携程总部内部也很值得参观。进入正厅,一面气势恢宏的历程墙带领参会者回顾了携程从创立至今的历史和成绩。
历程墙的对面是携程依托大数据的实时分析能力,制作出的实时、动态的可视化订单展示系统,不仅订单生成状况一目了然,更可实时了解目前各地区、景点的热度情况。不停闪烁的光点将冰冷的数据转化成了生动可视的形象。
携程的员工福利也令人羡慕,台球桌、跑步机、按摩椅等健身娱乐器材配置齐全。
参观结束后,参会者们怀着好奇和期待的心情进入了令人期待的分享环节。
携程技术中心基础业务研发部高级研发经理赵辛贵,在本次活动中分享了《React Native在携程的工程实践》。
携程App于2011年开始开发,随着功能的增多,问题也逐渐凸显。受到APP包大小限制、H5 Hybird性能瓶颈、开发效率低等多种因素影响,携程于2015年引入React Native。在2017年1月已经开始规模化使用。
通常情况下React Native 开发会面临打包出来的 JSBundle 过大,首次进入 RN 页面加载缓慢等问题。对于携程这种动辄几十个业务的场景,这些问题是不可接受的。
基于这些问题的存在,携程对 RN 官方的打包脚本做了改造,开发CRN(Ctrip React Native) 。将框架代码拆分出来,让所有业务使用一份框架代码。将JS执行时间放到后台预先做完,大大的提升了页面加载速度。
分享的最后,赵辛贵还总结了使用RN的注意事项:
1.大量业务使用证明RN的性能和稳定性可靠,适合大规模采用
随后,携程高级无线开发总监和无线技术委员会主席陈浩然分享了《携程无线网络服务方案》。
2016年初,携程无线APP有两个通道:一是Native,基于TCP设计的一套网络服务通道,连了TCP Gateway;二是Hybrid,用GS写界面,最后是通过传统的HTTP请求到达HTTP Gateway,TCP Gateway和HTTP Gateway最终链接到对应的SOA服务。
陈浩然在演讲中表示,TCP协议是传统协议,位于第三层,只控制网络层的传输协议,到了应用层还是需要设计一层应用层协议,类似RPC机制。携程的TCP Gateway分为两个部分:第一部分是在接入层管理TCP连接,主要基于Netty实现,负责App端TCP连接管理;第二部分是在路由层,基于Netty Zuul对服务进行路由、监控、安全、鉴权方面的管理。
之所以需要Gateway,是因为携程业务很多,目前有20多个事业部,每个事业部有自己的服务集群,如果将所有的服务集群耦合在一起,每个BU的发布都会影响到其他BU。而设置Gateway进行服务转化,后端所有业务逻辑是完全分割开来的,相应的部署、发布、监控都是完全割离开来的,这样可以避免干扰,提升效率。
携程最新的无线网络服务通道架构图,不管Hybrid还是Native,都是走TCP连接做网络服务,Hybrid有一个内部API来控制去发送网络请求,不需要再让系统来控制HTTP请求到HTTP Gateway,而只是全部用Native TCP连接到TCP Gateway,如果是Hybrid请求被包装过了,就转成HTTP请求到HTTP Gateway,如果是正常TCP请求就直接发送到对应后端服务。
演讲的最后,陈浩然总结,现有无线服务模型是Request-Response模式,存在无法实时推送业务数据变更的问题,业务需要数据变更时只能轮询拉取,低效且不够及时。对此,陈浩然表示未来的方向将会是:Server-Push。
除了携程的两位嘉宾,EGO还专门从外部邀请了微店 Android首席架构师彭昌虎分享《微店Android插件化架构重构实践》,从另外的角度解读移动端技术。
插件化技术在Android上发展了几年,已经出现很多好的插件化开源架构,插件化技术已经不新鲜。但能够实际落地的还不是很多,微店从2016年初开始插件化改造工作,2016年底基本完成。彭昌虎为大家分享了微店过去一年的插件化改造历程。
所有分享结束后,以一张合照结束了EGO走进携程的活动。