我想知道Google的Bigtable如何坚持不懈。当写入操作进入时,平板电脑服务器会更新内存中的#34; hashmap"它也被写入日志文件。这样,如果平板电脑服务器死机,新的平板电脑服务器可以读取所有最近的操作,并且等于#34;死了的平板电脑。
这是有道理的,但是将每个操作写入日志服务器而不是批处理(因为它写入磁盘)并不会慢下来吗?
答案 0 :(得分:0)
让我们依次讨论这些问题。
对于每个操作或批量,Bigtable是否会对日志执行操作?
Bigtable将每个操作写入持久性日志,而不是批量操作。换句话说,它是同步的,而不是异步的:当服务器响应客户端时,数据已经被写入日志(这是持久的和复制的),而不仅仅是内存。
如果存储系统只写入内存并批量写入日志,如果服务器在接受一些写入后崩溃,但在将它们刷新到日志之前,它将丢失仅在内存中的数据。
这是有道理的,但它不会减慢将每个操作写入日志服务器而不是批处理(因为它写入磁盘)?
Bigtable(以前为Google File System,现在为Colossus)背后的分布式文件系统比典型的文件系统快得多,即使它已经分发并且每次写入都被复制了。
在使用YCSB的基准测试中,Google Cloud Bigtable在读取和写入时都显示single-digit millisecond latency,即使在尾部也是如此: