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