面试遇到的问题

本文探讨了分布式一致性的重要性,介绍了严格一致性、强一致性、最终一致性和弱一致性等概念,并详细讲解了两段提交、三段提交协议以及TCC协议。此外,还提到了Paxos、Raft和Gossip等分布式锁服务算法,分析了乐观锁服务中的NWR、Quorum和Lease机制。这些协议和机制用于解决分布式系统中的一致性问题,确保数据在多个副本间的正确同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、fwrite与磁盘写回

C库函数fwrite()就是通过write()系统调用来实现文件写操作。

标准IO流操作读写普通文件是使用全缓冲的,默认缓冲区长度是该文件系统优先选用的IO长度(一般是4kB)。因此当数据长度没有填满缓冲区时,没有写回文件,在文件中是无法看到的。

标准IO都有缓存区,这和系统缓冲不同,我们使用fflush()只保证了将IO缓冲写入系统缓冲中,使IO读操作能成功,但系统什么时候写入磁盘,由系统决定,一般是达到一定量时系统他就写入磁盘。当然可以强制系统将系统文件缓冲的内容写入磁盘。系统调用中的read/write是将内容直接写到系统的文件缓冲区。 fwrite返回后,数据还在缓冲区,如果这时候进程core掉,这些数据会丢失,没有写到磁盘介质上。当调用fclose的时候,fclose调用会把这些数据刷新到磁盘介质上。除了fclose方法外,还有一个主动刷新操作fflush 函数,不过fflush函数只是把数据从CLib buffer 拷贝到page  cache 中,并没有刷新到磁盘上,从page cache刷新到磁盘上可以通过调用fsync函数完成。

2、了解的分布式一致性算法

CAP原理中,有三个要素:

  • 一致性(Consistency)
  • 可用性(Availability)
  • 分区容忍性(Partition tolerance)

分布式一致性问题:在分布式环境中各节点状态和数据不一致的问题。

最终目的:像一台机器一样提供服务,更详细的解释就是,当其中某个服务器收到客户端的一组指令时,它必须与其它服务器交流以保证所有的服务器都是以同样的顺序收到同样的指令,这样的话所有的服务器会产生一致的结果。

一致性分类:

严格一致性(Strict Consistency):

要求全局时钟,任何时刻都是一致的。(现实无法实现)

强一致性:

顺序一致性(Sequential Consistency):分布式逻辑时钟(有额外的性能开销),所有的进程以相同的顺序看到所有的修改,但是每个时刻可能看到的值并不一致。

线性一致性:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值