前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Uber 现在的技术构成

Uber 现在的技术构成

作者头像
dys
发布2018-04-03 17:44:56
1K0
发布2018-04-03 17:44:56
举报
文章被收录于专栏:性能与架构

Uber 经过6年的快速发展,技术构成已经非常复杂,下面看下 Uber 官方公布的技术栈

底层基础

使用混合云模式,结合了多个云服务提供商,全球多个数据中心,如果一个数据中心出错,马上转到另一个,开通了Uber服务的城市,会被分配到物理距离最近的数据中心,并且每个城市的数据都会备份到一个异地数据中心,所有的数据中心都是运行态的,没有单独作为备份的数据中心

在存储方面,以一个 Postgres 数据库起步,后来发展迅速,对存储的要求越来越高,需要提升存储的可用性,并要求降低系统响应时间

现在使用的是 SchemalessRiakCassandra

Schemaless是内部基于 Mysql 构建的存储系统,用于长期的数据存储,Riak 和 Cassandra 用于高可用、低延时的需求

分布式存储和分析使用 Hadoop 体系

缓存使用 Redis,采用了 Twemproxy redis集群方案,Twemproxy 使缓存层具有良好的扩展性,并且不会牺牲缓存命中率

日志

日志对于问题处理、商务分析等都非常重要,日志信息会进入 Kafka 集群,然后被多处消费,例如 Hadoop、文件存储系统、实时处理服务等等

日志的搜索和可视化使用了 ELK(Elasticsearch, Logstash, Kibana)

服务发现和路由

Uber使用SOA架构,在其复杂的网络环境中,各个服务之间必须可以互相沟通,通过结合使用 HAProxyHyperbahn 来解决这个问题

Hyperbahn 是 Uber 开源的一套服务发现和路由系统,专门用于包含大量微服务的大规模系统,可以使服务间的发现和沟通非常简单和可靠

老一点的服务使用 HAProxy 把请求路由到其他服务,使用 HTTP 传输 JSON,这个传输数据的方式可读性好,非常有助于排查错误

后来使用了HTTP的替代协议,例如 SPDY、HTTP/2、TChannel,结合接口定义语言,如 Thrift、Protobuf,在系统的速度和可靠性上都很有帮助

开发与部署

开发语言主要是 Python Node.js Go Java,初期使用 Python 和 Node.js,后来为了高性能的需求,采用了 Java 和 Go

Java 还有非常丰富的开源生态系统,例如 Hadoop 和其他分析工具,而 Go 的特点很明确,高效、简洁、快速

在一些系统级的需求上,使用 C/C++,以保证性能

Phabricator 是一个强有力的工具,可以做代码的review和审查、bug跟踪、项目管理、团队成员沟通等等,使用 OpenGrok 帮助搜索代码,做代码导航,文档生成使用 Sphinx,开发环境尽量与产品真实环境一致

对于部署流程,对很多开源工具进行了整合,在其上构建出适合自己的部署系统,整合的工具例如

Packer(容器镜像管理)、Vagrant(开发环境管理)、Boto(Amazon Web Services接口)、Unison(文件同步)

使用 Puppet 进行系统配置管理,使用 Jenkins 做持续集成

监控

使用 Go 开发了一个指标数据收集和存储的系统,指标来自Uber的任何部分,例如 server,service,code

数据收集上来之后,进行趋势分析,使用 Grafana 来构建仪表盘和图表

还开发了一个异常检测工具,基于历史数据构建预期模型,指标收集上来之后,和模型进行对比,检查当前数值是否在预期范围内

小结

可以看出Uber的技术构成比较复杂,有开源工具,有自研系统,也开源了一些自己的东西

内容整理自Uber官网发布的文章,原文内容更多,地址

https://eng.uber.com/tech-stack-part-one/

有兴趣的话可以看下,建议多看几遍,很有帮助

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档