ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Uber首席架构师聊架构

2021-04-22 15:49:09  阅读:218  来源: 互联网

标签:Uber 架构 验证 服务 系统 utm 使用 架构师


微服务模式的利弊


微服务模式允许使用不同的开发语言,例如一些服务使用 Node.js,一些使用 Python,一些使用 Go,另一些使用 Java,Uber就是这样,并还有 Scala


使用微服务,可以让每个团队自己掌握他们的发布周期,自己对服务的在线负责


就是因为每个团队只负责自己的事情,所以在很多时候会降低整体速度,例如,java开发团队必须明确他们应该如何与某个系统沟通,而同样的事情还要在 Node.js 与 Go 的团队做一遍


再比如,在某个平台上经过奋战解决了某些bug,同样的,其他平台可能还需要战斗一遍


对于多语言混合使用的代价预估不足,超出了预期


在新员工的工作效率方面,微服务起到了很好的效果,由于Uber的高速发展,大量新员工加入,正是因为使用了微服务,降低了系统理解的难度,使新员工可以快速进入工作状态


Uber的大体架构


Uber在全世界建立了很多数据中心,就是为了让用户与数据的距离更近,还可以提高系统的可用性


调度系统在Uber中很重要,之前使用 Node.js 开发,后来这个系统扩展到了非常大的规模,便逐渐迁移到了 Go 和 Java


大部分高计算量的服务都是使用 Java 开发,例如地图服务,需要大量计算预计达到时间和规划行程路线


调度系统中有很多任务对象,所有任务的状态都需要管理,使用 Riak cluster 来实现(以 Erlang 编写的一个高度可扩展的分布式数据存储)


已经完成的任务会被移出调度系统,然后通过 Kafka 流入到其他的业务系统


所有的 Kafka 信息流都会进入 Hadoop,用来进行数据分析


质量保证


Uber高度重视系统的质量,所以失败验证是个非常重要的工作,所有的系统都被设计为可验证的


失败验证基于 Netflix 的 Simian Army 系统,Uber在其上进行了调整,使其更适合自己


Simian Army 可以进行随机故障测试,用于验证可靠性


验证工作中,建立一套模拟环境,和开发一套集成测试集是很重要的一部分


通过验证过程,发现了之前系统设计的一个不足,以前很多接口都使用了JSON结构,因为JSON不是类型安全的,所以非常难以验证


服务间使用类型不安全的JSON字符串交互数据,导致整个系统的验证成本很高,超出了预期,是一个较大的经验教训


接下来要对接口进行改造,使用类型安全可验证的方式,这将是一个重点任务


Uber在内部进行大量验证的同时,还在全世界建立起了一个大规模手机测试团队,让大家以用户的角度来使用,进行黑箱测试



以上内容整理自 Uber首席架构师 Matt Ranney 在 2016 QCon 大会的访谈

原文地址 

https://www.infoq.com/articles/podcast-matt-ranney?utm_source=infoq&utm_medium=popular_widget&utm_campaign=popular_content_list&utm_content=homepage


标签:Uber,架构,验证,服务,系统,utm,使用,架构师
来源: https://blog.51cto.com/u_15127579/2724893

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有