网络i/o编程模型24基于netty编写rpc通信框架

健康平安的活着 健康平安的活着     2022-10-21     780

关键词:

一 RPC协议

1.1 RPC协议

RPC:remote  procedure  call : 远程过程调用,是一个计算机通信协议。允许一台机器程序调用另外一台机器的应用。用户无需关心细节,调用本地方法一样的调用远程方法。

常见的RPC框架:阿里的dubbo,google的gRPC, 还有apache的thrift,spring的spring cloud

二 通过基于netty实现RPC通信

2.1 需求说明

消费者和提供者约定接口和协议,消费者远程调用提供者的服务,提供者返回一个字符串,消费者打印提供者返回的数据。

1.创建一个接口,定义抽象方法,用于消费者和提供者之间的约定。

2.创建一个提供者,该类需要监听消费者的请求,并按照约定返回数据。

3.创建一个消费者,该类需要透明的调用自己不存在的方法,内部需要使用netty请求提供者返回数据。

 

 2.2 代码实现

网络i/o编程模型10netty介绍

...一个java开源框架。2.netty是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序。3.netty主要针对在TCP协议下,面向clients端的高并发应用,或者Peer-to-peer场景下的大量数据持续传输... 查看详情

grpc原理

...用同步阻塞的模型,阻塞的时间取决对方I/O处理的速度和网络I/O传输的速度grpc的线程模型主要包含服务端线程模型,客户端线程模型2.1.1I/O通信线程模型gRPC的做法是服务监听线程和I/O 查看详情

网络i/o编程模型22netty的源码总结

一netty启动流程1.newNioEventLoopGroup(1):这个表示bossGroup事件组有1个线程可以指定,如果newNioEventLoopGroup()则默认会有cpu核数*2个线程,这样可以充分利用多核的优势。DEFAULT_EVENT_LOOP_THREADS=Math.max(1,SystemPropertyUtil.getInt(&# 查看详情

网络i/o编程模型25大结局netty学习总结

一说明资源说明:1.学习笔记代码https://gitee.com/jurf-liu/io-netty-demo.git2.学习资料参考:尚硅谷Netty视频教程(B站超火,好评如潮)_哔哩哔哩_bilibili 查看详情

网络i/o编程模型19netty的编码与解码

一编码与解码1、数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码。encoder负责把业务数据转成字节码数据,decoder负责把字节码数据转成业务数据。2.netty常见的解码和编... 查看详情

网络i/o编程模型16netty框架实现的群聊系统(代码片段)

...服务器转发得到)2.采用思路:使用netty的非阻塞网络机制二代码实现2.1服务端代码1.serverpackagecom.ljf.netty.netty.groupchat;importio.netty.bootstrap.ServerBootstrap;importio.netty.channel.*;importio.netty.channel.nio.NioEventLoopGroup;importio.netty.channel.so... 查看详情

网络i/o编程模型11netty常用的3种线程模型

一常用的线程模型1.1传统阻塞I/O服务模型1.特点:采用阻塞IO模式获取输入的数据;每个连接都需要独立的线程完成数据的输入,业务处理数据返回。2.问题:当并发数很大时候,就会常见大量的线程,占用... 查看详情

网络i/o编程模型14netty的http协议服务器(代码片段)

一案例1.1案例描述1.netty服务器使用6666端口监听,浏览器发送的请求:http://localhost:6666/2.服务器收到消息后,向浏览器发送消息“hello,我是服务器,你在干什么!!!”,并对特定资源进行过滤。1.2... 查看详情

网络i/o编程模型17netty框架实现心跳机制(代码片段)

一心跳机制说明IdleStateHandler是netty提供的处理空闲状态的处理器longreaderIdleTime:表示多长时间没有读,就会发送一个心跳,检测包检测是否连接。longwriteIdleTime:表示多长时间没有写,就会发送一个心跳,检测包检测... 查看详情

网络i/o编程模型23netty的出站与入站中handler加载与执行顺序

一出站与入站中handler加载与执行顺序1.1关系梳理1.调用newContext(group,filterName(name,handler),handler)方法,创建一个Context。从这里可以看出来,每次添加一个handler都会常见一个关联的Context。调用addLast方法,将Context追加到... 查看详情

网络编程模型(i/o模型)

首先了解什么是同步(synchronous),异步(asynchronous),阻塞(blocking),非阻塞(nonblocking):同步与异步同步和异步是基于应用程序与操作系统处理I/O所采用的方式同步:是应用程序直接参与I/O读写的操作,么有完毕将会等待... 查看详情

netty原理-从nio开始

...多操作都在一个线程里,线程忙不过来怎么办?此时由于网络请求、I/O读写、业务操作都在一个线程下,会导致在高并发的情况下存在性能瓶颈于是乎有人就提出来将业务操作丢到另一个线程怎么样?于是出现了第三种reactor模... 查看详情

《rocketmq》

...这里列举几个简单的例子,比如在分布式通信领域下对于网络协议的选择上面,像RocketMQ是基于TCP的,而基于RocketMQ内核的AliwareMQ是有基于HTTP协议的网关,同时也提供了MQTT协议网关。除了像网络协议的选择之外,还会有I/O的模型... 查看详情

网络i/o模型(代码片段)

事件驱动模型与传统编程模式不同,事件驱动程序在启动之后,就在那等待,等待什么呢?等待被事件触发。传统编程下也有“等待”的时候,比如在代码块D中,你定义了一个input(),需要用户输入数据。但这与下面的等待不同... 查看详情

网络编程笔记linux系统常见的网络编程i/o模型简述

1.典型的I/O模型根据”UnixNetworkProgrammingVolume1”一书第6.2节的说明,Linux系统支持的典型I/O模型包含下面5种:阻塞I/O(blockingI/O)非阻塞I/O(nonblockingI/O)I/O多路复用(I/Omultiplexing,e.g.selec 查看详情

rpc核心原理

...,即远程过程调用.其中远程需要跨机器,跨机器需要可靠的网络编程技术实现,无论是Java原生的网络编程模型还是Netty都会让代码中出现大量与业务无关的网络编程代码,RPC技术则是为了解决这个问题的.它帮助我们屏蔽网络编程的细... 查看详情

手动搭建i/o网络通信框架2:bio编程模型实现群聊(代码片段)

第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊  在第一章中运用Socket和ServerSocket简单的实现了网络通信。这一章,利用BIO编程模型进行升级改造,实现群聊聊天室。    如图:当一个客户端请... 查看详情

netty(rpc高性能之道)原理剖析

...阻塞、基于事件驱动、高性能、高可靠性和高可定制性的网络客户端和服务器端RPC高性能分析,请参考文章“【总结】RPC性能之道”特点异步、非阻塞、基于事件驱动的NIO框架支持多种传输层通信协议,包括TCP、UDP等开发异步HTT... 查看详情