携程无线App架构演进:组件化与微服务

5星 · 超过95%的资源 需积分: 9 193 下载量 141 浏览量 更新于2024-07-20 收藏 2.16MB PDF 举报
"携程下一代无线App架构设计,陈浩然,携程旅行网无线开发总监,SDCC 2016,架构" 携程作为知名的在线旅游服务平台,在无线App领域进行了深入的架构设计改革,以适应移动互联网的发展。陈浩然在演讲中详细介绍了携程无线App的进化过程和面临的挑战,以及解决这些问题的技术策略。 首先,陈浩然提出了App工程的解耦和组件化架构。这是应对组织和技术复杂性的关键。遵循Conway's Law,即系统的结构反映其组织的沟通结构,携程将多个业务团队与基础框架团队分开。业务团队能够自主决定设计、开发和发布周期,而基础框架团队则负责提供开发框架、功能SDK以及系统服务。通过这种方式,实现了技术解耦,包括将传统的n-层架构转变为微服务架构,以及数据服务的解耦,以实现数据模型的封装、管理和访问。此外,还引入了组件化和插件化开发,允许App端的升级和维护更加灵活。 然而,携程在实现无线化过程中遇到了一系列问题,如进程耦合、缺少负载均衡、监控不足、熔断机制缺失以及安全风险等。为了解决这些问题,携程构建了Mobile Gateway作为服务端入口,对各个服务进行统一管理和调度,如酒店Service、机票Service等,同时,通过CtripWireless、CtripData和CtripFoundation等模块实现解耦,形成了CTBusiness、CTFoundation和CTComm等组件化结构。 App工程配置的解耦是另一个重要方面。携程将核心基础功能如通讯、定位、Hybrid、数据库等做成SDK,方便其他业务单元使用,减少重复开发。公用业务功能也被组件化,如地图、日历等,以降低工作量。App业务容器化的实施,使Bundle间相互独立,提高了整体的稳定性和隔离性,同时也增强了扩展性和伸缩性,支持Bundle的动态加载和Hotfix。为了提升性能,每个Bundle都有独立的性能统计指标。这些改变得益于插件化和动态加载框架DynamicAPK,它降低了迁移成本,减少了对App的更新影响。 携程的下一代无线App架构设计旨在通过组织和技术层面的解耦、组件化、服务治理和优化,以及利用先进的动态加载技术,来提高App的灵活性、稳定性和效率,从而更好地适应快速变化的移动互联网市场。这一架构设计对于其他大型互联网公司的App开发具有重要的参考价值。