自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(156)
  • 资源 (3)
  • 收藏
  • 关注

原创 【Redis】redis面试相关积累

Redis 在设计上是单线程的,这意味着 Redis 服务器在任何给定时刻只能执行一个命令。然而,这并不意味着 Redis 无法利用多核 CPU,因为 Redis 使用了一些技术来提高性能和并发性,例如非阻塞 I/O 和事件驱动模型。Redis 使用了基于事件驱动的事件循环(event loop)来管理网络连接和处理命令请求。在事件驱动模型下,Redis 服务器在主线程上轮询事件,并异步处理请求,从而实现高效的并发处理。Redis 使用了非阻塞 I/O 模型来处理网络 I/O 操作。

2024-04-12 15:03:06 953

原创 【Redis】redis集群模式

Redis集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。实际使用中集群一般由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。集群的作用,可以归纳为两点:1、数据分区:数据分区(或称数据分片)是集群最核心的功能。集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;

2024-04-01 16:51:29 1022

原创 【日常积累】指定ruby版本环境安装

最近在学习redis相关知识时,在搭建redis集群时如果选择使用redis官方提供了redis-trib.rb工具,就需要先安装ruby环境,下面是安装时的详细过程,以及过程中遇到的问题解决。我使用的环境是centos7,小版本差别应该不是很大,具体请自行测试。

2024-04-01 11:10:11 645

原创 【Redis】redis主从复制

下面回顾一下本文的主要内容:1、主从复制的作用:宏观的了解主从复制是为了解决什么样的问题,即数据冗余、故障恢复、读负载均衡等。2、主从复制的操作:即slaveof命令。3、主从复制的原理:主从复制包括了连接建立阶段、数据同步阶段、命令传播阶段;其中数据同步阶段,有全量复制和部分复制两种数据同步方式;命令传播阶段,主从节点之间有PING和REPLCONF ACK命令互相进行心跳检测。

2024-03-28 14:48:05 900

原创 【Redis】redis哨兵模式

哨兵系统的搭建过程,有几点需要注意:(1)哨兵系统中的主从节点,与普通的主从节点并没有什么区别,故障发现和转移是由哨兵来控制和完成的。(2)哨兵节点本质上是redis节点。(3)每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点。(4)在哨兵节点启动和故障转移阶段,各个节点的配置文件会被重写(config rewrite)。(5)上面的示例中,一个哨兵只监控了一个主节点;实际上,一个哨兵可以监控多个主节点,通过配置多条sentinel monitor即可实现。

2024-03-28 14:47:28 1118

原创 【Redis】redis持久化

所谓的持久化,就是把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。redis 开始是将所有数据保持在内存中,对数据的更新将根据策略配置异步地保存在磁盘中。

2024-03-08 15:25:25 1098

原创 【Redis】Redis内存模型

关于Redis数据存储的细节,涉及到内存分配器(如jemalloc)、简单动态字符串(SDS:simple dynamic strings)、5种对象类型及内部编码、redisObject。在讲述具体内容之前,先说明一下这几个概念之间的关系。下图是执行set hello world时,所涉及到的数据模型。图片来源:https://searchdatabase.techtarget.com.cn/7-20218/

2024-03-08 15:24:45 883

原创 【Redis】redis事务和发布订阅

示例需要注意的是,单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。(TX 是transaction的意思)如果在 set b bbb 处失败,set a 已成功不会回滚,set c 还会继续执行。同时注意discard是放弃事务的意思。

2024-02-29 16:42:08 1110

原创 【Redis】redis脚本和redis中的pipeline

Redis 脚本使用 Lua 解释器来执行脚本。Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。语法Eval 命令的基本语法如下:解释说明:上面指定KEYS占位符3个,则分别对应着msyql 就是第一个附加参数ARGV[1]的值,而ARGV[2] 就应该为空。所以只能打印出zk kafka mysql。

2024-02-29 16:41:53 1146

原创 【Redis】redis数据类型详解(一)

Redis目前已经支持多种丰富的数据类型,从本章节开始将详细说明各种数据类型。

2024-02-28 15:44:39 948

原创 【Redis】redis中的HyperLogLog和GEO

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。它是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

2024-02-28 15:44:23 915

原创 【Redis】redis通用命令

要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前安装redis 的src目录下,具体为。注意此redis实例没有设置密码,如果设置了密码需要先使用命令AUTH执行验证或者开始在命令行中通过-a指定。在以上实例中我们连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。

2024-02-26 16:59:27 1184

原创 【Redis】redis配置与数据类型

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。在日常使用中,我们一般只会修改一些比较重要的参数。当然redis是支持很多配置参数的,感兴趣的可以自行了解所有的参数,有个大致印象即可。我们可以通过 CONFIG 命令查看或者设置配置项。

2024-02-26 14:00:42 1138

原创 【Redis】redis简介与安装

Redis 是完全开源的,遵守 BSD 协议(Berkeley Software Distribution 意思是"伯克利软件发行版),是一个高性能的 key-value 数据库。Redis与其他key-value存储区别Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

2024-02-25 21:08:18 1079

原创 【Mysql】事务的隔离级别与 MVCC

我们知道 MySQL 是一个 C/S 架构的服务,对于同一个服务器来说,可以有多个客户端与之连接,每个客户端与服务器连接上之后,就是一个会话( Session )。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就是对于服务器来说可能同时处理多个事务。在事务简介的章节中我们说过事务有隔离性的特征,理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据。

2024-02-02 11:14:20 994

原创 【kubernets】由Evicted状态的Pod探讨k8s中pod的驱逐策略

某天突然发现自己的测试环境中有Evicted状态的pod,于是需要排查原因。从上面可以看到当前节点上有一个处于Evicted状态的Pod,名为,其对应的QoS Classs为Burstable,而此时节点上pod的QoS Classs还有BestEffort。同时通过describe发现该Evicted状态的pod是由于造成的。查看/var/log/messages日志中kubelet的相关日志发现是由于磁盘使用量达到97%(超过默认驱逐阈值85%)导致pod被驱逐。而事实上也如此,通过df。

2024-01-29 16:23:26 1127

原创 【Docker】docker Overlay2 文件系统原理

overlayFS是被称为联合文件系统的其中一个解决方案。在2014年,发布了第一个版本并且合并到了Linux的内核3.18版本中,此时,在docker被称为是overlay文件驱动。后来在Linux 内核4.0 版本中进行了改进,称为overlay2。(overlay存在诸多性能和不稳定的问题,不推荐使用overlay,直接使用默认的overlay2即可)

2024-01-28 15:23:58 1700

原创 【kubernets】kubelet证书单独更新

接上一篇文章关于kubernets中的证书管理。本篇文章将单独说明一下kubelet的证书更新。在1.19.16版本中,默认情况下使用 kubeadm alpha certs renew all 不能更新kubelet的证书,其他版本请自行测试。但是某些情况下,我们需要立即对kubelet使用的证书更新,下面的方法大家可以参考一二。

2024-01-25 15:21:24 648

原创 【Mysql】InnoDB统计数据的收集(十三)

innoDB 以表为单位来收集统计数据,这些统计数据可以是基于磁盘的永久性统计数据,也可以是基于内存的非永久性统计数据。innodb_stats_persistent 控制着使用永久性统计数据还是非永久性统计数据;innodb_stats_persistent_sample_pages 控制着永久性统计数据的采样页面数量;innodb_stats_transient_sample_pages 控制着非永久性统计数据的采样页面数量;

2023-12-25 14:51:06 992 1

原创 【Mysql】InnoDB的表空间(九)

表空间是一个在 InnoDB 中比较抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;而对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd的实际文件。可以把表空间想象成由很多个页组成的池子(pool),当我们想为某个表插入一条记录的时候,就会从对应的池子中选一个合适的页将数据写进去。

2023-12-14 15:46:48 985

原创 【Mysql】MySQL基于成本的优化(十二)

单次查询驱动表的成本多次查询被驱动表的成本(具体查询多少次取决于对驱动表查询的结果集中有多少条记录)我们把对驱动表进行查询后得到的记录条数称之为驱动表的 扇出 (英文名: fanout )。很显然驱动表的扇出值越小,对被驱动表的查询次数也就越少,连接查询的总成本也就越低。查询一:假设使用 s1 表作为驱动表,很显然对驱动表的单表查询只能使用全表扫描的方式执行(没有过滤条件),驱动表的扇出值也很明确,那就是驱动表中有多少记录,扇出值就是多少。

2023-11-14 16:20:59 186

原创 【Mysql】Mysql中表连接的原理(十一)

理论上我们可以连接任意数量张表,但是如果没有任何限制条件的话,这些表连接起来产生的 笛卡尔积可能是非常巨大的。比方说3个100行记录的表连接起来产生的 笛卡尔积就有 100×100×100=1000000 行数据!涉及单表的条件这种只设计单表的过滤条件我们之前都提到过一万遍了,我们之前也一直称为搜索条件 ,比如 t1.m1 > 1是只针对 t1 表的过滤条件, t2.n2 < ‘d’ 是只针对 t2 表的过滤条件。涉及两表的条件。

2023-11-03 15:26:21 309

原创 【Mysql】Mysql单表访问方法(十)

作为一个DBA或者运维人员,有时候发现数据库有慢查询语句需要优化,那么我们就需要先了解查询是怎么执行的。我们知道,MySQL Server 有一个查询优化器的模块,一条查询语句进行语法解析之后就会被交给查询优化器来进行优化,优化的结果就是生成一个所谓的执行计划 ,这个执行计划表明了应该使用哪些索引进行查询,表之间的连接顺序是怎样的,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户。接下来我们先了解一下Mysql怎么执行单表查询,方便后续学习优化。先创建一个测试表。

2023-10-30 09:04:06 269

原创 【Mysql】Mysql的数据目录(八)

My默认自带了的几个系统数据库,这几个数据库包含了MySQL服务器运行过程中所需的一些信息以及一些运行状态信息,我们稍作了解。mysql这个数据库贼核心,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。这个数据库保存着MySQL服务器维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引等。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为元数据。

2023-10-23 13:46:09 190

原创 【Mysql】B+树索引的使用(七)

每个索引都对应一棵 B+ 树, B+ 树分为多层,最下边一层是叶子节点,其余的是内节点(非叶子节点)。所有用户记录都存储在 B+ 树的叶子节点,所有目录项记录都存储在内节点。InnoDB 存储引擎会自动为主键(如果没有它会自动帮我们添加)建立聚簇索引 ,聚簇索引的叶子节点包含完整的用户记录。

2023-10-22 23:06:24 994

原创 【Mysql】Mysql中的B+树索引(六)

上面介绍的都是 InnoDB 存储引擎中的索引方案,为了内容的完整性,以及各位可能在面试的时候遇到这类的问题,我们有必要再简单介绍一下 MyISAM 存储引擎中的索引方案。将表中的记录按照记录的插入顺序单独存储在一个文件中,称之为数据文件。这个文件并不划分为若干个数据页,有多少记录就往这个文件中塞多少记录就成了。我们可以通过行号而快速访问到一条记录。

2023-10-19 23:50:52 298

原创 【Mysql】InnoDB数据页结构(五)

数据页代表的这块默认的16KB大小的存储空间可以被划分为多个部分,不同部分有不同的功能,各个部分如图所示:从上图可以看出,一个 InnoDB 数据页的存储空间大致被划分成了 7 个部分,有的部分占用的字节数是确定的,有的部分占用的字节数是不确定的。名称中文名占用空间大小简单描述文件头部38 字节页的一些通用信息页面头部56 字节数据页专有的一些信息最小记录和最大记录26 字节两个虚拟的行记录用户记录不确定实际存储的行记录内容Free Space空闲空间不确定。

2023-10-18 23:02:16 366

原创 【Mysql】Innodb数据结构(四)

InnoDB存储引擎将表中的数据存储到磁盘上,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以还是需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级,所以当我想从表中获取某些记录时, InnoDB 存储引擎需要一条一条的把记录从磁盘上读出来么?不,那样会很慢,

2023-10-17 22:55:40 685

原创 【Mysql】Mysql的字符集和比较规则(三)

在我们确定了 margu字符集表示字符的范围以及编码规则后,怎么比较两个字符的大小呢?比较简单的就是直接比较这两个字符对应的二进制编码的大小,比方说字符 ‘a’ 的编码为 0x01 ,字符 ‘b’ 的编码为 0x02 ,所以 ‘a’ 小于 ‘b’ ,这种简单的比较规则也可以被称为二进制比较规则,英文名为 binary collation。

2023-10-16 22:26:37 336

原创 【Mysql】Mysql的启动选项和系统变量(二)

MySQL 服务器程序运行过程中会用到许多影响程序行为的变量,它们被称为 MySQL 系统变量,比如允许同时连入的客户端数量用系统变量 max_connections 表示,表的默认存储引擎用系统变量 default_storage_engine 表示,查询缓存的大小用系统变量 query_cache_size 表示, MySQL 服务器程序的系统变量有好几百条,每个系统变量都有一个默认值,我们可以使用命令行或者配置文件中的选项在启动服务器时改变一些系统变量的值。

2023-10-12 21:38:13 640

原创 【Mysql】重新认识mysql(一)

参考Mysql是怎么运行的,并结合实际的工作经验对mysql的知识进行总结。

2023-10-11 15:55:56 507

原创 【elasticsearch】使用自建证书搭建elasticsearch8.0.1集群

本文将分享使用自建证书搭建加密的es集群,如果想使用rpm包安装,前期的搭建过程请参考上面一篇文章。后续的操作与使用tar包安装的类似,只是需要注意目录的区别。

2023-10-10 11:18:43 754

原创 【elasticsearch】elasticsearch8.0.1使用rpm包安装并启用TLS

单台 centos7部署单节点elasticsearch8.0.1。

2023-10-09 16:39:24 525

原创 【zookeeper】zookeeper常见的面试题总结及对应答案

ZooKeeper的会话失效机制确保在客户端失去与ZooKeeper服务器连接的情况下,其对集群的临时状态和写操作被正确处理。当Znode发生变化时,ZooKeeper会通知客户端注册的Watcher,以便在Znode状态变化时采取相应的操作。ZooKeeper的Watch机制是通过在服务器端和客户端之间建立长连接,并在服务器端维护Watcher的注册和通知机制来实现的。当ZooKeeper的数据发生变化时,例如节点创建、删除或数据更新,ZooKeeper会触发相关的Watcher事件。

2023-09-25 14:43:16 502

原创 【kafka】kafka常见的面试题总结及对应答案

什么是Kafka Connect的转换器(Connect transformers)?Kafka中的消费者位移(Offset)是什么?Kafka的副本机制是什么?Kafka的消息保留策略是什么?Kafka如何处理消费者的故障恢复和消息的重复消费问题?它有什么优势和劣势?Kafka的水平扩展能力如何实现?Kafka的消息是如何被分区的?Kafka的事务是如何实现的?Kafka的消息偏移量是什么?Kafka的可用性和数据持久性是如何实现的?Kafka的消费者组是什么?Kafka如何处理消费者的扩展和负载均衡?

2023-09-25 10:33:25 571

原创 【Redis】使用rpm包安装redis

公司环境处于内网,某同事需要安装redis,如果使用通过源码编译安装redis,很多编译工具如gcc就需要先安装,但处于内网安装起来不太方便,当然也不是不可以。我们此处就选用通过redis的rpm包进行安装。

2023-09-21 09:26:07 891 2

转载 【kafka】kafka使用场景

以下描述了一些 ApacheKafka ®的流行用例。有关这些领域的概述,请参阅 此博客中的文章。

2023-09-18 09:27:02 56

原创 【kafka】kafka命令大全

本文将分享一些kafka经常使用的一些命令,不断完善中。

2023-09-15 10:25:50 774

原创 【kafka】Kafka中的高水位和Leader Epoch

在Kafka中,高水位是一个位置信息标记,它是用消息位移来表征的,比如某个副本中HW=4,就是这个副本的高水位在offset=4那个位置上。高水位和 LEO(Log End Offset) 是副本对象的两个重要属性。Kafka 所有副本都有对应的高水位和 LEO 值,而不仅仅是 Leader 副本。只不过 Leader 副本比较特殊,Kafka 使用 Leader 副本的高水位来定义所在分区的高水位。换句话说,分区的高水位就是其 Leader 副本的高水位(主分区比较重要)。

2023-09-13 23:23:20 171

原创 【kafka】kafka重要的集群参数配置

对于实际应用的生产环境中,需要尽量先规划设计好集群,避免后期业务上线后费力调整。在考量部署方案时需要通盘考虑,不能仅从单个维度上进行评估,下面是几个重要的维度的考量和建议:这里重点说说操作系统的因素。一句话总结:在Linux部署Kafka能够享受到零拷贝技术带来的快速数据传输特性。

2023-09-12 21:10:25 558

关于docker容器技术培训的ppt

关于docker容器技术培训的ppt,有助于对docker没有了解的人快速了解容器技术。ppt可以直接使用

2023-05-17

多IO线程框架简介

公司大佬写的文档介绍,用于新人了解常识。。。。。。

2018-07-10

saltstack自动化运维使用详解

对saltstack需要入门了解的小伙伴可以看看。。。。。。。

2018-07-10

kubernetes权威指南第二版

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版)龚正,吴治辉,王伟 等

2018-07-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除