Spark IO模型
2023-09-14 09:14:49 时间
Spark IO模型
Redis 是单线程 : 指 Redis 的网络 IO 和键值对读写是由一个线程来完成
- 持久化、异步删除、集群数据同步 : 由额外的线程执行
线程数/系统吞吐率 :
多线程同时访问的共享资源,为了保证共享资源的正确性,要额外的机制进行保证 (额外的开销)
多线程并发访问 Redis :
- 为了保证队列长度的正确性,要让线程 A 和 B的 LPUSH 和 LPOP 串行执行
- 用多线程会引入同步原语来保护共享资源的并发访问,并降低代码的易调试性/可维护性
Redis 用单线程模型达到每秒数十万级别的处理能力设计 :
- Redis 的大部分操作在内存上完成,并采用高效的数据结构,如 : 哈希表 , 跳表
- 用多路复用机制,在网络 IO 中能并发处理大量的客户端请求,实现高吞吐率
Redis 基本IO模型 :
- 处理 Get 请求,要监听客户端请求 (bind/listen),和客户端建立连接(accept)
- 从 socket 中读取请求 (recv) ,解析客户端发送请求 (parse) ,根据请求类型读取键值数据 (get) ,最后给客户端返回结果 (向 socket 中写回数据 (send) )
Redis 套接字类型/非阻塞设置 :
调用方法 | 返回套接字类型 | 非阻塞模式 | 效果 |
---|---|---|---|
socket() | 主动套接字 | ||
listen() | 监听套接字 | 可设置 | accept() 非阻塞 |
accept() | 已连接套接字 | 可设置 | send() / recv() 非阻塞 |
多路复用
Linux 的 IO 多路复用机制 : 一个线程处理多个 IO 流 (select/epoll
机制)
- 在 Redis 只运行单线程的情况下,该机制允许内核中,同
时存在多个监听套接字和已连接套接字。内核会一直监听这些套接字上的连接请求或数据请求。一旦有请求到达,就会交给 Redis 线程处理,这就实现了一个 Redis 线程处理多个 IO 流的效果
基于多路复用的 IO 模型 :
连接请求/读数据请求 :
- Accept 事件和 Read 事件,分别对两个事件注册
accept
和get
回调函数 - 当 Linux 内核监听到有连接请求或读数据请求时,就会触发 Accept 事件
和 Read 事件 - 内核就会回调 Redis 相应的 accept 和 get 函数进行处理
相关文章
- Warning: Ignoring non-Spark config property: hive.exec.orc.default.stripe.size相关
- Spark pool_spark docker
- spark包链接kafka集群报错org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
- Spark Streaming大数据实时计算介绍
- Spark Streaming简介
- Spark的基本概念
- Spark学习笔记6:Spark调优与调试详解大数据
- Spark入门实战系列–2.Spark编译与部署(中)–Hadoop编译安装详解大数据
- Spark入门实战系列–7.Spark Streaming(下)–实时流计算Spark Streaming实战详解大数据
- Spark项目之电商用户行为分析大数据平台之(十一)JSON及FASTJSON详解大数据
- Spark项目之电商用户行为分析大数据平台之(七)数据调研–基本数据结构介绍详解大数据
- Spark编程实战之模拟SparkRPC原理实现自定义RPC详解大数据
- Spark SQL讲解详解大数据
- Spark Shuffle原理解析详解大数据
- Spark算子执行流程详解之六大数据
- Driver端如何正确取消Spark中的job详解大数据
- Linux系统磁盘IO性能研究(linux磁盘io性能)
- Linux进程IO控制: 从理论到实践(linux进程io)
- 探究Linux下IO测试工具的功能(io测试工具linux)
- Linux下玩转IO命令(io命令linux)
- Linux开启同步IO新时代(linux同步io)
- 测试Linux系统IO性能的秘籍(linux测试io性能)
- 如何进行 Linux 下的磁盘 IO 测试(linux磁盘io测试)
- Linux磁盘IO查看方法详解,了解磁盘性能瓶颈,提高工作效率(查看linux磁盘io)
- Spark构建Redis数据按照高效实时处理(spark连接redis)
- Spark高效消费Redis中数据(spark消费redis)
- Oracle IO优化提升数据库性能的关键(oracle io 情况)
- Oracle数据库IO为零复原之路(oracle %io为0)