直观的讲:lua并不支持多线程,lua语言本身具有携程功能,但携程仅仅是一种中继器。 lua多线程的目的:有并发需求时,共享一些数据。 例如使用lua写一个并发服务器。用户登陆之后,用户数据储存在lua中,这样网络IO层与协议控制层可以由C来做,而业务逻辑可以完全交给lua。 解决方案共3种: 1、 ...
分类:
编程语言 时间:
2019-10-21 09:33:30
阅读次数:
728
2019-10-20 关键字:select 与 poll 在 Linux 系统下,IO 总共可以分为以下四种: 1、阻塞 IO; 2、非阻塞 IO; 3、IO多路复用; 允许同时对多个 IO 进行控制。 4、信号驱动 IO; 一种异步通信模型。前面三种 IO 都是同步型的,唯这一种是异步型的。 阻塞 ...
分类:
系统相关 时间:
2019-10-20 11:07:38
阅读次数:
107
网络IO模型里有多个概念比较难理解,本文通过用Java实现一个简单的redis,从最简单的单线程单连接到NIO与netty,介绍不同的IO模型。
分类:
编程语言 时间:
2019-10-15 17:29:39
阅读次数:
85
PHP聊天室框架 workerman-chat是一个以workerman作为服务器容器,使用PHP开发的基于Websocket协议的一个可分布式部署的聊天室框架。 workerman-chat采用gateway workers 进程模型。gateway只负责网络IO,全异步非阻塞,每个gateway ...
本文只跟踪消费者拉取消息的流程。对于 java 客户端, kafka 的生产者和消费者复用同一个网络 io 类 NetworkClient。 入口在 KafkaConsumer#pollOnce 中,抽出主要步骤: Fetcher#sendFetches ConsumerNetworkClient# ...
分类:
其他好文 时间:
2019-10-02 17:09:05
阅读次数:
565
网络IO Linux 的内核将所有外部设备都看做一个文件来操作(一切皆文件),对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符)。而对一个socket的读写也会有响应的描述符,称为socket fd(socket文件描述符),描述符就是一个数字, ...
分类:
其他好文 时间:
2019-10-02 16:46:22
阅读次数:
108
Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点 http://network.51cto.com/art/201909/603780.htm 可以毫不夸张的说现如今的互联网是基于TCP/IP构建起来的网络。弄懂协议栈的原理,无论对调试网络IO性能还是解决网络问题都是有很大帮助的。本 ...
分类:
系统相关 时间:
2019-10-02 11:07:03
阅读次数:
95
大并发服务器框架 大并发服务器设计目标 1. 高性能(High Performance). 要求编写出来的服务器能够最大限度发挥机器性能, 使得机器在满负荷的情况下能够处理尽可能多的并发请求, 对于大量并发请求能够及时快速做出响应 2. 高可用(High Availability). 要求服务器7\ ...
分类:
其他好文 时间:
2019-09-19 10:47:08
阅读次数:
128
Redis架构 1.1.问题 redis是单线程,单实例,为什么并发那么多,依旧很快呢? 回答:因为调用了系统内核的epoll 1.2.Linux的早期版本 Linux有Linux kernal,我们的客户端,进行连接,首先到达的是Linux kernal,在Linux的早期版本,只有read和wr ...
分类:
其他好文 时间:
2019-09-13 01:49:52
阅读次数:
120