Mina/netty
攻城狮Luke(刘健彬)
在深圳某IOT企业任职技术专家,擅长的技术领域包括Spring Cloud、Spring Cloud Alibaba、微服务架构、Docker、Kubernetes、分布式事务、高并发多线程、消息队列、数据库、数据结构与算法、网络数据安全、JVM、DevOps等,拥有丰富的互联网一线开发与架构经验。开源分布式事务框架milo作者,CSDN知名博主。
展开
-
mina框架详解
Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型。Mina 主要有1.x转载 2015-08-08 19:45:52 · 3835 阅读 · 0 评论 -
java支持的四种I/O模型
同步、异步、阻塞、非阻塞都是和I/O(输入输出)有关的概念,最简单的文件读取就是I/O操作。而在文件读取这件事儿上,可以有多种方式。本篇会先介绍一下I/O的基本概念,通过一个生活例子来分别解释下这几种I/O模型,以及Java支持的I/O模型。基本概念在解释I/O模型之前,我先说明一下几个操作系统的概念文件描述符fd文件描述符(file descriptor)是计算机科学中的一个...转载 2018-12-29 15:21:52 · 420 阅读 · 0 评论 -
Netty高并发性能优化
最近在写一个后台中间件的原型,主要是做消息的分发和透传。因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本。Netty果然效率很高,不用做太多努力就能达到一个比较高的tps。但使用过程中也碰到了一些问题,个人觉得都是比较经典而在网上又不太容易查找到相关资料的问题,所以在此总结一下。1.Context Switch过高压测时用nmon监控内核,发...转载 2018-09-28 17:24:26 · 24808 阅读 · 4 评论 -
Netty之简洁版线程模型架构图
线程模型架构Linux平台下查询TCP协议栈命令netstat -nat |grep port查询内存工具 系统:top、free -h和vmstat java的:jstack、jmap和jstat...原创 2018-06-20 15:46:31 · 745 阅读 · 0 评论 -
Netty之ChannelOption
在用netty作为底层网络通信的时候关于ChannelOption的参数让我一直模糊不清楚,于是去看一下linux网络编程,发现ChannelOption的各种属性在套接字选项中都有对应 下面简单的总结一下ChannelOption的含义已及使用的场景 1、ChannelOption.SO_BACKLOG ChannelOption.SO_BACKLOG对应的是tcp/ip...转载 2018-06-19 14:04:20 · 302 阅读 · 0 评论 -
Netty之断线重连解决方案
用Netty实现长连接服务,当发生下面的情况时,会发生断线的情况。网络问题客户端启动时服务端挂掉了,连接不上服务端客户端已经连接服务端,服务端突然挂掉了其它问题等...如何解决上面的问题?1.心跳机制检测连接存活长连接是指建立的连接长期保持,不管有无数据包的发送都要保持连接通畅。心跳是用来检测一个系统是否存活或者网络链路是否通畅的一种方式,一般的做法是客户端定时向服务端发送心跳包,服务端收到心跳包...转载 2018-06-07 11:54:55 · 8874 阅读 · 1 评论 -
Netty之ChannelHandler和ChannelPipeline
一、前言 前面学习了Netty的ByteBuf,接着学习ChannelHandler和ChannelPipeline。二、ChannelHandler和ChannelPipeline 2.1 ChannelHandler 在ChannelPipeline中,ChannelHandler可以被链在一起处理用户逻辑。 1. Channel生命周期 Channel接口定义了一个简单但是强大的状...转载 2018-06-07 10:12:44 · 250 阅读 · 0 评论 -
Netty线程模型
1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1.1.2. 多线程随着硬件性能的提升,CPU的核数越来越越多,很多服务器标配已经达到32或64核。通...转载 2018-05-31 09:29:29 · 1917 阅读 · 0 评论 -
高性能IO模型浅析
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexi转载 2017-04-10 11:27:38 · 361 阅读 · 0 评论 -
netty的一些杂谈
netty主要是一个异步的nio server/client framework 它采用了event driven模式 netty主要针对异步(asynchronous)请求的处理 netty channel可以理解为传输请求的另外一种抽象, 是netty最核心的概念, 它既可以表示一个socket, 也可以表示一个file, 总之就是I/O的一个抽象. chann转载 2016-05-17 11:20:57 · 647 阅读 · 0 评论 -
基于Netty5.0高级案例一之NettyWebsocket
基于Netty5.0高级案例一之NettyWebsocket2015-1-1 付政委 Netty5.0 高级篇前言介绍: 本案例主要介绍如何使用Netty开发websocket。环境需求: 1、jdk1.7 2、Eclipse 3、Netty5.0 4、支持websocket的浏览器[火狐]工程截转载 2016-05-16 11:13:02 · 17808 阅读 · 3 评论 -
使用Netty实现通用二进制协议的高效数据传输
使用Netty实现通用二进制协议的高效数据传输Netty是一个高性能的NIO通信框架,提供异步的、事件驱动的网络编程模型。使用Netty可以方便用户开发各种常用协议的网络程序。例如:TCP、UDP、HTTP等等。Netty的最新版本是3.2.7,官网地址是:http://www.jboss.org/netty本文的主要目的是基于Netty实现一个通用二进制协议的高效数据传输。协议是转载 2015-12-24 11:13:43 · 5304 阅读 · 0 评论 -
深入理解SimpleChannelInboundHandler
因项目需要,需要了解 Netty 这款号称 "高性能Java网络编程" 框架。拿起一本《Netty In Action》开始研究,在第2章的例子中,发现 Echo 服务端使用的ChannelHandler是 ChannelInboundHandlerAdapter ,而 Echo 客户端使用的却是 SimpleChannelInboundHandler 。一脸茫然,不知所措,只能点进去看各自...转载 2019-04-24 16:30:28 · 22185 阅读 · 1 评论