- 博客(28)
- 收藏
- 关注
原创 Kafka API
Kafka API 相关代码在:Kafka学习代码:https://gitee.com/zyp1998/kafka-learning-code 4.1 Producer API 4.1.1消息发送流程 Kafka的Producer发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程——main线程和Sender线程,以及一个线程共享变量——RecordAccumulator。main线程将消息发送给RecordAccumulator,Sender线程不断从RecordAccumulator中
2020-11-14 17:07:30
292
原创 Kafka架构深入
Kafka架构深入 3.1Kafka工作流程及文件存储机制 Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。 topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费
2020-11-14 17:06:56
397
原创 Kafka概述
Kafka概述 1.1定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。 1.2 消息队列 1.2.1传统消息队列的应用场景 使用消息队列的好处 1)解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 2)可恢复性 系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。 3)缓冲 有助于控制和优化数据流经过系统的速度,
2020-11-14 17:03:11
259
原创 Kafka命令行操作
Kafka集群的启动: 先启动zookeeper集群: 注:可以编写zookeeper集群启动脚本 /opt/zookeeper-1/bin/zkServer.sh start /opt/zookeeper-2/bin/zkServer.sh start /opt/zookeeper-3/bin/zkServer.sh start 使用如下命令判断是否启动成功: /opt/zookeeper-1/bin/zkServer.sh status /opt/zookeeper-2/bin/zkServer.sh
2020-11-14 17:01:05
208
原创 docker-compose测试搭建redis集群
docker-compose测试搭建redis集群 #此处使用了自定义的网络,需要新建一个docker网络myredis并指定网关(192.165.0.1)和子网(192.165.0.0/16) docker network create --driver=bridge --gateway=192.165.0.1 --subnet=192.165.0.0/16 myredis #删除此文件夹 rm -rf /mycontainerdata/ #创建6个redis配置 for port in $(seq 1
2020-11-14 16:56:43
441
原创 docker搭建redis集群
docker搭建redis集群: 1、创建一个docker网络: docker network create --driver=bridge --gateway=192.165.0.1 --subnet=192.165.0.0/16 myredis(网络名) 2、使用docker创建一个3主3从的redis集群 #删除此文件夹 rm -rf /mycontainerdata/ #创建6个redis配置文件 for port in $(seq 1 6); \ do \ mkdir -p /mycontain
2020-11-14 16:56:11
187
原创 docker网络
docker网络(docker network) 新建一个docker网络: docker network create --driver=bridge --gateway=192.165.0.1 --subnet=192.165.0.0/16 myredis(网络名) 参数说明: –driver:驱动程序来管理网络(桥接模式) –gateway:主子网的IPv4或IPv6网关 –subnet:代表网段的CIDR格式的子网 查看网络信息: docker network inspect myredis 把
2020-11-14 16:55:41
190
原创 docker本地镜像发布到阿里云
本地镜像发布到阿里云 1、本地镜像发布到阿里云流程 阿里云ECS Docker生态如下图所示: 镜像的生成方法 通过DockerFile构建 从容器创建一个新的镜像: docker commit [OPTIONS] 容器ID [IMAGE:[TAG]] 参数说明: -a:提交的镜像作者; -m:提交时的说明文字 将本地镜像推送到阿里云 登录阿里云创建自己的镜像仓库: 创建成功后页面会有详细的操作: 将镜像推送到Registry #连接到阿里云的仓库 sudo docker login --us
2020-11-14 16:54:21
176
原创 docker常用安装
Docker常用安装: 总体步骤: 搜索镜像 拉取镜像 查看镜像 启动镜像 停止容器 移除容器 安装redis: 从docker hub(阿里云加速器)拉取redis镜像到本地标签为5.0: 使用redis5.0镜像创建容器(也叫运行镜像): 使用镜像: #主机的这个文件(/zyp/myredis/conf/redis.conf)被载到docker中redis的配置文件,(/zyp/myredis/data)被挂载到redis的持久化文件 docker run -p 6380:6379 -v /zyp/
2020-11-14 16:53:18
138
原创 dockerFile解析
DockerFile解析 概述 Dockerfile是用来构建Docker镜像的文件,是由一系列命令和参数构成的脚本。 构建三步骤: 编写Dockerfile文件 docker build docker run 文件是什么样的? 以CentOS为例: Docker官网: DockerFile构建过程解析: 1、Dockerfile内容基础知识: 每条保留字指令都必须为大写字母且后面需要跟随至少一个参数 指令按照从上到下,顺序执行 #表示注解 每条指令都会创建一个新的镜像层,并对镜像进行提交 2、D
2020-11-14 16:46:34
337
原创 docker容器数据卷
5、Docker容器数据卷 1、概念: Docker的理念: 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。 为了能保存数据在docker中我们使用卷。 docker容器数据卷有点类似我们Redis里面的rdb和aof文件 2、用途 卷就是目录或文件,存在于一个或多个容器中,由docke
2020-10-25 16:43:06
345
原创 docker镜像
Docker镜像 1、镜像的概念 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件。 1、UnionFS(联合文件系统) Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesys
2020-10-25 16:32:59
208
原创 docker常用命令
Docker常用命令 1、帮助命令 docker version:查看docker的版本信息 docker info:显示系统相关信息 docker --help:显示docker命令的详细用法 2、镜像命令 docker images [options]:列出本地主机上的镜像 options(参数说明): -a:列出本地所有的镜像(含中间映像层) -q:只显示镜像ID –digests:显示镜像的摘要信息 –no-trunc:显示完整的镜像信息 案例: #列出本地主机上的镜像 [r
2020-10-25 16:29:03
391
原创 docker简介
Docker简介 Docker概念: 1、问什么会有docker的出现? 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验 Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。 环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样
2020-10-25 16:24:32
267
转载 kafka_zookeeper_配置文件配置
kafka_zookeeper_配置文件配置 原文 server.properties配置如下: broker.id=0 num.network.threads=2 num.io.threads=8 socket.send.buffer.bytes=1048576 socket.receive.buffer.bytes=1048576 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs num.partitions=2 log.retent
2020-10-25 16:16:45
1507
原创 Kafka集群配置
Kafka集群配置 参考:参考文章 https://zhuanlan.zhihu.com/p/136758040?from_voters_page=true 因为kafka集群要配合zookeeper集群一起使用,所以要先搭建zookeeper集群 1、搭建zookeeper集群 首先下载zookeeper,官网下载,建议镜像网站下载(速度快) 下载完成之后解压 tar -zxvf 对应的zookeeper的压缩包 将zookeeper复制一份,命名为zookeeper-1 将zookeeper-1中的zo
2020-10-25 16:13:26
355
转载 java并发编程volatile关键字解析
Java并发编程:volatile关键字解析 原文出处:http://www.cnblogs.com/dolphin0520/ Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatil...
2020-10-18 23:00:58
281
1
转载 java多线程知识合集
java多线程知识合集 原文:https://blog.csdn.net/boker_han/article/details/82918881 https://blog.csdn.net/boker_han/article/details/79466524 线程的生命周期 线程是一个动态执行的过程,它也有一个从生产到死亡的过程。 下图显示了一个线程完整的生命周期。 新建状态: 使用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序start()这个
2020-10-18 22:42:49
315
1
转载 Redis哨兵详解
实现故障恢复自动化:详解Redis哨兵技术 原文出处: http://www.redis.cn/articles/20181020001.html 在前面分享的《读完这篇文章,就基本搞定了Redis主从复制》中我们曾提到,Redis主从复制的作用有数据热备、负载均衡、故障恢复等;但主从复制存在的一个问题是故障恢复无法自动化。本文将要介绍的哨兵,它基于Redis主从复制,主要作用便是解决主节点故障恢复的自动化问题,进一步提高系统的高可用性。 **注:**本文内容基于Redis 3.0版本。 一、作用和架构 1
2020-10-17 11:14:03
623
原创 Redis的事务
Redis的事务 1、Redis的事务是什么? 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不允许加塞 2、用途 一个队列中,一次性、顺序性、排他性的执行一系列命令 3、常用命令 案例: #正常执行 #multi标记一个事务块的开始 127.0.0.1:6379> multi OK #操作进入队列 127.0.0.1:6379> set id 12 QUEUED 127.0.0.1:6379> get id QUEU
2020-10-17 11:04:31
149
原创 Redis的发布订阅
Redis的订阅发布 1、什么是Redis的订阅发布 进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 订阅/发布消息图: 命令: 案例: 8850)] 案例:
2020-10-17 11:03:27
112
原创 Redis的持久化
Redis的持久化 1、RDB(Redis DateBase) RDB持久化是什么: 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是snapshot快照,它恢复时是将快照文件直接读到内存里。 RDB过程图: Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那么RDB方
2020-10-17 11:01:36
482
原创 Redis的复制
Redis的复制(master/Slave) 1、redis的复制是什么? redis的复制就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,slave以读为主 2、redis的复制作用 读写分离 容灾恢复 3、如何实现Redis的主从复制 1、配置从库不配置主库(默认自己就是主库) 2、从库配置:slaveof主库IP主库端口(或者使用slaveof命令) 每次与master断开之后,都需要重新连接,除非你配置redis.con
2020-10-17 10:59:37
689
原创 Redis数据类型
Redis数据类型 1、Redis的常用数据类型 String(字符串) String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。 String类型是二进制安全的,意思是redis的String可以包含任何数据,比如jpg图片或者序列化的对象。 String类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M Hash(哈希,类似java里面的Map) Redis hash是一个键值对集合。 Redis ha
2020-10-17 10:55:01
144
转载 Redis常见配置
参数说明 redis.conf 配置项说明如下: Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而M
2020-10-17 10:50:51
132
转载 Redis配置文件
Redis 配置文件详解 1、redis.conf 来源: 位置:/opt/redis-5.0.7/redis.conf Units:单位大小写不敏感 Includes:我们知道Redis只有一个配置文件,如果多个人进行开发维护,那么就需要多个这样的配置文件,这时候多个配置文件就可以在此通过 include /path/to/local.conf 配置进来,而原本的 redis.conf 配置文件就作为一个总闸。 ps:如果用过struts2 开发的同学,在项目组中多人开发的情况下,通常会有多个st
2020-10-17 10:50:14
247
原创 Redis入门
1、入门概述 1、Redis是什么 Redis:REmote DIctionary Server (远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称之为数据结构服务器。 Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 Redis不仅仅支持简单
2020-10-08 22:46:21
117
原创 NoSql 入门和概述
NoSql 一、NoSql 入门和概述 1、入门概述 1、互联网时代背景下大机遇,为什么使用nosql 1、单机时代MySQL的美好年代 在90年代,一个网站的访问量一般都不大,单个数据库完全可以轻松应付。 在哪个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看数据存储的瓶颈是什么? 1、数据量的总大小一个机器放不下时 2、数据量的索引(B+Tree)一个机器的内存放不下时 3、访问量(读写混合)一个实例不能承受,如果满足了上述1 or 3 个,进化… 2、Memcached(缓
2020-10-08 22:42:29
318
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅