节点服务器

zookeeper系列问题总结

余生长醉 提交于 2020-04-08 12:21:37
这段时间来,也在和公司里的一些同学交流使用zk的心得,整理了一些常见的zookeeper问题。这个页面的目标是解答一些zk常见的使用问题,同时也让大家明确zk不能干什么。页面会一直更新。 1. 客户端对ServerList的轮询机制是什么 随机,客户端在初始化( new ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) )的过程中,将所有Server保存在一个List中,然后随机打散,形成一个环。之后从0号位开始一个一个使用。 两个注意点:1. Server地址能够重复配置,这样能够弥补客户端无法设置Server权重的缺陷,但是也会加大风险。(比如: 192.168.1.1:2181,192.168.1.1:2181,192.168.1.2:2181). 2. 如果客户端在进行Server切换过程中耗时过长,那么将会收到SESSION_EXPIRED. 这也是上面第1点中的加大风险之处。更多关于客户端地址列表相关的,请查看文章《 ZooKeeper客户端地址列表的随机原理 》 2 .客户端如何正确处理CONNECTIONLOSS(连接断开) 和 SESSIONEXPIRED(Session 过期)两类连接异常 在ZooKeeper中,服务器和客户端之间维持的是一个长连接,在 SESSION

Zookeeper-deploy

心已入冬 提交于 2020-04-08 03:21:35
一、概述 1.1、简介 Zookeeper是一个开源的,分布式的,为分布式应用提供协调服务的Apache项目 1.2、工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化Zookeeper就将负责通知已经在Zookeeper.上注册的那些观察者做出相应的反应。 1.3、特点 1) Zookeeper: 一个领导者(Leader) ,多个跟随者(Follower) 组成的集群。 2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。 3)全局数据一致:每个Server保存一份相同的数据副本,Client无论 连接到哪个Server,数据都是一致的。 4)更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行。 5)数据更新原子性,一次数据更新要么成功,要么失败。 6)实时性,在一定时间范围内,Client能读到最新数据。 1.4、数据结构 ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。 znode一共有4种类型:持久的(persistent)、临时的 (ephemeral)、持久有序的

HTML5性能优化

丶灬走出姿态 提交于 2020-04-06 05:19:51
HTML5性能优化 在看完这两章内容之后,我意犹未尽,于是乎从网上搜索关键字“Java Web高性能”,在IBM社区找到两篇不错的文章,而让人更意外的是我发现那两篇文章的内容跟《高性能HTML5》前两章高度相似,不知道是谁抄袭谁的,大家可以鉴别下真伪,下面附上地址。 http://dl2.iteye.com/upload/attachment/0097/9373/b0e69540-e703-3530-81bb-c93de7b850a6.pdf http://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf1/ http://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf2/ 前面是读后感,下面是我针对最近几天学习到的提高Web性能进行了篇幅不小的总结,一来为新人提供帮助,二来自己做一下笔记,加深记忆。 性能之前端篇 --减少重绘 在HTML页面完成展现之后,动态改变页面元素或调整CSS样式都会引起浏览器重绘,性能的损耗直接取决于动态改变的范围:如果只是改变一个元素的颜色之类的信息则只会重绘该元素;而如果是增删节点或调整节点位置则会引起其兄弟节点也一并重绘。 减少重绘并不是说不要重绘,而是要注意重绘范围:①改动的DOM元素越深则影响越小,所以尽量深入节点改动

网络协议和管理

强颜欢笑 提交于 2020-04-06 00:37:27
1、简述osi七层模型和TCP/IP五层模型; 物理层 在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。 物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。 物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。 数据链路层 数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路。该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。 在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。 该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。 MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制; LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。

一致性hash算法释义

时光总嘲笑我的痴心妄想 提交于 2020-04-05 23:17:08
一致性Hash算法背景   一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。   但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性hash时采用如下步骤: 首先求出memcached服务器(节点)的哈希值,并将其配置到0~2 32 的圆(continuum)上。 然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过2 32 仍然找不到服务器,就会保存到第一台memcached服务器上。   从上图的状态中添加一台memcached服务器。余数分布式算法由于保存键的服务器会发生巨大变化而影响缓存的命中率,但Consistent Hashing中,只有在园(continuum)上增加服务器的地点逆时针方向的第一台服务器上的键会受到影响,如下图所示: 一致性Hash性质   考虑到分布式系统每个节点都有可能失效

redis 常用命令总结

雨燕双飞 提交于 2020-04-05 19:23:15
转载—— 第一部分 redis的常用指令 一、针对key的操作 1.1 del key [key .. ] , 删除指定的一个或者多个key; 1.2 dump key , 序列化给定的key 1.3 restore key ttl serialized-value , 反序列化到key 1.4 exists key , 判断某一key是否存在 1.5 expire key seconds , 设置key的过期时间 ① set命令可以覆盖过期时间;不改变key的操作不会影响key的生存时间 ② rename也不会改变key的过期时间 ③ persist命令可以删除key的过期时间,即永久 ④ ttl可以查看redis中key的过期时间 1.6 expireat key timestamp , 设置key的生存时间 1.7 keys pattern , 查找所有符合给定模式pattern的key ① *, ?, [m,n] 1.8 move key db , 将当前数据库中的key移动数据库 db中。使用select db可以切换数据库 1.9 persist key , 移除给定 key 的生存时间 1.10 pexpire,pexpireat , 设置key的过期、生存时间,单位毫秒 1.11 ttl,pttl , key的剩余过期时间,单位秒,单位是毫秒 1.12

负载均衡,你该如何配置?

自闭症网瘾萝莉.ら 提交于 2020-04-05 17:47:12
什么是负载均衡 在计算机的世界,这就是大家耳熟能详的负载均衡( load balancing),所谓负载均衡,就是说如果一组计算机节点(或者一组进程)提供相同的(同质的)服务,那么对服务的请求就应该均匀的分摊到这些节点上。 这里的服务是广义的,可以是简单的计算,也可能是数据的读取或者存储。负载均衡也不是新事物,这种思想在多核 CPU时代就有了,只不过在分布式系统中,负载均衡更是无处不在,这是分布式系统的天然特性决定的,分布式就是利用大量计算机节点完成单个计算机无法完成的计算、存储服务,既然有大量计算机节点,那么均衡的调度就非常重要。 负载均衡的意义在于,让所有节点以最小的代价、最好的状态对外提供服务,这样系统吞吐量最大,性能更高,对于用户而言请求的时间也更小。而且,负载均衡增强了系统的可靠性,最大化降低了单个节点过载、甚至 crash的概率。 不难想象,如果一个系统绝大部分请求都落在同一个节点上,那么这些请求响应时间都很慢,而且万一节点降级或者崩溃,那么所有请求又会转移到下一个节点,造成雪崩。 如何实现负载均衡 回答可以如下: 在nginx里面配置一个upstream,然后把相关的服务器ip都配置进去。然后采用轮询的方案,然后在nginx里面的配置项里,proxy-pass指向这个upstream,这样就能实现负载均衡。 nginx的负载均衡有4种模式: 1)、轮询(默认)

zookeeper(单机、伪集群、集群)部署

柔情痞子 提交于 2020-04-05 00:35:07
ZooKeeper是一个分布式的、开源的分布式应用程序协调服务,可以在分布 式环境中实现应用配置管理、统一命名服务、状态同步服务等功能。 ZooKeeper是一种为分布式应用所设计的高可用、高性能的开源协调服务,它提供了一项基本服务:分布式锁 服务。由于ZooKeeper开源的特性,在其分布式锁实现的基础上,又被摸索出了其它的功用,譬如:配置维 护、组服务、分布式消息队列等等。 ZooKeeper维护了一个类似文件系统的数据结构,其内部每个子目录都被 称作znode(目录节点),与文件系统一样,我们可以自由的增删改查znode。ZooKeeper集群适合搭建在奇数 台机器上。只要集群中半数以上主机处于存活,那么服务就是可用的。 ZooKeeper在配置文件中并没有指定 master和slave,但是,ZooKeeper在工作时,只有一个节点为leader,其余节点为follower,leader是通过内部 的选举机制临时产生的。 ZooKeeper特点 1、顺序一致性:以zxid来保证事务的顺序性。 2、原子性:以zab保证原子操作,要么成功,要么失败。 3、单一视图:客户获取到的数据始终是一致的。 4、可靠:以版本实现"写入校验",保证了数据写入的正确性。 ZooKeeper有三种安装方式:单机模式 & 伪集群模式 & 集群模式 单机模式: ZooKeeper以单实例的形式运

HTTP缓存和CDN缓存

僤鯓⒐⒋嵵緔 提交于 2020-04-02 07:56:24
一 http缓存 1.1缓存的分类: http中具有缓存功能的是:1、浏览器缓存、 2、缓存代理服务器。 1.2 什么是缓存: http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而 不是从原始服务器中提取这个文档。 1.3 缓存的好处有: 1. 减少了冗余的数据传输,节省了网费。 2. 减少了服务器的负担, 大大提高了网站的性能 3. 加快了客户端加载网页的速度。优化用户体验 1.4 缓存示意图: 第一次请求: 第一次请求,无论是静态文件还是其他文件,都是从服务器那里读取的。因此没有缓存之说。等第一次请求完,浏览器就有缓存了,然后整个的加载过程就完全不一样了。看下图: 浏览器再次请求  流程图解释: 浏览器再次请求,情况就不一样了。首先会读取缓存,然后判断缓存是否过期,如果不过期,就直接读取缓存。 否则,判断浏览器返回的头部信息是否存在Etag,如果存在,浏览器会像服务器发送带有If-None-Match的请求头,来和服务器返回的Etag做对比, 如果if-None-Match和Etag相等。说明缓存没有更新,服务器返回304,浏览器继续从缓存读取相应的内容。如果if-None-Match和Etag不等,则服务器返回200,浏览器重新需 要从服务器获取内容。   如果服务器的返回信息里面没有Etag,则判断浏览器的返回信息里是否有Last

http缓存与cdn相关技术

廉价感情. 提交于 2020-03-31 16:07:33
一 http缓存 1.1缓存的分类: http中具有缓存功能的是:1、浏览器缓存、 2、缓存代理服务器。 1.2 什么是缓存: http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而 不是从原始服务器中提取这个文档。 1.3 缓存的好处有: 1. 减少了冗余的数据传输,节省了网费。 2. 减少了服务器的负担, 大大提高了网站的性能 3. 加快了客户端加载网页的速度。优化用户体验 1.4 缓存示意图: 第一次请求: 第一次请求,无论是静态文件还是其他文件,都是从服务器那里读取的。因此没有缓存之说。等第一次请求完,浏览器就有缓存了,然后整个的加载过程就完全不一样了。看下图: 浏览器再次请求  流程图解释: 浏览器再次请求,情况就不一样了。首先会读取缓存,然后判断缓存是否过期,如果不过期,就直接读取缓存。 否则,判断浏览器返回的头部信息是否存在Etag,如果存在,浏览器会像服务器发送带有If-None-Match的请求头,来和服务器返回的Etag做对比, 如果if-None-Match和Etag相等。说明缓存没有更新,服务器返回304,浏览器继续从缓存读取相应的内容。如果if-None-Match和Etag不等,则服务器返回200,浏览器重新需 要从服务器获取内容。   如果服务器的返回信息里面没有Etag,则判断浏览器的返回信息里是否有Last