NIO&Netty
文章平均质量分 93
_院长大人_
这个作者很懒,什么都没留下…
展开
-
基于Springboot+netty 的IM聊天室&弹幕
基于Springboot+netty 的IM聊天室&弹幕原创 2024-08-13 16:14:06 · 465 阅读 · 1 评论 -
Netty核心技术十一--用Netty 自己 实现 dubbo RPC
远程 过程调用,是一个计算机 通信协议。该协议允许运 行于一台计算机的程序调 用另一台计算机的子程序, 而程序员无需额外地为这 个交互作用编程两个或多个应用程序都分 布在不同的服务器上,它 们之间的调用都像是本地 方法调用一样(如图)常见的 RPC 框架有: 比较知名的如阿里的Dubbo、google的gRPC、Go语言的rpcx、Apache的thrift, Spring 旗下的 Spring Cloud。原创 2023-07-15 15:54:24 · 2481 阅读 · 1 评论 -
Netty核心技术十--Netty 核心源码剖析
每当ServerSocket创建一个新的连接,就会创建一个Socket,对应的就是目标客户端。每一个新创建的Socket 都将会分配一个全新的 ChanneIPipeline(以下简称 pipeline)每一个ChannelPipeline内部都含有多个ChannelHandlerContext(以下简称 Context)他们一起组成了双向链表,这些Context 用于包装我们调用addLast 方法时添加的ChannelHandler (以下简称handler)关系图。原创 2023-07-11 10:36:11 · 1082 阅读 · 0 评论 -
Netty核心技术九--TCP 粘包和拆包及解决方案
要求客户端发送 5 个 Message 对象, 客户端每次发送一个Message对象服务器端每次接收一个Message, 分5次进行解码,每读取到一个Message,会回复一个Message 对象 给客户端.示例1的代码基础上做扩充len:每个数据包的长度content:每个数据包的内容//协议包 public class MessageProtocol {//关键 private byte [ ] content;return len;} }个人总结。原创 2023-07-08 14:03:50 · 776 阅读 · 0 评论 -
Netty核心技术八--Netty编解码器和handler的调用机制
netty的组件设计:Netty的主要组件有ChannelEventLoopChannelPipe等例如,实现ChannelInboundHandler接口(或ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些数据会被业务逻辑处理。当要给客户端发送响应时,也可以从ChannelInboundHandler冲刷数据。**业务逻辑通常写在一个或者多个ChannelInboundHandler中。原创 2023-07-02 10:49:31 · 1588 阅读 · 0 评论 -
Netty核心技术七--Google Protobuf
Protobuf 是Google 发布的开源项目,全称是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC[远程过程调用 remote procedure call ] 数据交换格式。目前很多公司 http+json 向 tcp+protobuf转型Protobuf 是以 message 的方式来管理数据的.支持跨平台、跨语言,即[客户端和服务器端可以是不同的语言编写的](支持目前绝大多数语言,例如 C++、C#、Java、python 等)原创 2023-06-21 18:23:07 · 452 阅读 · 0 评论 -
Netty核心技术六--Netty核心模块组件
Bootstrap 意思是引导,一个 Netty 应用通常由一个Bootstrap 开始,**主要作用是配置整个 Netty 程序,串联各个组件**,Netty 中 **Bootstrap 类是客户端程序的启动引导类**,**ServerBootstrap 是服务端启动引导类**原创 2023-06-17 14:02:41 · 759 阅读 · 0 评论 -
Netty核心技术五--Netty高性能架构设计
1. 基于 I/O 复用模型:**多个连接共用一个阻塞对象**,应用程序只需要在一个阻塞对象等待,无需阻塞等待所有连接。当某个连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理Reactor 对应的叫法: 1. `反应器模式` 2. `分发者模式(Dispatcher)` 3. `通知者模式(notifier)`2. 基于线程池复用线程资源:不必再为每个连接创建线程,**将连接完成后的业务处理任务分配给线程进行处理,一个线程可以处理多个连接的业务。**原创 2023-06-04 14:39:22 · 850 阅读 · 0 评论 -
Netty核心技术四--Netty概述
Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络IO程序原创 2023-06-18 11:23:22 · 605 阅读 · 0 评论 -
Netty核心技术三--NIO编程
Java NIO的非阻塞模式,使一个线程从某通道发送请求或者读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而**不是保持线程阻塞**,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。非阻塞写也是如此,一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。原创 2023-05-20 14:42:19 · 749 阅读 · 0 评论 -
Netty核心技术二--BIO编程
Java BIO 就是传统的java io 编程,其相关的类和接口在java.io: 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,程序简单易理解。原创 2023-05-20 14:40:46 · 652 阅读 · 0 评论 -
Netty核心技术一--Netty介绍和应用场景
Netty 是由JBOSS提供的一个 Java 开源框架,现为Github上的独立项目。Netty 是一个异步的基于事件驱动的网络应用框架用以快速开发高性能、高可靠性的网络 IO 程序。利用Ajax技术对异步进行理解左图为没有使用Ajax的B/S,右图为使用Ajax的B/S左图解析:客户通过浏览器访问服务器的流程是固定阻塞的,必须是1->2->3,浏览器想继续向下执行必须等待服务器的响应右图解析:客户通过浏览器访问服务器,浏览器想继续向下执行不用。原创 2023-05-14 12:43:02 · 476 阅读 · 0 评论