Browsed by
标签:Zookeeper

连接zookeeper时报”Path cannot be null”错误的解决方法

连接zookeeper时报”Path cannot be null”错误的解决方法

閱讀本文約花費: 3 (分鐘)   上周将公司生产环境中zookeeper集群中的一台zookeeper重启后,所有的连接此zookeeper的客户端都报如下错误: [ctvpay] 2018-03-23 10:57:08.569 — ERROR [main-EventThread] CuratorFrameworkImpl.java:529 – Watcherexceptionjava.lang.IllegalArgumentException: Path cannot be null        at org.apache.zookeeper.common.PathUtils.validatePath(PathUtils.java:45) ~[zookeeper-3.4.6.jar!/:3.4.6-1569965]        at org.apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.java:1572) ~[zookeeper-3.4.6.jar!/:3.4.6-1569965]        at com.netflix.curator.framework…

Read More Read More

分布式服务框架 Zookeeper

分布式服务框架 Zookeeper

閱讀本文約花費: 1 (分鐘) ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 1- 分布式服务框架 Zookeeper入门学习 https://coolshell.me/articles/zookeeper-intro-01.html 2- 分布式服务框架Zookeeper介绍、原理及应用 https://coolshell.me/articles/zookeeper-intro-02.html 3- ZooKeeper实际应用案例-开发实战 https://coolshell.me/articles/zookeeper-intro-03.html 4- Zookeeper典型应用场景介绍 https://coolshell.me/articles/zookeeper-intro-04.html 5- 分布式服务协调框架ZooKeeper https://coolshell.me/articles/zookeeper-intro-05.html 6- Zookeeper到底是干嘛的 https://coolshell.me/articles/zookeeper-intr…

Read More Read More

Zookeeper到底是干嘛的

Zookeeper到底是干嘛的

閱讀本文約花費: 17 (分鐘) Zookeeper主要哪些服务:配置管理,名字服务,提供分布式同步以及集群管理,更多介绍请看下文. 在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. 这大概描述了Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理。那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookeeper有什么优势?接下来我会挨个介绍这些到底是什么,以及有哪些开源系统中使用了。 配置管理 在我们的应用中除了代码外,还有一些就是各种配置。比如数据库连接等。一般我们都是使用配置文件的方式,在代码中引入这些配置文件。但是当我们只有一种配置,只有一台服务器,并且不经常修改的时候,使用配置文件是一个很好的做法,但是如果我们配置非常多,有很多服务器都需要这个配置,而且还可能是动态的话使用配置文件就不是个好主意了。这个时候往往需要寻找一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感…

Read More Read More

分布式服务协调框架ZooKeeper

分布式服务协调框架ZooKeeper

閱讀本文約花費: 13 (分鐘) 文章重点介绍了ZooKeeper数据模型,ZooKeeper典型的应用场景以及Zookeeper service网络结构,希望对大家有帮助。 。 ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务框架,它可以实现同步服务,配置维护、命名服务、分布式锁等分布式基础服务。 ZooKeeper数据模型 Zookeeper提供基于类似于文件系统的目录节点树方式的数据存储,但是Zookeeper并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。 数据模型 Zookeeper会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如图: 与Linux文件系统不同的是,Zookeeper的数据节点称为znode,znode是Zookeeper中数据的最小单元,每个znode都可以保存数据,同时还可以挂载子节点,因此构成了一个层次化的命名空间,称为树。 znode结构 每个znode节点既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。每个znode由3部分组成: stat:状态信息, 描述该Znode的版本, 权限等信息 data:与该znode关联的数据 children:该znode下的子…

Read More Read More

Zookeeper典型应用场景介绍

Zookeeper典型应用场景介绍

閱讀本文約花費: 13 (分鐘) 本文主要通过几个例子来具体的说明Zookeeper在特定场景下的使用方式 ,希望对您的学习有所帮助。 1.前言 之前自己写了一些关于Zookeeper的基础知识,Zookeeper作为一种协调分布式应用高性能的调度服务,实际的应用场景也非常的广泛,这里主要通过几个例子来具体的说明Zookeeper在特定场景下的使用方式(下面的这些功能估计consul和etcd也能实现,以后学到了再说吧)。 2.具体应用 2.1.一致性配置管理 我们在开发的时候,有时候需要获取一些公共的配置,比如数据库连接信息等,并且偶然可能需要更新配置。如果我们的服务器有N多台的话,那修改起来会特别的麻烦,并且还需要重新启动。这里Zookeeper就可以很方便的实现类似的功能。 2.1.1.思路 将公共的配置存放在Zookeeper的节点中 应用程序可以连接到Zookeeper中并对Zookeeper中配置节点进行读取或者修改(对于写操作可以进行权限验证设置),下面是具体的流程图: 2.1.2.事例 数据库配置信息一致性的维护 配置类: public class CommonConfig implements Serializable{// 数据库连接配置private String dbUrl;private String username;private String pas…

Read More Read More

ZooKeeper实际应用案例-开发实战

ZooKeeper实际应用案例-开发实战

閱讀本文約花費: 12 (分鐘) 本文主要介绍通过实际工作中的一个例子,讲解zookeeper是如何帮我解决分布式问题,以此引导大家发现自己系统中可以应用zookeeper的场景。 项目背景介绍 首先给大家介绍一下本文描述项目的情况。这是一个检索网站,它让你能在几千万份复杂文档数据中检索出你所需要的文档数据。为了加快检索速度,项目的数据分布在100台机器的内存里,我们称之为数据服务器。除了数据,这100台机器上均部署着检索程序。这些server之外,还有数台给前端提供接口的搜索server,这些机器属一个集群,我们称之为检索服务器。当搜索请求过来时,他们负责把搜索请求转发到那100台机器,待所有机器返回结果后进行合并,最终返回给前端页面。结构如下图: 面临问题 网站上线之初,由于数据只有几百万,所以数据服务器只有10多台。是一个规模比较小的分布式系统,当时没有做分布式系统的协调,也能正常工作,偶尔出问题,马上解决。但是到了近期,机器增长到100台,网站几乎每天都会出现问题,导致整个分布式系统挂掉。问题原因如下: 数据服务器之前没有做分布式协调。对于检索服务器来说,并不知道哪些数据服务器还存活,所以检索服务器每次检索,都会等待100台机器返回结果。但假如100台数据服务中某一台死掉了,检索服务器也会长时间等待他的返回。这导致了检索服务器积累了大量的请求,最终被压垮。当所有的检索服务器…

Read More Read More

分布式服务框架Zookeeper介绍、原理及应用

分布式服务框架Zookeeper介绍、原理及应用

閱讀本文約花費: 18 (分鐘) 文章主要介绍了Zookeeper基础 、Zookeeper设计目的、Zookeeper工作原理以及相关的应用。 Zookeeper简介 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。 Zookeeper基本概念 zk角色 Zookeeper中的角色主要有以下三类,如下表所示:zookeeper角色 zk service网络结构 Zookeeper的工作集群可以简单分成两类,一个是Leader,唯一一个,其余的都是follower,如何确定Leader是通过内部选举确定的。 Leader和各个follower是互相通信的,对于zk系统的数据都是保存在内存里面的,同样也会备份一份在磁盘上。 对于每个zk节点而言,可以看做每个zk节点的命名空间是一样的,也就是有同样的数据。(可查看下面的树结构) 如果Leader挂了,zk集群会重新选举,在毫秒级别就会重新选举出一个Leaer。 集群中除非有一半以上的zk节点挂了,zk service才不可用。 zk命名空间结构 Zookeeper的命名空间就是zk应用的文件系统,它和linux的文件系统很像,也是树状,这样就可以确定每个路径都是唯一的,对于命名空…

Read More Read More

分布式服务框架 Zookeeper入门学习

分布式服务框架 Zookeeper入门学习

閱讀本文約花費: 17 (分鐘) 本文主要讲解了ZooKeeper是什么,它的角色及架构,ZooKeeper数据模型Znode,ZooKeeper服务中操作,Zookeeper下载安装与配置和命令相关。 ZooKeeper介绍 ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,是Google的Chubby一个开源的实现。 提供功能: 命名服务 配置管理 集群管理 分布式锁 队列管理 特性: 顺序一致性:从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到ZooKeeper中。 原子性:所有事务请求的结果在集群中所有机器上的应用情况是一致的,也就是说要么整个集群所有集群都成功应用了某一个事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。 单一视图:无论客户端连接的是哪个ZooKeeper服务器,其看到的服务端数据模型都是一致的。 可靠性:一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下来,除非有另一个事务又对其进行了变更。 实时性:通常人们看到实时性的第一反应是,一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更后的最新数据状态。这里需要注意的是,ZooKeeper仅仅保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的…

Read More Read More

面试官邪魅一笑:MySQL千万级别大表,你要如何优化?

面试官邪魅一笑:MySQL千万级别大表,你要如何优化?

閱讀本文約花費: 23 (分鐘)当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量: 字段 尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED VARCHAR的长度只分配真正需要的空间 使用枚举或整数代替字符串类型 尽量使用TIMESTAMP而非DATETIME, 单表不要有太多字段,建议在20以内 避免使用NULL字段,很难查询优化且占用额外索引空间 用整型来存IP 索引 索引并不是越多越好,要根据查询有针对性的创建,考虑在WHERE和ORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描 应尽量避免在WHERE子句中对字段进行NULL值判断,否则将导致引擎放弃使用索引而进行全表扫描 值分布很稀少的字段不适合建索引,例如”性别”这种只有两三个值的字段 字符字段只建前缀索引 字符字段最好不要做主键 不用外键,由程序保证约束 尽量不用UNIQUE,由程序保证约…

Read More Read More