CMU Notes

记 整理知识

Distributed Systems: Naming and Directory service | Snapshot Algorithm

Distributed Systems

Naming and Directory service

就是写个代码来匹配中间件或是资源。客户有需求就通过JNDI这样的接口(JNDI API)来联系name server, nameserver接到请求也通过JNDI(JNDI SPI)来找相应的资源。相关的名词有:Namespace(例如youtube.com),Context(一个包含name和object映射的集合,可以bind、unbind等),Naming Conventions(例如c://user/ vs c.user.andrew)

Snapshot Algorithm

简单来说,就是在不妨碍业务过程的条件下通过一个Marker消息来确认其他业务消息的先后,利用快照得到分布式系统的整体情况。

举个简单的例子:一桌打黑牌的人(近似赌博,有人在门口放哨),主人公A收到了外界传来的Marker消息(快速撤离),喵了一眼自己手里的牌并做了记录。然后向每个牌友发出Marker,声明在Marker之后打出的牌对手都不能再计算(可能有诈)。其他牌友也照做。这样,将所有牌友记录的牌加起来,黑桃、梅花、方块、红桃各自的总数是一定的。当然,收到一个牌友的Marker只是停止计算与这位特定牌友的输赢,没收到某位牌友的Marker就说明两人之间情况正常,赢的牌还是要算的。如果收到了所有牌友的Marker,就说明真的有问题了,得退出牌局,这一轮所做的记录就到此为止。

成功的关键是做事的顺序:

“第一次收到Marker,先记录自己手里的牌再发marker。”
“接下来收到Marker,断了这条通路,然后把这条通路上从第一次收到Marker开始到收到这条通路上的Marker为止赢的牌加到记录里”
“收到最后一个Marker就上报记录,退出。”

snapshot