uber是如何实现无模式数据库方案的

超级欧派课程 2024-03-06 15:05:14

在当今的数字化世界中,数据的处理方案必须能够适应不断变化的业务需求。几年前,巨头Uber为了适应这种变化,抛弃了他们的单体Postgres数据库,并将其重要的行程数据迁移到了名为Schemaless的内部数据库中。

Schemaless,如其名字所示,是一种无模式的数据库。它是Uber自家研发的一种可扩展且容错的数据存储方案。听起来可能会让人误解,Schemaless并非简单地去掉了数据模型,而实际上是构建在MySQL之上的一个封装层。它采用灵活的架构设计以适应变化的业务需求和大规模的数据处理。

Schemaless的架构中有两种主要的节点类型:工作节点和存储节点。工作节点的角色是接收并处理来自客户端的请求,包括将这些请求传递给存储节点,并汇总存储节点返回的结果。而存储节点则负责保存实际的数据。值得一提的是,数据会被划分成大量的分片(通常是4096个),每个分片都映射到特定的存储节点。

在这种架构设计下,Uber能够独立地扩展其各个部分,根据业务需求进行灵活调整。在正常情况下,客户端发起的读取请求会被工作节点转发到特定的存储节点并返回读取到的数据。而对于写入请求,如果主节点宕机,Schemaless仍然可以处理这些请求,并将数据持久化存储在另一个随机选择的主节点上,从而保障服务的连续性。

除了基本的读写操作,Uber还在Schemaless上实现了一些优化措施。比如,针对读请求,工作节点可以从任何存储节点中读取数据,包括主节点和复制节点,这样就可以很大程度优化读取性能。同时,对于经常使用的数据,Uber还采用了缓存策略,进一步提升了Schemaless的响应速度。

在Uber使用Schemaless多年后,这种数据库不仅提供了对于海量数据高效可靠的处理能力,更赋予了Uber的业务极高的灵活性。如此看来,Schemaless的应用无疑是一次成功的技术转型。

了解更多

如果对微服务以及相关案例感兴趣可以点击我的专栏了解更多详情内容。‬

0 阅读:0

超级欧派课程

简介:感谢大家的关注