"Uber SRE以及Cache服务在微服务环境下的演进.pdf"
这篇文档讲述了Uber公司的服务可靠性工程(Site Reliability Engineering, SRE)及其缓存服务在微服务架构中的发展过程。Uber作为全球知名的出行平台,其业务经历了快速的增长,这导致了基础设施和架构的复杂性不断提升。随着业务的扩展,Uber从单一的API转变为微服务架构,以提高系统的可扩展性和可靠性。
1. Uber的成长历程:
- Uber在全球多个国家和地区运营,业务覆盖了城市交通、商务运输、餐饮外卖及商品配送等多个领域。
- 公司的发展时间线显示了从初创到大规模全球化的过程,包括引入自动驾驶汽车项目等创新尝试。
2. ETAReliability(即实时可靠性):
- 随着业务的快速发展,Uber对服务的实时可靠性提出了高要求,确保用户能够快速准确地获取车辆或服务。
3. 微服务架构的演变:
- Uber从最初的单体应用API逐渐转向微服务架构,以实现更好的模块化和独立部署。
- 服务导向架构允许不同的服务之间进行松耦合通信,分为无状态和有状态服务,以优化资源管理和数据处理。
4. 技术栈:
- 存储层包括自建的Schemaless系统(基于MySQL),MySQL,Cassandra和Redis/Twemproxy,提供灵活的数据存储解决方案。
- 数据处理使用Hadoop、Spark、Hive、Presto和Vertica等工具,处理大数据分析任务。
- 队列系统采用Cherami和Kafka,支持消息传递和事件驱动架构。
- 搜索与日志管理使用Elasticsearch、Logstash和Kibana,提供高效的日志搜索和监控。
- 服务调度和部署基于Apache Mesos、Aurora和Docker,实现自动化运维。
- 路由和服务发现利用UNS(Uber Name Scheme)、Thrift和Protobuf,确保服务间的通信效率。
- 开发和部署工具如Phabricator、uDeploy、OpenGrok和Github,支持敏捷开发和持续集成/持续部署(CI/CD)。
5. 编程语言选择:
- Uber基础设施团队主要使用Go语言,作为默认的编程语言,Go以其并发处理能力和简洁的语法受到青睐。
总结来说,Uber的SRE和缓存服务演进展示了如何在一个快速增长的公司中,通过采用微服务架构、优化技术栈和提升服务可靠性来应对挑战。这种演进不仅提升了系统的稳定性和性能,也为Uber的全球扩张提供了坚实的技术基础。