IO技术
文章平均质量分 79
njitzyd
这个作者很懒,什么都没留下…
展开
-
用Netty 自己实现dubbo RPC
用Netty 自己实现dubbo RPCRPC 的基本介绍RPC (Remote Procedure Call) 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外的为这个交互编程。也就是说可以达到两个或者多个应用程序部署在不同的服务器上,他们之间的调用都像是本地方法调用一样。RPC 的调用如下图。 常用的RPC 框架有阿里的dubbo,Google的gRPC,Go 语言的rpcx,Apache的thrift,Spring的Spring原创 2021-01-16 16:09:58 · 153 阅读 · 0 评论 -
BIO、NIO和AIO的区别以及Netty 简介
BIO、NIO和AIO的区别以及Netty 简介要分清这三个,首先要分清这两组概念。同步(Synchronization)和异步(Asynchronous)的方式同步和异步都是基于应用程序所在操作系统处理IO事件所采用的方式,比如同步:是应用程序要直接参与IO读写的操作。异步:所有的IO读写交给搡作系统去处理,应用程序只需要等待通知。举个通俗的例子:你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能是原创 2021-01-07 23:14:41 · 108 阅读 · 0 评论 -
用Netty 自己实现dubbo RPC
用Netty 自己实现dubbo RPCRPC 的基本介绍RPC (Remote Procedure Call) 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外的为这个交互编程。也就是说可以达到两个或者多个应用程序部署在不同的服务器上,他们之间的调用都像是本地方法调用一样。RPC 的调用如下图。 常用的RPC 框架有阿里的dubbo,Google的gRPC,Go 语言的rpcx,Apache的thrift,Spring的Spring原创 2020-07-29 21:16:44 · 164 阅读 · 0 评论 -
NIO中的read和write
在NIO中,读和写的逻辑有点不同,当调用channel的read方法时,是把数据读入buffer;当调用channel的write方法时,是把buffer中的数据写出到channel。原创 2020-06-30 11:19:57 · 422 阅读 · 0 评论 -
NIO编程需要解决的Epoll Bug
1. bug表现正常情况下,selector.select()操作是阻塞的,只有被监听的fd有读写操作时,才被唤醒但是,在这个bug中,没有任何fd有读写请求,但是select()操作依旧被唤醒很显然,这种情况下,selectedKeys()返回的是个空数组然后按照逻辑执行到while(true)处,循环执行,导致死循环。2. bug 原因在部分Linux的2.6的kernel中,poll和epoll对于突然中断的连接socket会对返回的eventSet事件集合置为POLLHUP,也可原创 2020-06-29 20:59:14 · 607 阅读 · 0 评论 -
NIO与零拷贝的学习与使用
1. 零拷贝的基本介绍零拷贝是网络编程的关键,很多性能的优化都离不开。在Java程序中,常用的零拷贝有mmap(内存映射)喝sendFile。2. 传统的IO模型与零拷贝对比2.1 传统的模型图其中 DMA: direct memory access 直接内存拷贝(不适用CPU)2.2 mmap 优化mmap示意图mmap 通过内存映射,将文件映射到内核缓冲区,同时,用户空间可以共享内核空间的数据。这样在进行网络传输的时候,就可以减少内核空间到用户空间的拷贝次数。2.3 s原创 2020-06-29 19:11:29 · 161 阅读 · 0 评论