Comments (4)
个人认为定时器和消息队列本来就没有一一对应关系,而是两类事件,一个是时间事件一个是消息事件。这个模式在redis中也有类似应用。关键代码在 Oneloop中的这一行:
bool bSucc = m_oMessageQueue.peek(psMessage, iTimeoutMs);
该timeout值是时间堆中的最小超时时间,这个时候程序阻塞timeout ms。如果来消息了,阻塞退出,执行消息。如果直到超时都没接到消息,那么同样阻塞退出,下一个loop执行该超时事件。这样设计的目的是使得两类事件都能够及时和准时执行。
from phxpaxos.
@buptmiao 感谢你的回复,你说的那个函数我是看过的,iTimeoutMs 只是作为锁等待最大时间的依据而已。你说的确实在理,这样的处理应该算是一种优化处理。但是这样 A 虽然是按照消息的顺序处理完毕,但是事实 B 我们是变向的增加了它的超时时间的(将 A 多余的时间过渡给了 B),某些情况会导致发现 B 的超时事件处理动作是往后延迟的,不过这对程序的正确性肯定是没有影响的。
你说的 A 和 B 都能够去处理,但是其实按照原本的超时设定 B 应该是直接去处理超时事件了才对。
from phxpaxos.
时间堆里面的时间都是绝对时间,导致事件处理滞后的原因可能来自前一个事件的处理函数执行时间过长。
from phxpaxos.
这几天又看了一下,开始的理解确实有误。phxpaxos 每次会再发送 message 到其它节点之前会设定一个定时器,待接收到其它节点发来的 message 时会扔到 消息队列 之中,之所以先取出最小的 timer 作为阻塞依据是为了不妨碍下一个超时事件的处理。
from phxpaxos.
Related Issues (20)
- checkpoint机制是不是与多个group不好同时采用?因为多个group的话,每个group都有自己的镜像数据,新机器加入的话,难道每个group都要从旧机器接收镜像追赶进度,而每个group学完都会退出进程 HOT 2
- 请问batch propose 2KB 15W,压测条件为单条数据2KB再进行一定量的合并吗? HOT 2
- phxpaxos 如何保证latest read HOT 1
- 头文件找不到 HOT 1
- 构建环境可以简化不?
- TLA model?
- 局域网测试sample失败 HOT 1
- 一个log文件(.f文件)里面存放几个instance?
- 用户写请求,提交了上次选主超时的value,导致主的租约为0,出现失主现象
- 提案通过后,为啥leader节点先执行状态机
- 关于编译手册的疑问
- 切片收发问题 HOT 1
- 在云环境中与libfaketime的使用产生冲突问题
- 请问夺主时,BeforePropose起到什么作用?
- 如果发生master切换,如何保证新 master 的数据是最新的? HOT 2
- 当 输入paxos的value过长时会有问题吗? HOT 1
- CheckpointSender 线程回收问题 HOT 1
- checkpoint 接收新的状态机 paxos_log日志,重建index后, 在下次重启前以及checkpoint文件传输前,propose超时定时器超时,写入llstance到paxos_log HOT 2
- Project status
- sample phxkv 依赖问题 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from phxpaxos.