“外卖的背后-饿了么基础架构从0到1的演进”是一份关于饿了么平台技术演进的报告,由饿了么的兰建刚分享,主要涉及了构建高效、可扩展的外卖服务背后的关键技术,包括CI/CD、配置管理、追踪、日志、指标、告警、任务调度、数据库、缓存、服务化框架、API网关等,并深入探讨了负载均衡的挑战与解决方案。
报告中首先提到了2015年初饿了么成立了框架和工具团队,从零开始搭建整个架构。在这个过程中,方向的选择和细节的处理对团队的成功和团队成员的工作体验至关重要。报告的核心部分详细讲述了在负载均衡方面所面临的挑战和解决方案。
最初,饿了么采用了F5和HAProxy作为负载均衡器,部署在客户端本地。但随着业务的发展,这种方式遇到了诸多问题,如扩容困难、配置复杂、运维成本高、目录和文件格式不统一等。为了解决这些问题,团队探索了不同的方案,包括采用集中式的HAProxy、F5或OSPF+LVS来减少部署量,以及引入服务发现机制以降低运维成本。
饿了么最终选择了两种主要的负载均衡解决方案。一是通过RPC(远程过程调用)实现的内置LBSDK,它允许服务自我注册和发现,减少了配置,简化了部署。二是使用GoProxy作为代理,特别是针对DAL(数据访问层)和Corvus(Redis代理)的需求,实现了DB代理、分片、读写分离,并通过GoProxy结合服务发现功能,构建了一个配置简洁且对业务改动较小的HAProxy解决方案。
此外,报告还提到了其他关键的技术组件,如CI/CD(持续集成/持续交付)流程,用于自动化软件开发的生命周期;Config管理系统,用于配置管理和分发;Trace系统,用于追踪服务间的调用链路;Log日志系统,收集和分析应用程序日志;Metrics监控系统,收集系统和应用的性能指标;Alert告警系统,实时监控并发出异常通知;Job任务调度系统,处理定时任务;DRC(分布式一致性)服务,确保数据一致性;DB和Cache,作为数据存储和高速缓存;DAL(数据访问层),封装数据库操作;Corvus,提供了Redis服务;SOA(面向服务架构)框架和服务API,用于服务化和接口设计;以及API Gateway,作为对外的统一入口,处理各种请求和路由。
这份报告揭示了饿了么在应对快速变化的外卖市场时,如何通过技术创新和优化基础架构,实现从无到有,从小到大的演进,为构建稳定、高效的外卖服务奠定了坚实的基础。