ZooKeeper

坐下坐下,基本操作(ZooKeeper 操作篇)

大憨熊 提交于 2021-02-07 20:30:37
本文作者:HelloGitHub- 老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列, 免费开源、有趣、入门级的 ZooKeeper 教程 ,面向有编程基础的新手。 ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper 曾经是 Hadoop 的一个子项目,但现在是一个顶级独立的开源项目。 ZK 在实际开发工作中经常会用到,算的上是吃饭的家伙了,那可得玩透、用的趁手,要不怎么进阶和升职加薪呢?来和 HelloGitHub 一起学起来吧~ 本系列教程是 从零开始 讲解 ZooKeeper,内容从 最基础的安装使用到背后原理和源码的讲解 ,整个系列希望通过有趣文字、诙谐的气氛中让 ZK 的知识“钻”进你聪明的大脑。本教程是开放式:开源、协作,所以不管你是新手还是老司机,我们都希望你可以 加入到本教程的贡献中,一起让这个教程变得更好 : 新手:参与修改文中的错字、病句、拼写、排版等问题 使用者:参与到内容的讨论和问题解答、帮助其他人的事情 老司机:参与到文章的编写中,让你的名字出现在作者一栏 项目地址:https://github.com/HelloGitHub-Team/HelloZooKeeper 今天我们会讲解下,如何使用 Java 代码客户端去操作

kafka集群server端,config/server.properties基本配置

三世轮回 提交于 2021-02-07 13:52:51
broker.id=3 listeners=PLAINTEXT://10.86.6.56:9092 advertised.listeners=PLAINTEXT://10.160.242.130:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs num.partitions=3 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=3 transaction.state.log.replication.factor=3 transaction.state.log.min.isr=3 min.insync.replicas=2 log.retention.hours=72 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=zk-node1:2181,zk-node2:2181,zk-node3

部署Kafka集群管理工具kafka-manager

孤街醉人 提交于 2021-02-07 12:35:14
一.kafka-manager简介 kafka-manager是目前最受欢迎的kafka集群管理工具,它最早由雅虎开源,功能非常齐全,展示的数据非常丰富。同时用户能够在界面上执行一些简单的集群管理操作。 不过雅虎已经将其更名为CMAK(Cluster Manager for Apache Kafka)。具体支持以下内容: 管理多个集群 轻松检查集群状态(主题,消费者,偏移,代理,副本分发,分区分发) 运行首选副本选举 使用选项生成分区分配以选择要使用的代理 运行分区重新分配(基于生成的分配) 使用可选主题配置创建主题(0.8.1.1具有与0.8.2+不同的配置) 删除主题(仅支持0.8.2+并记住在代理配置中设置delete.topic.enable = true) 主题列表现在指示标记为删除的主题(仅支持0.8.2+) 批量生成多个主题的分区分配,并可选择要使用的代理 批量运行重新分配多个主题的分区 将分区添加到现有主题 更新现有主题的配置 选择性为 broker level and topic level metrics 开放JMX polling 选择性过滤掉在zookeeper中没有ids|owners|offsets|directories的消费者 CMAK管理工具支持的范围 支持 Kafka 0.8以上版本 Java 11+ zookeeper必须是3.5+版本。

clickhouse config.xml

这一生的挚爱 提交于 2021-02-05 00:30:37
1. builtin_dictionaries_reload_interval: 重新加载内置词典的时间间隔(以秒为单位),默认3600。可以在不重新启动服务器的情况下“即时”修改词典。 < builtin_dictionaries_reload_interval > 3600 </ builtin_dictionaries_reload_interval > 2. compression: MergeTree引擎表的数据压缩设置。配置模板如: < compression incl ="clickhouse_compression" > --指定incl < case > < min_part_size > 10000000000 </ min_part_size > --数据部分的最小大小 < min_part_size_ratio > 0.01 </ min_part_size_ratio > --数据部分大小与表大小的比率 < method > zstd </ method > --压缩算法,zstd和lz4 </ case > </ compression > 可以配置多个<case>。如果数据部分与条件集匹配,使用指定的压缩方法;如果数据部分匹配多个条件集,将使用第一个匹配的条件集;如果数据部分不满足任何条件,则使用lz4压缩。 3. default_database

分布式锁和分布式保证幂等性

你离开我真会死。 提交于 2021-02-04 10:46:55
一、幂等性概念 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 更复杂的操作幂等保证是利用唯一交易号(流水号)实现. 我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的。 二、幂等性场景 1、查询操作:查询一次和查询多次,在数据不变的情况下,查询结果是一样的。select是天然的幂等操作; 2、删除操作:删除操作也是幂等的,删除一次和多次删除都是把数据删除。(注意可能返回结果不一样,删除的数据不存在,返回0,删除的数据多条,返回结果多个) ; 3、唯一索引:防止新增脏数据。比如:支付宝的资金账户,支付宝也有用户账户,每个用户只能有一个资金账户,怎么防止给用户创建资金账户多个,那么给资金账户表中的用户ID加唯一索引,所以一个用户新增成功一个资金账户记录。要点:唯一索引或唯一组合索引来防止新增数据存在脏数据(当表存在唯一索引,并发时新增报错时,再查询一次就可以了,数据应该已经存在了,返回结果即可); 4、token机制:防止页面重复提交。 原理上通过session token来实现的( 也可以通过redis来实现

高并发下如何保证接口的幂等性?

不打扰是莪最后的温柔 提交于 2021-02-04 10:42:12
介绍 幂等性就是同一个操作执行多次,产生的效果一样。如http的get请求,数据库的select请求就是幂等的 在分布式系统中,保证接口的幂等性非常重要,如提交订单,扣款等接口都要保证幂等性,不然会造成重复创建订单,重复扣款,那么如何保证接口的幂等性呢? 前端保证幂等性的方法 按钮只能点击一次 用户点击按钮后将按钮置灰,或者显示loading状态 RPG模式 即Post-Redirect-Get,当客户提交表单后,去执行一个客户端的重定向,转到提交成功页面。避免用户按F5刷新导致的重复提交,也能消除按浏览器后退键导致的重复提交问题。目前绝大多数公司都是这样做的,比如淘宝,京东等 后端保证幂等性的方法 使用唯一索引 对业务唯一的字段加上唯一索引,这样当数据重复时,插入数据库会抛异常 状态机幂等 如果业务上需要修改订单状态,例如订单状态有待支付,支付中,支付成功,支付失败。设计时最好只支持状态的单向改变。这样在更新的时候就可以加上条件,多次调用也只会执行一次。例如想把订单状态更新为支持成功,则之前的状态必须为支付中 update table_name set status = 支付成功 where status = 支付中 乐观锁实现幂等 查询数据获得版本号 通过版本号去更新,版本号匹配则更新,版本号不匹配则不更新 -- 假如查询出的version为1 select version

zookeeper源码分析

柔情痞子 提交于 2021-02-04 09:33:48
zookeeper 源码下载stable版本!!! zookeeper 源码编译 ant 官网下载 ivy 官网下载 ivysetting.xml 用阿里云和本地nexus加速下载jar包 <ivysettings> <property name="aliyun" value="http://maven.aliyun.com/nexus/content/groups/public/" override="false"/> <property name="local" value="http://127.0.0.1:8081/repository/maven-public/" override="false"/> <property name="local-maven2-pattern" value="/home/fangbin/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision]" override="false" /> <property name="repo.maven.org" value="https://repo1.maven.org/maven2/" override="false"/> <property name="repo.jboss.org" value="https:/

Zookeeper源码分析

浪子不回头ぞ 提交于 2021-02-04 08:21:44
download: Zookeeper源码分析 Zookeeper作为阿里系与Dubbo完美搭配的注册中心,其江湖地位毋容置疑。本课程以最开始图解Zookeeper框架的架构和组件作为课程总起,进而“分而治之”各个击破Zookeeper框架的各个组件源码,如:序列化,数据模型,持久化,Client和Server架构、选举流程等,最后通过总结快速梳理所得。 适合人群 有代码洁癖的中高级Java工程师 从事分布式系统设计和开发的极客 认可“源码驱动式”学习方式的学生党 技术储备要求 Java基础扎实,对IO/NIO网络通信等知识有一定了解 了解序列化、持久化、多线程 了解zookeeper的一般使用命令 char const const pc = "123abc"; //这个pc指向的地址和内容都不变,极端状况 printf("pc content is %c\n", pc);//用于输出 指向的特定字符 printf("pc string content is %s\n" , pc);//用于输出整个字符串(缘由????) / 9.a指针函数(本质是一个函数,返回值是一个指针) b函数指针(函数名是一个指针)的区别 / / //类型标识符 函数名(参数表) a.int* f(x,y); 指针函数 b.int ( f) (int x); //声明一个函数指针   f=func; /

金灿灿的季节

夙愿已清 提交于 2021-02-04 04:26:14
在这个金灿灿的收获季节,经过 Apache DolphinScheduler PPMC 们的推荐和投票,Apache DolphinScheduler 收获了 5 位新Committer 。他们是:nauu(朱凯)、Rubik-W(温合民)、gabrywu、liwenhe1993、clay4444。 对于成为 Committer ,小伙伴们说道: 朱凯 : 非常荣幸能够成为DolphinSchedule 的 Committer。这既是一份喜悦,也是一份责任。我将以终为始,继续打怪升级,助力 DS 早日毕业。 温合民 : 很荣幸成为DS Committer团队的一员。通过技术调研了解到DS,最终选型决定引入DS,高效的社区支持使项目最终顺利落地。DS是我参与开源的第一个项目,深受益于开源,同时也想为开源做一些力所能及的贡献,希望未来能更多的为DS添砖加瓦,愿DS顺利毕业。 社区介绍: Apache DolphinScheduler 是一个非常多样化的社区,至今贡献者已近100名, 他们分别来自 30 多家不同的公司。 微信群用户3000人。 Apache DolphinScheduler 部分用户案例(排名不分先后) 已经有300多家企业和科研机构在使用DolphinScheduler,来处理各类调度和定时任务,另有 近500家 公司开通了海豚调度的试用: Apache

你都知道那些Kafka副本机制?

爷,独闯天下 提交于 2021-02-02 14:36:22
前言 在日常开发过程中使用kafka来实限流削峰作用但是往往kafka会存放多份副本来防止数据丢失,那你知道他的机制是什么样的吗?本篇文章就带给大家讲解下。 一、Kafka集群 Kafka 使用 Zookeeper 来维护集群成员 (brokers) 的信息。每个 broker 都有一个唯一标识 broker.id ,用于标识自己在集群中的身份,可以在配置文件 server.properties 中进行配置,或者由程序自动生成。下面是 Kafka brokers 集群自动创建的过程: 每一个 broker 启动的时候,它会在 Zookeeper 的 /brokers/ids 路径下创建一个 临时节点 ,并将自己的 broker.id 写入,从而将自身注册到集群; 当有多个 broker 时,所有 broker 会竞争性地在 Zookeeper 上创建 /controller 节点,由于 Zookeeper 上的节点不会重复,所以必然只会有一个 broker 创建成功,此时该 broker 称为 controller broker。它除了具备其他 broker 的功能外, 还负责管理主题分区及其副本的状态 。 当 broker 出现宕机或者主动退出从而导致其持有的 Zookeeper 会话超时时,会触发注册在 Zookeeper 上的 watcher 事件,此时 Kafka