netty
LUK流
大数据/java web
展开
-
关于Actor模型,CSP模型,Reactor模型,Proactor模型
1. Actor模型传统的并发模型主要由两种实现的形式,一是同一个进程下,多个线程天然的共享内存,由程序对读写做同步控制(有锁或无锁). 二是多个进程通过进程间通讯或者内存映射实现数据的同步.Actors模型更多的使用消息机制来实现并发,目标是让开发者不再考虑线程这种东西,每个Actor最多同时只能进行一样工作,Actor内部可以有自己的变量和数据.在Actors模型中,每个Actor都有一...原创 2020-02-22 21:17:11 · 2369 阅读 · 0 评论 -
netty(九): 流量整形
1. 定义流量整形是为了控制当前服务的流量输出,保证下游节点的正常处理,如图所示,将流量洪峰放入队列中,使用令牌桶算法来保证流量不会突破输出极限,保证下游收到的数据都是平稳的。分为:1) GlobalTrafficShapingHandler:全局流量整形,放在服务器端,表示所有链接该服务器的channel整体的流量不超过阈值2)ChannelTrafficShapingHandler:...原创 2020-02-19 21:23:05 · 2188 阅读 · 0 评论 -
netty(八):AttributeKey和AttributeMap实现不同channelContext中传递数据
1.AttributeMap在netty4中将数据保存在channel中使用的是AttributeMap,如图,因为AbstractChannelHandlerContext实现了ChannelHandlerContext,而ChannelHandlerContext继承了AttributeMap。故ChannelInboundHandlerAdapter实现了AttributeMap,可以把...原创 2019-09-19 18:17:07 · 2632 阅读 · 0 评论 -
netty(七):断线重连和心跳
1.客户端客户端调用了系统的API,利用WriteTimeoutHandler(3)实现心跳检测,自定义的ClientTimerHandler只是实现了读取数据的作用。package com.qianliu.server;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;imp...原创 2019-09-19 17:52:24 · 283 阅读 · 0 评论 -
netty(六):netty整合protobuf
1. 配置protoBuf在IDEA中安装检查编译proto的插件。配置环境下载protobuf编译环境,https://github.com/google/protobuf/releases配置好环境变量。写一个Message,使用命令行编译protoc --java_out=src/main/java src/proto/message.proto生成java的Messa...原创 2019-08-26 18:14:21 · 469 阅读 · 0 评论 -
netty(五):粘包拆包
1.拆包粘包问题解决netty 使用 tcp/ip 协议传输数据。而 tcp/ip 协议是类似水流一样的数据传输方式。多次访问的时候有可能出现数据粘包的问题解决这种问题的方式如下:定长数据流客户端和服务器,提前协调好,每个消息长度固定。(如:长度 10)。如果客户端或服务器写出的数据不足 10,则使用空白字符补足(如:使用空格)。特殊结束符客户端和服务器,协商定义一个特殊的分隔符...原创 2019-08-26 11:55:29 · 146 阅读 · 0 评论 -
netty(四):websocket编写
1. 服务器端主函数几乎没有太多变化public class WSServer { public static void main(String[] args) throws InterruptedException { EventLoopGroup mainGroup = new NioEventLoopGroup(); EventLoopGroup...原创 2019-08-23 17:20:09 · 278 阅读 · 0 评论 -
netty(三):NIO相关概念,Reactor模型和 channel和pipeline,handler之间的关系
1.BIO,NIO,AIO区别2.netty的Reactor模型主从模式的编程实现:public class HelloServer { public static void main(String[] args) { EventLoopGroup bossGroup = new NioEventLoopGroup();// 主线程组,专门管理客户的连接 ...原创 2019-08-23 15:33:38 · 689 阅读 · 0 评论 -
netty(二): netty的helloworld
服务端package com.qianliu.server;import org.jboss.netty.bootstrap.ServerBootstrap;import org.jboss.netty.channel.*;import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;import org...原创 2019-08-23 11:53:52 · 114 阅读 · 0 评论 -
netty(一): BIO和NIO的差异
1. BIOpackage com.qianliu.OIO;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.u...原创 2019-08-23 10:41:53 · 286 阅读 · 0 评论