ZooKeeper

dubbo服务提供者、消费者、admin控制台

◇◆丶佛笑我妖孽 提交于 2020-12-28 18:50:27
1、服务接口单独定义一个bundle(jar) 新建一个service maven工程 Order: public class Order implements Serializable { public String getOrderId () { return orderId ; } public void setOrderId ( String orderId) { this . orderId = orderId; } public String getOrderName () { return orderName ; } public void setOrderName ( String orderName) { this . orderName = orderName; } private String orderId ; private String orderName ; } IOrder 服务接口 public interface IOrder { public Order findOrder ( String orderId); } 2、再新建一个maven 工程,结构如下: pom.xml <? xml version ="1.0" encoding ="UTF-8" ?> < project xmlns ="http://maven.apache.org

ClickHouse和他的朋友们(14)存储计算分离方案与实现

不打扰是莪最后的温柔 提交于 2020-12-28 09:36:15
原文出处:https://bohutang.me/2020/09/18/clickhouse-and-friends-compute-storage/ 最后更新: 2020-09-18 如果多个 ClickHouse server 可以挂载同一份数据(分布式存储等),并且每个 server 都可写,这样会有什么好处呢? 首先,我们可以把副本机制交给分布式存储来保障,上层架构变得简单朴素; 其次,clickhouse-server 可以在任意机器上增加、减少,使存储和计算能力得到充分发挥。 本文就来探讨一下 ClickHouse 的存储计算分离方案,实现上并不复杂。 1. 问题 ClickHouse 运行时数据由两部分组成:内存元数据和磁盘数据。 我们先看写流程: w1. 开始写入数据 w2. 生成内存part信息,并维护part metadata列表 w3. 把part数据写到磁盘 再来看读流程: r1. 从part metadata定位需要读取的part r2. 从磁盘读取part数据 r3. 返回给上层数据 这样,如果 server1 写了一条数据,只会更新自己内存的 part metadata,其他 server 是感知不到的,这样也就无法查询到刚写入的数据。 存储计算分离,首先要解决的就是内存状态数据的同步问题。 在 ClickHouse 里,我们需要解决的是内存中

zookeeper详解

独自空忆成欢 提交于 2020-12-27 07:53:42
1.zookeeper是什么? zookeeper是应用于集群或者节点组中的一种分布式协调服务,管理集群中的各个节点,并通过稳健的同步技术维护共享数据。 2.zookeeper基本概念介绍 2.1 zookeeper中的角色 (a)leader:负责进行投票的发起和决议,更新系统状态。 (b)follower:用于接受客户端请求并想客户端返回结果,在选主过程中参与投票。 (c)observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。 2.2 zookeeper中的节点 Znode被分为持久(persistent)节点,顺序(sequential)节点和临时(ephemeral)节点。 (a)持久节点:zookeeper与在创建该特定znode的客户端断开连接后,持久节点仍然存在。 (b)临时节点:客户端活跃时,临时节点就是有效的。当客户端与ZooKeeper集合断开连接时,临时节点会自动删除。 (c)顺序节点: 顺序节点可以是持久的或临时的。 3.zookeeper工作原理 3.1 zookeeper工作原理 zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式

领域驱动设计,让程序员心中有码(五)

怎甘沉沦 提交于 2020-12-26 07:26:46
1 从搬砖谈领域对象   有一个古老的故事,大概是这样的。作者问三个建筑工地上的工人他们在干什么?有一个没精打采的说,我在挖洞!而另一一个人却说,我在盖一座房子。还有一个人说,我在建立一座巨大的城市。不同的思维模式决定了不同的发展,十年过后,第一个工人,还是在挖洞,而第二个则成为了工头。第三个最终却成为了大设计师。   在软件开发领域,往往会使用搬砖这个词来形容我们所开发的每个功能模块,实际上也确实如此,如果把我们需要完成的每个项目,比作一座高楼大厦,那么在项目中所完成的各种模块,也确实是我们在计算机世界中利用砖块设计出来的精美建筑构建。而从领域驱动的角度来说,可以把关系,类比为建筑工程图纸中使用的各种辅助线,也可以把领域驱动中所涉及的各个对象,类比成砖块,这些砖块,大概有两种:一种是实体(Entity),一种是值对象(Value Object),而使用这些对象的工具,则成为服务(Service),完成的各个建筑构建,被成为包或者模块(Module). 2 关联关系   在介绍领域驱动设计的第三篇文章《 领域驱动设计,让程序员心中有码(三) 》中,笔者提到了UML中常用的几种关系,而关联关系是一种最为常见的关系。在软件设计过程中,无所不在的关联,有时候会让软件工程设计变得更加复杂。因此,在设计关联关系时,应该让关联更加易于控制,这意味着需要采取下列三种措施:   1

领域驱动设计,让程序员心中有码(五)

爷,独闯天下 提交于 2020-12-26 06:02:31
题图 From unsplash 本系列是由溪源的《领域驱动设计》读书笔记梳理而成,已经是写到第五篇了,为溪源的坚持点赞。 1 从搬砖谈领域对象   有一个古老的故事,大概是这样的。作者问三个建筑工地上的工人他们在干什么?有一个没精打采的说,我在挖洞!而另一一个人却说,我在盖一座房子。还有一个人说,我在建立一座巨大的城市。不同的思维模式决定了不同的发展,十年过后,第一个工人,还是在挖洞,而第二个则成为了工头。第三个最终却成为了大设计师。   在软件开发领域,往往会使用搬砖这个词来形容我们所开发的每个功能模块,实际上也确实如此,如果把我们需要完成的每个项目,比作一座高楼大厦,那么在项目中所完成的各种模块,也确实是我们在计算机世界中利用砖块设计出来的精美建筑构建。而从领域驱动的角度来说,可以把关系,类比为建筑工程图纸中使用的各种辅助线,也可以把领域驱动中所涉及的各个对象,类比成砖块,这些砖块,大概有两种:一种是实体(Entity),一种是值对象(Value Object),而使用这些对象的工具,则成为服务(Service),完成的各个建筑构建,被成为包或者模块(Module). 2 关联关系   在介绍领域驱动设计的第三篇文章《 领域驱动设计,让程序员心中有码(三) 》中,笔者提到了UML中常用的几种关系,而关联关系是一种最为常见的关系。在软件设计过程中,无所不在的关联

clickhouse小工具&小技巧收集汇总

扶醉桌前 提交于 2020-12-26 00:53:19
0x01. 排查clickhouse问题 找到问题发生的时间点,可以对照grafana中的资源监控来看时间点 找/var/log/clickhouse-server/clickhouse-server[-err].log对应时间点的日志 查看system.query_log/processes具体的一些动作,定位问题 0x02. 琐碎的小技巧和系统表 改名 rename table ods_data.single_point_log_2 to ods_data.single_point_log on cluster cluster_2shard_5_6_2replicas_5_6; 更改或者删除表数据 ALTER TABLE [db.]table [ON CLUSTER cluster] DELETE WHERE filter_expr clickhouse中这些语句是异步执行的,查询这些语句执行情况,可以查看system.mutations表,找到执行语句对应的记录,is_done为1表示执行完成 system.query_log与慢查询查询 query_log系统表记录clickhouse中sql执行的历史,可以查看执行时间,影响的数据行等信息,可以为优化SQL提供一些关键性的信息。当然基于此我们也可以做一些监控,例如下面的慢查询语句 --查询执行超过1000秒的语句

基于windows10的Flume+kafka+storm的集成学习笔记

落花浮王杯 提交于 2020-12-25 20:11:14
这个周末基于windows10单机版学习Flume+kafka+storm的简单集成,目的是加深对应基本概念的认识。这里不具体介绍flume,kafka,storm的原理,只对基本概念只做简单说明。 1.1 准备阶段 操作系统:windows 10家庭版 在官方网站下载下载编译后的软件,本人学习对应的软件版本如下: apache-flume-1.9.0-bin apache-storm-1.0.5 kafka_2.11-1.1.1 zookeeper-3.4.10 1.2 学习目标 (1) 使用Flume基于spooling directory和netcat采集日志数据,作为Kafka的Producer; (2) 使用Kafka的客户端输入日志作为Kafka的Producer; (3) 使用storm消费Kafka的日志,读取的日志数据保存到文件系统。 如下图: 1.3 Flume 1.3.1 基本概念 Flume是一个分布式、可靠、高可用的海量日志采集、聚合、传输的系统。核心是把数据从数据源(source)收集过来,在将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,Flume再删除自己缓存的数据。 基本概念: Source:

Serverless 架构的演进

吃可爱长大的小学妹 提交于 2020-12-25 10:18:10
The Serverless Framework (无服务器架构)允许你自动扩展、按执行付费、将事件驱动的功能部署到任何云。 目前支持 AWS Lambda、Apache OpenWhisk、Microsoft Azure,并且正在扩展以支持其他云提供商。 Serverless 降低了维护应用程序的总成本,能够更快地构建更多逻辑。它是一个 命令 行工具,提供脚手架、工作流自动化和开发部署无服务器架构的最佳实践。它也可以通过插件完全扩展。 传统单体应用架构 十多年前主流的应用架构都是单体应用,部署形式就是一台服务器加一个数据库,在这种架构下,运维人员会小心翼翼地维护这台服务器,以保证服务的可用性。 ▲ 单体架构 单体应用架构面临的问题 随着业务的增长,这种最简单的单体应用架构很快就面临两个问题。首先,这里只有一台服务器,如果这台服务器出现故障,例如硬件损坏,那么整个服务就会不可用;其次,业务量变大之后,一台服务器的资源很快会无法承载所有流量。 解决这两个问题最直接的方法就是在流量入口加一个负载均衡器,使单体应用同时部署到多台服务器上,这样服务器的单点问题就解决了,与此同时,这个单体应用也具备了水平伸缩的能力。 ▲ 单体架构(水平伸缩) 微服务架构 1. 微服务架构演进出通用服务 随着业务的进一步增长,更多的研发人员加入到团队中,共同在单体应用上开发特性

Java中高级核心知识全面解析——Redis(简介、基本数据结构、跳跃表【简介、实现】)上

丶灬走出姿态 提交于 2020-12-24 15:57:59
目录 一、5种基本数据结构 1.Redis简介 1)Redis 的优点 2)Redis 的安装 3) 测试本地 Redis 性能 2.Redis五种基本数据结构 1)字符串 string ①、SDS 与 C 字符串的区别 ②、对字符串的基本操作 ③、设置和获取键值对 ④、批量设置键值对 ⑤、过期和 SET 命令扩展 ⑥、计数 ⑦、返回原值的 GETSET 命令 2)列表list ①、链表的基本操作 ②、list 实现队列 ③、list 实现栈 3)字典 hash ①、渐进式 rehash ②、扩缩容的条件 ③、字典的基本操作 4)集合 set ①、集合 set 的基本使用 5)有序列表 zset ①、有序列表 zset 基础操作 二、跳跃表 1.跳跃表简介 1)为什么使用跳跃表 2)本质是解决查找问题 3)更进一步的跳跃表 2.跳跃表的实现 1)随机层数 2)创建跳跃表 3)插入节点实现 第一部分:声明需要存储的变量 第二部分:搜索当前节点插入位置 第三部分:生成插入节点 第四部分:重排前向指针 第五部分:重排后向指针并返回 4)节点删除实现 5)节点更新实现 6)元素排名的实现 一、5种基本数据结构 1.Redis简介 “ Redis is an open source (BSD licensed), in-memory data structure store, used as

王广帅IM工程运行记录

萝らか妹 提交于 2020-12-24 09:20:35
1)启动consul ./consul agent -dev -http-port=7777 -ui -server -data-dir=./data -client=0.0.0.0 2)启动kafka > bin/zookeeper-server-start.sh config/zookeeper.properties > bin/kafka-server-start.sh config/server.properties & 参考: https://www.orchome.com/6 其中,kafka中继承了zookeeper,修改kafka_2.12-2.7.0/config/zookeeper.properties文件中为dataDir=/Users/jianan/kafka_2.12-2.7.0/data即可 3)启动mongodb 和 redis 4)对my-game-server使用mvn clean 和 mvn install 5)打包client 来源: oschina 链接: https://my.oschina.net/u/4346143/blog/4836338