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

相关推荐
秦jh_7 分钟前
【Linux】多线程(概念,控制)
linux·运维·前端
蜗牛快跑21320 分钟前
面向对象编程 vs 函数式编程
前端·函数式编程·面向对象编程
Dread_lxy21 分钟前
vue 依赖注入(Provide、Inject )和混入(mixins)
前端·javascript·vue.js
涔溪1 小时前
Ecmascript(ES)标准
前端·elasticsearch·ecmascript
榴莲千丞1 小时前
第8章利用CSS制作导航菜单
前端·css
奔跑草-1 小时前
【前端】深入浅出 - TypeScript 的详细讲解
前端·javascript·react.js·typescript
羡与2 小时前
echarts-gl 3D柱状图配置
前端·javascript·echarts
guokanglun2 小时前
CSS样式实现3D效果
前端·css·3d
咔咔库奇2 小时前
ES6进阶知识一
前端·ecmascript·es6
渗透测试老鸟-九青2 小时前
通过投毒Bingbot索引挖掘必应中的存储型XSS
服务器·前端·javascript·安全·web安全·缓存·xss