FolloewerRequestProcessor类
  
  追随者
  
  输入会有不同的形式,客户端请求,提议,提交事务
  
  通过箭头来标示追随者处理的不同路径
  
  本地存储
  
  事务日志和快照
  
  SyncRequestProcessor在处理提议写入这些日志和快照
  
  将提议的事务日志保存在本地磁盘上,而之后事务会顺序追加,服务器会不断滚动日志,创建新文件
  
  写事务日志,如何高效提交?
  
  1 组提交 一次磁盘写入追加多个事务
  
  2补白是指在文件中预分配磁盘存储块,至少减少两次磁盘操作
  
  快照
  
  快照是zookeepere数据树的拷贝副本,每一个服务器会经常以序列化整个数据树的方式
  
  提取快照,这个提取的快照保存在文件中
  
  服务器在进行快照时不需要进行协作,也不需要暂停处理请求。
  
  在快照的过程中还会继续继续处理请求,所以快照完成时,数据树有发生了变化,
  
  我们称这样的快照是模糊的,不能反映准确状态
  
  服务器与会话
  
  会话是zookeeper的一个重要的抽象,保证节点有序,临时node节点,监视点都
  
  与会话密切相关,会话的跟踪对zookeeper来说也很重要
  
  zookeeper服务器的重要任务就是跟踪并维护这些会话,单会话下单个服务器跟踪所有会话
  
  集群形式下,群首跟踪会话和维护,会话跟踪器SessionTracker类 SessionTrackerImpl.追随者
  
  服务器仅仅是简单地把客户端连接的会话信息转发给群首服务器LearnerSessionTracker类
  
  如何保证会话信息的存活?
  
  为了保证会话的存活,服务器需要接收会话的心跳信息,可以是一个新的请求
  
  或者是一个显示的ping消息LearnerHandler.run(),服务器通过更新会话的过期时间
  
  来触发touch会话活跃SessionTrackerImpl.touchSession()
  
  在集群模式下,群首会发送一个ping消息给它的追随者,追随者们返回从罪行一次ping消息
  
  之后的一个session列表。群首服务器每半个tick就会发送一个ping消息给追随者们,如果
  
  一个tick被设置成2秒,那么群首服务器就会每一秒发送一个ping消息
  
  管理会话的过期有两个重要点?
  
  一个为过期队列的数据结构ExpiryQueue类
  
  使用bucket维护会话过期,每一个bucket对应一个某时间范围内过期的会话
  
  群首服务器每次会让一个bucket的会话过期,为了确定哪个bucket的会话过期,有一个线程会检查
  
  expiry queue来找出要过期的bucket,它会取出过期队列中的一批session,让他们过期
  
  如果维护这些bucket
  
  群首服务器把时间分成一些片段,以expirationInterval为单位进行分割,把每个会话分割到
  
  它的过期时间对应的bucket里,通过过期时间确定是属于哪个bucket
  
  如下公式
  
  (expirationTime/expirationInterval+1)*expirationInterval
  
  会话超时时间为10,expirationInterval为2,那么会话分配到bucket为12
  
  (10/2+1)*2的结果
  
  当我们使用touch这个会话时expirationTime会增加,之后我们需要重新计算会话移动到
  
  其他的bucket中
  
  bucket模式管理会话过期的系统开销,有数千个个会话,细粒度检查过期是不合适的,
  
  服务器与监视点
  
  监视点是由读取操作设置的一次性触发器,
  
  zk中存在监视点管理器(watch manager),负责管理当前已被注册的监视点列表,并
  
  负责触发它们。 独立服务器,群首服务器,追随者服务器,观察者服务器都用同样的方法处理监视点
  
  zk中的序列化?
  
  网络传输和磁盘保存的序列化消息和事务,使用了hadoop中的jute
  
  来做序列化org.apache.jute就是jute库

复制代码
<template v-for="(item,index) in routes" v-if="!item.hidden">
<template v-if="item.children">
<el-submenu :index="index+''www.yongshi123.cn" v-if="!item.leaf">
<template slot=www.zhongxinyul2.com"title">
<i class="www".tiaotiaoylzc.com"fa" :class="item.iconCls"></i>
<span class="www".jiahuayulpt.com"title-name" slot="title">{{item.name}}</span>
</template>
<el-menu-item class="www".taoyang2vip.com"title-name" v-for="child in item.children" :index="child.path" :key="child.id" :base-path="it
v-if="!child.hidden">www.feishenbo.cn/ {{child.name}}
</el-menu-item>
</el-submenu>
<el-menu-item v-if="item.www.078886.cn leaf&&item.children.length>0" :index="item.children[0].path"><i
:class="item.iconCls">www.feifanyule.cn</i>{{item.children[0].name}}
</el-menu-item>
</template>
<template v-else>
<el-menu-item :index="item.path">
<i class="fa" :class="item.iconCls"></i>
<template slot="title">
<span class="title-name" slot="title">{{item.name}}</span>
</template>
</el-menu-item>
</template>
</template>
<ul>
<li class="tags-li" v-for="(item,index) in tagsList" :class="{'active': isActive(item.path)}" :key="index">
<span class="tag-dot-inner"></span>
<router-link :to="item.path" class="tags-li-title">
{{item.title}}
</router-link>
<span class="tags-li-icon" @click="closeTags(index)"><i class="el-icon-close"></i></span>
</li>
</ul>
复制代码
  
  jute最主要的定义文件为zookeeper.jute,包含了所有消息的定义和文件记录

zk会话,快照,序列化,本地存储的更多相关文章

  1. Html5 学习系列(六)Html5本地存储和本地数据库

    一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cooki ...

  2. Html5本地存储和本地数据库

    一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cooki ...

  3. HTML5本地存储和本地的数据库

    一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cooki ...

  4. H5本地存储(转)

    H5本地存储  一.本地存储由来的背景         众所周知Html4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是 ...

  5. 利用php的序列化和反序列化来做简单的数据本地存储

    利用php的序列化和反序列化来做简单的数据本地存储 如下程序可以做为一个工具类 /** * 利用php的序列化和反序列化来做简单的数据本地存储 */ class objectdb { private ...

  6. Web存储使用详解(本地存储、会话存储)

    Web存储使用详解(本地存储.会话存储)1,Web存储介绍HTML5的Web存储功能是让网页在用户计算机上保存一些信息.Web存储又分为两种:(1)本地存储,对应 localStorage 对象.用于 ...

  7. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术

    最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...

  8. 利用H5本地存储localStorage、sessionStorage

    最近的业务处理上,要使用cookie缓存储一下数据,公司的cookie还搞出点问题.而用户的浏览器都是利用微信的内置,普遍支持h5的本地存储.于是利用了这个... 现代浏览器普遍开始支持H5本地存储, ...

  9. HTML5 学习总结(三)——本地存储

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

随机推荐

  1. always on 集群

    准备工作 1.  四台已安装windows server 2008 r2 系统的虚拟机,配置如下: CPU : 1核 MEMORY : 2GB DISK : 40GB(未分区) NetAdapter ...

  2. VBA删除 语法

    Option Explicit '清空数据  Private Sub CommandButton1_Click() Dim qknum As Integer  '选择是或者否 来确认删除数据 '中对话 ...

  3. 20155235 《网络攻防》 实验九 Web安全基础

    20155235 <网络攻防> 实验九 Web安全基础 实验内容 SQL注入攻击 XSS攻击 CSRF攻击 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应 ...

  4. 有关C++的数据类型(int,long,short,float,double等等)

    再看C++ prime plus 第六版的时候 对数据类型又一次有些乱了,在看了这篇博客后,重新清晰起来了. 有关C++的数据类型(int,long,short,float,double等等)

  5. mfc 类型间的强制转换

    一. static_cast运算符 用法:static_cast < type-id > ( expression ) 该运算符把expression 转换为type-id类型,但没有运行 ...

  6. [C#源代码]使用SCPI指令对通信端口(RS232/USB/GPIB/LAN)进行仪器编程

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 本软件是基于NI-VISA/VISA32(Virtual Instrument Softwar ...

  7. 高精度乘法--C++

    高精度乘法--C++ 模仿竖式乘法,在第一步计算的时候将进位保留,第一步计算完再处理进位.(见代码注释) 若要处理正负情况,可在数据输入后加以判断,处理比较简单. 小数计算也可参照该方法,不过对齐方式 ...

  8. 浅谈我的UI设计之路

    时光匆匆,进入UI学习已经快两个月了,这段时间过得很充实,因为有压力才有收获. 还记的刚刚学习手绘的时候,对于这个行业只有一个初步的认识,知道自己喜欢,但是真正学习的时候才发现,我要学习的东西还有很多 ...

  9. 腾讯/阿里/百度 BAT人才体系的职位层级、薪酬、晋升标准

    互联网圈有这么一句话:百度的技术,阿里的运营,腾讯的产品.那么代表互联网三座大山的BAT,内部人才体系有什么区别呢?今天老李就带领大家看一看~ ★ 腾讯 ★   1. 职级 腾讯职级体系分6级,最低1 ...

  10. 详细聊聊k8s deployment的滚动更新(一)

    一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 二.环境准备 组件 版本 OS Ubuntu 18.04.1 LTS docker 18.06.0-ce 三.准备镜像 首先准备 ...