《分布式系统原理与泛型》第6.4.2节 更新传播 读后笔记
分布式系统中数据会有复制,导致一份数据会在多处有复件,那么针对这一数据的更新操作应该传播给所有的复件。这一过程即为更新传播。对于comet来说就是服务器上数据的更新传播到用户浏览器上。
更新传播首先面临的设计问题是传播什么样(what)的更新信息,有三种方式:
1. 只传播更新的通知:无效化协议(invalidation protocol)即为此种方式,它传播一个通知,告知有更新操作发生(可以指定那些数据更新了),这样就知道某处的复件过期失效。当有客户对此无效的复件访问时,访问必须等待,直到该复件的数据更新后才可以。这种方式的优点是只占用少量的网络带宽,当更新频繁时(读/写比很小)这种协议比较合适。因为频繁的写操作会很容易出现两次数据更新操作之间没有读操作。那么第一次数据更新其实没有意义,因为后一次更新会覆盖前一次更新,但是更新的数据却连着传输了两遍。而采用这种方式只发送通知告知复件不再有效,数据的传输只在用户请求后才进行,这样就减少了不必要的数据传输。
2.传播更新数据:在副本之间拷贝(传送)数据。在读/写比高时,这种方式比较有利。除了直接传播修改的数据,还有其它手段,如传播修改日志(以节约带宽),或者将多个修改压缩到一个消息中组合传送。
3.传播更新操作:将要执行的操作传播给副本,又叫主动复制(active replication),它假设每个副本有一个进程代表,进程通过执行操作主动更新数据。
comet传播的数据采用第一种方式少见,应该没有,因为Web应用的读/写比还是比较大的。comet应该是第二种方式。第三种方式不是太理解,似乎可以服务器传送一个Javascript函数,客户端执行之??
然后要解决的设计问题是如何(how)传播更新信息,有两种基本方法以及它们的混合方法。这是comet研究比较多的地方。
更新传播的两种基本方法是:
1.基于推的方法(push-based approach):又称基于服务器的协议(server-based protocol),不需要其它副本请求更新,更新就被传播到副本那里了。这种方式适用于多个副本要保持较高的一致性。适用于读/写比较高的情况,表现为两次写操作之间夹有很多的读操作,显然基于推的方式效率较高,而且数据更新后能马上在副本上保持一致。基于长连接的Comet即为此种方法。这种方法的缺点是跟踪大量的副本,例如comet中服务器要跟踪数以万计的客户,在有数据更新时要遍历这些客户并传播更新。
2.基于拉的方法(pull-based approach):又称为基于客户的协议(client-based protocol),服务器或客户主动请求其它服务器发送它持有的复件的更新。该协议场用于客户高速缓存,客户端轮询服务器以查看是否有必要更新,如Web缓存的使用。适用于读/写比较低时,此外也在缓存的数据很少共享时拉的方法也很高效。
更新传播的混合方式─基于租用(lease)的更新传播
租用代表服务器的承诺:在指定时间内服务器会把更新主动推给客户。当租用到期时,客户有两种应对方法:
1.客户开始轮询服务器以实现更新,并在必要时拉出被修改的数据;
2.客户请求一个新的租用以实现更新的推入。
我想第2种方式可能就是
关于server push,the google way一文中分析的google的comet方式。
租用在1989年由Gray和Cherition提出,最早是为基于推和拉的两种方式之间提供一种方便的动态转化机制。
2000年Duvvuri提出一种更灵活租用,它允许租用期限根据不同的租用标准动态调整,分成三种类型的租用:
1. 假设数据长时间未被修改,在将来一段时间被修改的可能性也不大,那么可以基于数据的“年龄”租用:长期保持不变的数据将拥有较长的租用期,这样可以减少更新消息的数量;但是对于comet来说维持一个HTTP长连接代价较高,为一个长久不动弹的客户维持一个HTTP长连接似乎有点划不来。
2.给那些请求频率高的活跃客户(刷屏狂人?)一个长期的租用,给那些请求频率低的客户一个短期的租用。这种方式使得服务器基本只跟踪受欢迎的那些客户,很适合comet的说;
3.基于服务器的状态空间开销:当服务器的负载随访问量加大开始不堪重负时,它就降低分配给客户的新租用的使用期限,这就使得服务器需要跟踪的客户减少(因为租用到期快,服务器需要保持的状态减少),也很适合comet。
comet如果采用基于租用的更新传播,那么它即是 client pull 又是 server push的。这种灵活的策略用到comet服务器上我想应该可以提高服务器的comet能力。
分享到:
相关推荐
2. **实时性**:Meteor 的核心特性是实时更新,即“改变即传播”(Change Propagation)。当数据库中的数据发生变化时,所有连接到应用的客户端都会立即接收到这些变化,无需刷新页面,这使得聊天室这类应用体验更加...
每晚更新C ++ CUDA反向传播,完全密集和CNN层,自动编码器和经典GAN Tensorflow 2.5.0每晚从源代码构建,带有许多支持软件包,包括PyTorch每晚软件包。 编译时支持Intel Comet Lake处理器上的本机行军编译时具有对...
- **描述**:与Win32.Comet Spyware有关。 - **危害**:可能会显示侵扰性广告,并收集用户的个人数据。 以上列举的每个进程都可能对用户的计算机系统构成威胁。为了保护自己的设备免受这些不安全进程的影响,建议...
2. “millions”指“数百万人”,“Haley’s comet”即哈雷彗星,句子展示了时间跨度的概念,以及人们对天文现象的关注。 3. “Anthropologists”是“人类学家”的意思,此句提到了人类普遍的面部表情与情感的联系。...
21. Ajax和Comet(Chapter 21: Ajax and Comet):介绍了使用JavaScript和AJAX技术进行富Web应用开发的方法。 22. 高级技术(Chapter 22: Advanced Techniques):涵盖了更高级的JavaScript编程技术,包括模块化...
- **哈雷彗星(Halley's Comet)**:“Of the millions who saw Haley’s comet in 1986, how many people will live long enough to see it return in the twenty-first century.” 通过这个句子可以学习到...
任何未经授权的复制、传播或翻译行为都是被禁止的。用户在使用过程中需严格遵守许可证协议中的条款。 #### 目的地控制声明 本出版物中包含的所有技术数据均受到美国出口管制法律的约束。向非美国公民披露这些数据...
- **知识点**:此句涉及天文知识,哈雷彗星(Comet Halley)的周期大约为76年,这意味着1986年看到它的观众,大多数无法在它下次回归的21世纪再次目睹。 #### 3. 情绪的普遍表达 - Universally reflected in facial...
- **语境理解**:这句话明确了诽谤和流言的主要区别在于传播形式,前者是通过印刷媒体,后者则是口头传播,反映了法律领域中对这两种行为的不同定义。 #### 10. **人体解剖学中的膝关节** 句子:“The knee is ...
事先书面许可或根据许可协议明确允许的情况下,不得复制、传播或翻译任何部分的软件和文档。 4. **内部使用**:许可证协议允许用户仅出于内部使用目的复制文档,并且每个副本需包含所有版权、商标、服务标志和专有...
- **应用场景:** 法律术语解释、新闻传播学中区分不同类型的诽谤时。 **10. The knee is the joint where the thigh bone meets the large bone of the lower leg.** - **知识点:** - **Joint:** 关节 - **...
2. **哈雷彗星的周期性出现**:“Of the millions who saw Haley's comet in 1986, how many people will live long enough to see it return in the twenty-first century.”(在1986年看到哈雷彗星的数百万人中,...
2. **哈雷彗星观测记录**:Of the millions who saw Haley's comet in 1986, how many people will live long enough to see it return in the twenty-first century? - **知识点**: - **天文学**:掌握哈雷彗星...
1. **传递因子法**(Transfer Factor Method): 根据电路元件的特性,计算可控制性和可观察性的传播值。例如,TMEAS方法和CAMELOT方法都是基于传递因子法的典型代表。 2. **成本分析法**(Cost Analysis Method): ...
混频是射频系统中的基本操作,用于将输入的射频信号与本地振荡器产生的信号相乘,从而得到新的频率。这个过程可以实现频率的上转换或下转换,使得信号能够适应不同的传输频段。混频器的选择性和非线性特性是设计混频...