• 《Java 编写基于 Netty 的 RPC 框架》


    一 简单概念

    RPC: ( Remote Procedure Call),远程调用过程,是通过网络调用远程计算机的进程中某个方法,从而获取到想要的数据,过程如同调用本地的方法一样.

    阻塞IO :当阻塞I/O在调用InputStream.read()方法是阻塞的,一直等到数据到来时才返回,同样ServerSocket.accept()方法时,也是阻塞,直到有客户端连接才返回,I/O通信模式如下:

    缺点:当客户端多时,会创建大量的处理线程,并且为每一个线程分配一定的资源;阻塞可能带来频繁切换上下文,这时引入NIO

    NIO : jdk1.4引入的(NEW Input/Output),是基于通过和缓存区的I/O方式,(插入一段题外话,学的多忘得也多,之前有认真研究过NIO,后来用到的时候,忘得一干二净,所以学习一些东西,经常返回看看),NIO是一种非阻塞的IO模型,通过不断轮询IO事件是否就绪,非阻塞是指线程在等待IO的时候,可以做其他的任务,同步的核心是Selector,Selector代替线程本省的轮询IO事件,避免了阻塞同时减少了不必要的线程消耗;非阻塞的核心是通道和缓存区,当IO事件的就绪时,可以将缓存区的数据写入通道

    其工作原理:

    1 由专门的线程来处理所有的IO事件,并且负责转发

    2 事件驱动机制:事件到的时候才触发,而不是同步监视

    3 线程通讯:线程之间通讯通过wait,notify等方式通讯,保证每次上下文切换都是有意义的,减少没必要的线程切换

    通道 : 是对原I/O包中流的模拟,所有数据必须通过Channel对象,常见的通道FileChannel,SocketChannel,ServerSocketChannel,DatagramChannel(UDP协议向网络连接的两端读写数据)

    Buffer缓存区 :实际上是一个容器,一个连续的数组,任何读写的数据都经过Buffer

    Netty :是由JBOSS提供的一个java开源框架,是一个高性能,异步事件驱动的NIO框架,基于JAVA NIO提供的API实现,他提供了TCP UDP和文件传输的支持,,所有操作都是异步非阻塞的.通过Futrue-Listener机制,本质就是Reactor模式的现实,Selector作为多路复用器,EventLoop作为转发器,而且,netty对NIO中buffer做优化,大大提高了性能

    二 Netty 客户端和服务端的

    Netty中Bootstrap和Channel的生命周期

    Bootstrap简介

    Bootstarp:引导程序,将ChannelPipeline,ChannelHandler,EventLoop进行整体关联

  • 相关阅读:
    java的构造方法——无参构造方法
    web 基础和http 协议
    前端性能优化方法与实战09 优化手段:首屏秒开的 4 重保障
    数说故事官网全新升级,高效赋能业务场景
    spark-sql 指定metastore地址
    docker容器运行成功但无法访问,原因分析及对应解决方案(最新,以Tomcat为例,亲测有效)
    用户模块的实现和首页的开发(二)
    安卓“灵动岛”,最新版来啦~
    国际腾讯云账号云服务器网络访问丢包问题解决办法!!
    XSS-labs靶场实战(二)——第4-6关
  • 原文地址:https://blog.csdn.net/weixin_62421895/article/details/126399818