Redis/ElaticSearch/kafka入门

Redis入门 (qq.com)

ElasticSearch入门 (qq.com)

Kafka入门 (qq.com)

1 Redis入门

Redis,以其内存中数据存储和快速读写能力而著称

基本信息

全称:Remote Dictionary Server(远程字典服务)

公司:Redis Labs

国家:美国

官网:https://redis.io/

简介:一个开源的键值存储系统,它支持多种数据结构如字符串、哈希表、列表、集合以及有序集合等。Redis 被广泛用作数据库、缓存和消息中间件

特点

高性能:数据存储在内存中,能够提供极快的读写操作。采用单线程模型和异步 I/O,避免了多线程的竞争和阻塞

持久化:支持RDB快照和AOF日志两种持久化方式

高可用:支持主从复制、哨兵和集群等多种高可用方案

数据类型

key:一般string

value:十大数据类型,字符串string、列表list、哈希表hash、集合set、有序集合ZSet、地理空间GEO、技术统计HyperLogLog、位图bitmap、位域bitfield、流stream

命令查询网址:https://redis.com.cn/commands.html

key常用操作命令:key *, exists key, type key, del key...

持久化

RDB

简介:redis database, 在指定的时间间隔,执行数据集的时间点快照,全量快照,将内存的数据都记录在磁盘中

优势:大规模数据恢复、按照业务定时备份、对数据完整性和一致性要求不高、在内存中的加载速度比aof快

劣势:快照之间的数据回丢失、全量同步,数据量太大I/O影响服务器性能、依赖主进程fork,fork时内存中数据克隆一份,大2倍的膨胀

AOF:

简介:append only file, 以日志的形式记录每个写操作,只许追加文件,不允许改写文件,默认不开启

优势:数据不丢失、可做紧急恢复

劣势:相同数据集数据,aof文件远大于rgb文件,恢复速度慢

事务

简介:一组命令的集合,一个事物中的所有命令都会序列化,按顺序串行执行而不会被其他命令插入,不许加塞

常用命令:取消discard、执行exec、标记事务块开始multi、取消监视unwatch、监视watch

管道

背景:Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。如果同时需要执行大量的命令,要等待上一条命令应答后再执行,这中间多了往返时延RTT,而频繁调用系统IO,影响性能

简介:管道(pipeline)可以一次性发送多条命令给服务端,服务端依次处理完完毕后,通过一条响应一次性将结果返回,通过减少客户端与redis的通信次数来实现降低往返延时延RTT。批处理命令优化

实现原理:队列,先进先出特性保证数据的顺序性

注意事项:管道中的指令依次执行,不保证原子性,如有指令异常,后续执行继续执行;一次组装的命令数不能过多

名词解释

RTT(Round Time Trip):往返时延

复制/哨兵/集群

复制

简介:主从复制,master以写为主,slave以读为主,master数据变化时,自动将数据异步同步到其他slave数据库中

作用:读写分离、容灾恢复、数据备份、水平扩容支持高并发

缺点:复制延迟,信号衰减;master挂了后,默认不会从slave节点中自动重选一个master,无人值守为刚需

哨兵

简介:监控后台master主机是否故障,如故障根据投票数自动将某个从库变为主库,简称无人值守

作用:主从监控,消息通知、故障转移、配置中心

集群

简介:提供在多个redis节点间共享数据的程序集,可支持多个master,cluster自带sentinel故障转移机制,无需使用哨兵功能

参考资料

阳哥,redis7实战

2 ElasticSearch入门

Elasticsearch,一个强大的开源搜索和分析引擎

基本信息

名称:Elasticsearch

公司:Elastic N.V.

国家:美国(总部位于加州)

官网:https://www.elastic.co/elasticsearch

简介:Elasticsearch 是一个分布式的、RESTful 风格的搜索和分析引擎,它能够解决从简单到复杂的各种搜索问题,常被用于全文检索、结构化数据检索以及日志分析等场景

特点

分布式架构:支持水平扩展,可以通过增加节点轻松扩展系统处理能力和存储容量

高性能:采用倒排索引技术,查询速度快,能够实现实时搜索

可视化工具:通过 Kibana 提供直观的数据可视化能力

全文搜索引擎:计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户

核心概念

索引(Index) :具有相似结构的文档的容器,由一个名字来标识(必须全部是小写字母),能搜索的数据必须索引

类型(Type):索引的一个逻辑上的分类/分区,7.x 默认不再支持自定义索引类型(默认类型为:_doc)

文档(Document) :一个可被索引的基础信息单元,JSON格式的数据记录

字段(Field) :表示文档中的具体属性或值

映射(Mapping) :定义了索引中文档的结构以及字段如何被索引和搜索

分片(Shards) :将索引划分成多份的能力,每一份就称之为分片

副本(Replicas):创建分片的一份或多份拷贝

分配(Allocation):将分片分配给某个节点的过程

安装

从官网下载安装软件,解压后,进入bin文件目录,点击elasticsearch.bat文件启动ES服务,其中9300端口为Elasticsearch集群间组件的通信端口,9200端口为浏览器访问的http 协议RESTful端口

操作

HTTP操作

baseurl:http://127.0.0.1:9200

通过postman发送restful请求

索引操作

创建/查看/删除单个索引:PUT/GET/DELETE+baseurl+添加元素(如/shopping)

查看所有索引: GET .. /cat/indices?v

文档操作

创建文档:POST .. /shopping/_doc ,添加的数据格式为JSON格式,放在请求体中

自定义唯一性标识,需要在创建时指定:http://127.0.0.1:9200/shopping/_doc/1

查看文档:GET .. /shopping/_doc/1

修改文档:POST .. /shopping/_doc/1

修改内容放请求体中,请求体变化,会将原有的数据内容覆盖

修改字段 :POST .. /shopping/_update/1

删除文档:DELETE

条件删除文档:DELETE .. /shopping/_delete_by_query

请求体内容配置query

映射操作

创建映射:PUT .. /student/_mapping

请求体内容配置properties,各字段对应的type和index

查看映射:GET .. /student/_mapping

高级查询

查询所有文档:GET .. /_search

匹配查询:match

字段匹配查询:multi_match

关键字精确查询:term

多关键字精确查询:terms

指定查询字段:_source

过滤字段:includes、excludes

组合查询:bool

范围查询:range

模糊查询:fuzzy

单字段排序:sort

高亮查询:highlight

分页查询:from、size

聚合查询:最大值max 、最小值min、求和sum、平均值avg 、State聚合

桶聚合查询:terms

3 kafka入门

Kafka,以其独特的架构和性能,成为现代数据流处理的中坚力量

kafka基本信息

公司:Apache Software Foundation

国家:美国

官网:https://kafka.apache.org/

简介:一个开源分布式流处理平台,由三个核心部分组成:发布消息到主题(topics)的生产者、存储和处理消息的 Kafka 服务器、从主题订阅并消费消息的消费者

特点

分布式架构:可部署在多台服务器上,形成一个集群,从而实现高可用性和容错性

高吞吐量和低延迟:能够以网络限制的吞吐量传递消息,并具有低至2毫秒的延迟

持久性存储:在分布式、持久、容错的集群中安全地存储数据流

高可用性:高效地跨可用区域扩展集群或连接不同地理区域的单独集群

相关软件:遵循JMS规范的消息传输软件,如RabbitMQ、ActiveMQ、RocketMQ,MQ=Message Queue

相关规范:Java中实现数据传输功能,需要遵循Java消息服务技术规范JMS(Java Message Service),如ActiveMQ,RabbitMQ遵循类JMS规范的AMQP(Advanced Message Queuing Protocol)规范,另外物联网小型设备之间传输消息用MQTT通讯协议

消息中间件:在不同软件系统之间进行可靠消息传递的软件基础设施,过提供异步通信机制来解耦系统组件

ZooKeeper基本信息

公司:Apache Software Foundation

国家:美国

官网:https://zookeeper.apache.org/

简介:一个开源的分布式协调服务,用于维护配置信息、命名、提供分布式同步和提供群组服务,通过一个简单的API为分布式应用提供复杂的协调任务,Kafka内置了ZooKeeper的客户端,采用ZooKeeper来实现多个服务节点的协调调度

数据存储结构:ZNode树,分布式系统的元数据(环境信息以及系统配置信息)保存在ZooKeeper节点中

与YARN区别:YARN主要负责资源管理和调度,而ZooKeeper则提供分布式系统中的协调服务,确保数据一致性。YARN像是政府,负责管理机器资源的分配;而ZooKeeper则像是立法委员会,提供权威的信息确保整个系统的一致性

安装

下载软件安装包,内置了ZooKeeper软件

设置ZooKeeper数据存储位置后,启动ZooKeeper

配置Kafka数据的存放位置,启动Kafka

创建主题、查询主题、删除主题

数据存在.log日志文件中

相关概念

代理Broker:用Kafka前启动的Kafka服务进程,一般会称之为Kafka Broker或Kafka Server,多集群中每一个服务节点都是一个broker,通过broker.id区分,在server.properties配置

控制器Controller:Kafka软件架构为主从(Master - Slave)架构,多个Broker中选出的一个用于管理整个Kafka集群的Master节点

Controller的基本功能:Broker管理(监听 /brokers/ids节点相关的变化)、Topic管理(监听topics节点相关变化)、Partation管理(监听重分配分区、ISR变更通知、首选副本选举)。节点出现故障时,重新选一个新的管理者,选举算法依赖于ZooKeeper软件实现Broker节点选举功能

启动Kafka构建集群

初始化ZooKeeper

初始化服务

简介:Broker中有很多的服务对象,用于实现内部管理和外部通信操作

流程:1启动任务调度器KafkaScheduler->2创建数据管理器LogManager->3创建远程数据管理器RemoteLogManager->4创建副本管理器ReplicaManager->5创建ZK元数据缓存ZkMetadataCache-> 6创建Broker通信对象BrokerToControllerChannelManager->7创建网络通信对象SocketServer->8 注册Broker节点

启动控制器

简介:控制器(KafkaController)是每一个Broker启动时都会创建的核心对象,用于和ZK之间建立连接并申请自己为整个Kafka集群的Master管理者。如果申请成功,那么会完成管理者的初始化操作

流程:初始化通道管理器ControllerChannelManager、初始化事件管理器ControllerEventManager、初始化状态管理器ControllerChangeHandler、启动控制器

具体使用

创建主题相关概念

主题:Kafka中消息的逻辑分类,但是这个分类不应该是固定的,而是应该由外部的业务场景进行定义,名称中不要同时包含下划线和点

分区Partition:Kafka消息传输采用发布、订阅模式,消息生产者必须将数据发送到一个主题,主题的数据非常多时,将一个主题从物理上分成几块,然后将不同的数据块均匀地分配到不同的broker节点上,主题的分块为分区

副本Replication:分区数据设定多个备份

副本类型Leader & Follower:只有Leader副本才能进行数据的读写,Follower副本只做备份使用

日志Log:Kafka接收到的消息数据最终都是存储在log日志文件中的,底层存储数据的文件的扩展名为log

生产消息

步骤

创建Map类型的配置对象,根据场景增加相应的配置属性

创建待发送数据

创建生产者对象,发送生产的数据:数据生产者(KafkaProducer)、数据收集器(RecordAccumulator)、数据发送器(Sender)

发送消息

拦截器:生产者API在数据准备好发送给Kafka服务器之前,允许我们对生产的数据进行统一的处理,比如校验,整合数据等等

步骤:增加拦截器类、配置拦截器、回调方法、异步发送、同步发送

消费消息

步骤

建Map类型的配置对象,根据场景增加相应的配置属性

创建消费者对象

获取数据

关闭消费者

消费数据的方式:push & pull

相关推荐
Lee川2 分钟前
🎬 从标签到屏幕:揭秘现代网页构建与适配之道
前端·面试
Ticnix29 分钟前
ECharts初始化、销毁、resize 适配组件封装(含完整封装代码)
前端·echarts
纯爱掌门人32 分钟前
终焉轮回里,藏着 AI 与人类的答案
前端·人工智能·aigc
twl36 分钟前
OpenClaw 深度技术解析
前端
崔庆才丨静觅39 分钟前
比官方便宜一半以上!Grok API 申请及使用
前端
星光不问赶路人1 小时前
vue3使用jsx语法详解
前端·vue.js
天蓝色的鱼鱼1 小时前
shadcn/ui,给你一个真正可控的UI组件库
前端
布列瑟农的星空1 小时前
前端都能看懂的Rust入门教程(三)——控制流语句
前端·后端·rust
Mr Xu_1 小时前
Vue 3 中计算属性的最佳实践:提升可读性、可维护性与性能
前端·javascript
jerrywus1 小时前
我写了个 Claude Code Skill,再也不用手动切图传 COS 了
前端·agent·claude