Netty4.x专题案例
跟着案例学Netty,Netty4.x案例从简单入门到应用实战,全篇37节优秀案例+实战源码[基础篇(13)、中级篇(13)、高级篇(3章+)、源码分析篇(6)],以上章节全部完成。
源码下载;关注公众号:bugstack虫洞栈 | 回复Netty案例源码。
小傅哥
博客 bugstack.cn - 汇总所有文章 | 一线互联网软件开发工程师,擅长编写优秀的代码、中间件开发、架构设计等。| 公众号:bugstack虫洞栈,回复:设计模式、面经手册、字节码编程,可以下载我的PDF!
展开
-
《Netty+JavaFx实战:仿桌面版微信聊天》代码开源、上云部署、视频讲解,只为让你给点个Star!
作者:小傅哥博客:https://bugstack.cn视频:https://mp.weixin.qq.com/s/OmXCY4fTfDpkvjlg5ME0ZA源码:https://github.com/fuzhengwei/NaiveChat本项目是作者小傅哥使用JavaFx、Netty4.x、SpringBoot、Mysql等技术栈和偏向于DDD领域驱动设计方式,搭建的仿桌面版微信...原创 2020-04-26 09:18:23 · 4933 阅读 · 1 评论 -
websocket与下位机通过netty方式通信传输行为信息
微信公众号:bugstack虫洞栈 | 关注获得源码沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。目前已完成的专题有;Netty4.x实战专题案例、用Java实现JVM、基于JavaAgent的全链路监控、手写RPC框架、架构设计专题案例[Ing]等。前言介绍在物联网开发中,常常需要通过网页端来控制设备,包括;获取信息、执行操作、启动停止等...原创 2019-12-01 16:09:18 · 2102 阅读 · 2 评论 -
bugstack虫洞栈 | netty4.1案例文章列表汇总,跟着案例学Netty
itstack-demo-netty netty4.x案例微信公众号:bugstack虫洞栈,欢迎您的关注&获取更多案例与源码!博客栈:https://bugstack.cn本专题针对netty4.x分为从;基础入门篇(九篇)、中级拓展篇(八篇)、高级应用篇(三章),由浅入深实现netty服务功能,介绍netty如何从上手到实战。基础入门篇(九篇)netty案例,netty4.1...原创 2019-08-26 18:24:11 · 4784 阅读 · 10 评论 -
netty案例,netty4.1基础入门篇零《初入JavaIO之门BIO、NIO、AIO实战练习》
前言介绍在Java中,提供了一些关于使用IO的API,可以供开发者来读写外部数据和文件,我们称这些API为Java IO。IO是Java中比较重要知识点,且比较难学习的知识点。并且随着Java的发展为提供更好的数据传输性能,目前有三种IO共存;分别是BIO、NIO和AIO。Java BIO[Blocking I/O] | 同步阻塞I/O模式BIO 全称Block-IO 是一种同步且阻塞...原创 2019-10-06 18:56:14 · 2433 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇一《嗨!NettyServer》
前言介绍凡是新知识都需要有个入门的案例,一个简单的输入输出就能解除你当前遇到的所有疑惑。不要总想着先学理论后学实战。【X东方还135学理论,246学实战,800个床位不锈钢】,本案例专题主要介绍netty4.1的使用。开发环境1、jdk1.8【jdk1.7以下只能部分支持netty】2、Netty4.1.36.Final【netty3.x 4.x 5每次的变化较大,接口类名也随着变化】3...原创 2019-08-20 23:14:04 · 2237 阅读 · 2 评论 -
netty案例,netty4.1基础入门篇二《NettyServer接收数据》
前言介绍繁事都需要一个简单的入门的点,尤其学习程序员行业的知识最快的方式是先运行期helloworld,往往这样一个简单能运行的例子,就能解除你当前遇到的所有疑惑。切记,对于一个初学者,不建议上来就研究理论,实操往往更重要。本章节介绍使用netty端写一个能接收数据的socketServer服务端,通过实现通道适配器ChannelInboundHandlerAdapter.channelRead...原创 2019-08-20 23:15:23 · 1770 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇三《NettyServer字符串解码器》
前言介绍在实际开发中,server端接收数据后我们希望他是一个字符串或者是一个对象类型,而不是字节码,那么;1、在netty中是否可以自动的把接收的Bytebuf数据转String,不需要我手动处理?答;有,可以在管道中添加一个StringDecoder。2、在网络传输过程中有半包粘包的问题,netty能解决吗?答:能,netty提供了很丰富的解码器,在正确合理的使用下就能解决半包粘包问...原创 2019-08-20 23:16:00 · 1774 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇四《NettyServer收发数据》
前言介绍本章节主要介绍服务端在收到数据后,通过writeAndFlush发送ByteBuf字节码向客户端传输信息。因为我们使用客户端模拟器的编码是GBK格式,所以代码中也需要将字节码转换为GBK,否则会乱码。开发环境1、jdk1.8【jdk1.7以下只能部分支持netty】2、Netty4.1.36.Final【netty3.x 4.x 5每次的变化较大,接口类名也随着变化】3、teln...原创 2019-08-20 23:16:35 · 1776 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇五《NettyServer字符串编码器》
前言介绍netty通信就向一个流水channel管道,我们可以在管道的中间插入一些‘挡板’为我们服务。比如字符串的编码解码,在前面我们使用new StringDecoder(Charset.forName(“GBK”))进行字符串解码,这样我们在收取数据就不需要手动处理字节码。那么本章节我们使用与之对应的new StringEncoder(Charset.forName(“GBK”))进行进行字...原创 2019-08-20 23:17:07 · 1608 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇六《NettyServer群发消息》
前言介绍在微信或者QQ的聊天中我们经常会用到一些群聊,把你的信息发送给所有用户。那么为了实现群发消息,在netty中我们可以使用ChannelGroup方式进行群发消息。如果为了扩展验证比如你实际聊天有不同的群,那么可以定义ConcurrentHashMap结构来存放ChannelGroup。ChannelGroup中提供了一些基础的方法;添加、异常、查找、清空、发放消息、关闭等。开发环境1...原创 2019-08-20 23:17:40 · 1754 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇七《嗨!NettyClient》
前言介绍在前六章的案例中使用socket模拟器链接我们的NettyServer,进行通信测试。本章节我们写一个helloworld版的NettyClient客户端,与我们的socket模拟器进行通信。在netty中客户端与服务端的写法基本类似,注意一些细节即可,这也是netty的强大之处,它把nio流与sokcet封装的相当简单易用。开发环境1、jdk1.8【jdk1.7以下只能部分支持ne...原创 2019-08-20 23:18:17 · 1844 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇八《NettyClient半包粘包处理、编码解码处理、收发数据方式》
前言介绍Netty开发中,客户端与服务端需要保持同样的;半包粘包处理,编码解码处理、收发数据方式,这样才能保证数据通信正常。在前面NettyServer的章节中我们也同样处理了;半包粘包、编码解码等,为此在本章节我们可以把这些知识模块开发到NettyClient中。本章节涉及到的知识点有;LineBasedFrameDecoder、StringDecoder、StringEncoder、Chan...原创 2019-08-20 23:18:47 · 1770 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇九《自定义编码解码器,处理半包、粘包数据》
前言介绍在实际应用场景里,只要是支持sokcet通信的都可以和Netty交互,比如中继器、下位机、PLC等。这些场景下就非常需要自定义编码解码器,来处理字节码传输,并控制半包、粘包以及安全问题。那么本章节我们通过实现ByteToMessageDecoder、MessageToByteEncoder来实现我们的需求。环境准备1、jdk1.8【jdk1.7以下只能部分支持netty】2、Net...原创 2019-08-23 09:22:41 · 1602 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇十《关于ChannelOutboundHandlerAdapter简单使用》
前言介绍ChannelOutboundHandlerAdapter与ChannelInboundHandlerAdapter都是继承于ChannelHandler,并实现自己的ChannelXxxHandler。用于在消息管道中不同时机下处理处理消息。ChannelInboundHandler拦截和处理入站事件,ChannelOutboundHandler拦截和处理出站事件。ChannelH...原创 2019-08-28 21:54:06 · 4478 阅读 · 1 评论 -
netty案例,netty4.1基础入门篇十一《netty udp通信方式案例Demo》
前言介绍在Netty通信中UDP的实现方式也非常简单,只要注意部分代码区别于TCP即可。本章节需要注意的知识点 ;NioDatagramChannel、ChannelOption.SO_BROADCASTInternet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 ...原创 2019-10-08 15:11:53 · 1860 阅读 · 0 评论 -
netty案例,netty4.1基础入门篇十二《简单实现一个基于Netty搭建的Http服务》
前言介绍Netty不仅可以搭建Socket服务,也可以搭建Http、Https服务。本章节我们通过一个简单的入门案例,来了解Netty搭建的Http服务,在我们后续的Netty网关服务中会使用到这样的功能点。超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。在后端开发中接触HTTP协议的比较多,目前大部分都是基于Serv...原创 2019-09-09 20:30:49 · 1790 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇一《Netty与SpringBoot整合》
前言介绍在实际的开发中,我们需要对netty服务进行更多的操作,包括;获取它的状态信息、启动/停止、对客户端用户强制下线等等,为此我们需要把netty服务加入到web系统中,那么本章节介绍如何将Netty与SpringBoot整合。Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使...原创 2019-08-22 09:15:32 · 2284 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇二《Netty使用Protobuf传输数据》
前言介绍在netty数据传输过程中可以有很多选择,比如;字符串、json、xml、java对象,但为了保证传输的数据具备;良好的通用性、方便的操作性和传输的高性能,我们可以选择protobuf作为我们的数据传输格式。目前protobuf可以支持;C++、C#、Dart、Go、Java、Python等,也可以在JS里使用。知识点;ProtobufDecoder、ProtobufEncoder、Pr...原创 2019-08-22 09:16:07 · 1758 阅读 · 3 评论 -
netty案例,netty4.1中级拓展篇三《Netty传输Java对象》
前言介绍Netty在实际应用级开发中,有时候某些特定场景下会需要使用Java对象类型进行传输,但是如果使用Java本身序列化进行传输,那么对性能的损耗比较大。为此我们需要借助protostuff-core的工具包将对象以二进制形式传输并做编码解码处理。与直接使用protobuf二进制传输方式不同,这里不需要定义proto文件,而是需要实现对象类型编码解码器,用以传输自定义Java对象。pro...原创 2019-08-22 09:16:39 · 1820 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇四《Netty传输文件、分片发送、断点续传》
前言介绍1、在实际应用中我们经常使用到网盘服务,他们可以高效的上传下载较大文件。那么这些高性能文件传输服务,都需要实现的分片发送、断点续传功能。2、在Java文件操作中有RandomAccessFile类,他可以支持文件的定位读取和写入,这样就满足了我们对文件分片的最基础需求。3、Netty服务端启动后,可以向客户端发送文件传输指令;允许接收文件、控制读取位点、记录传输标记、文件接收完成。...原创 2019-08-22 09:17:24 · 2837 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇五《基于Netty搭建WebSocket,模仿微信聊天页面》
前言介绍本章节我们模仿微信聊天页面,开发一个基于Netty搭建WebSocket通信案例。Netty的应用方面非常广;聊天、MQ、RPC、数据等等,在5G到来的时候更加需要大量数据传输,Netty的应用也会更加广阔。1、这个案例使用SpringBoot+Netty+WebSocket搭建功能。2、使用Netty提供的HttpServerCodec、HttpObjectAggregator、...原创 2019-08-09 21:41:35 · 2740 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇六《SpringBoot+Netty+Elasticsearch收集日志信息数据存储》
前言介绍在实际的开发场景中,我们希望将大量的业务以及用户行为数据存储起来用于分析处理,但是由于数据量较大且需要具备可分析功能所以将数据存储到文件系统更为合理。尤其是一些互联网高并发级应用,往往数据库都采用分库分表设计,那么将这些分散的数据通过binlog汇总到一个统一的文件系统就显得非常有必要。开发环境1、jdk1.8【jdk1.7以下只能部分支持netty】2、Netty4.1.36.F...原创 2019-08-22 09:18:02 · 1934 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇七《Netty请求响应同步通信》
前言介绍在我们实现开发RPC框架的时候,需要选择socket的通信方式。而我们知道一般情况下socket通信类似与qq聊天,发过去消息,什么时候回复都可以。但是我们RPC框架通信,从感觉上类似http调用,需要在一定时间内返回,否则就会发生超时断开。这里我们选择netty作为我们的socket框架,采用future方式进行通信。Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于...原创 2019-09-04 09:04:02 · 1917 阅读 · 3 评论 -
netty案例,netty4.1中级拓展篇八《Netty心跳服务与断线重连》
前言介绍在我们使用netty中,需要监测服务是否稳定以及在网络异常链接断开时候可以自动重连。需要实现监听;f.addListener(new MyChannelFutureListener())环境准备1、jdk1.8【jdk1.7以下只能部分支持netty】2、Netty4.1.36.Final【netty3.x 4.x 5每次的变化较大,接口类名也随着变化】代码示例itstack-...原创 2019-09-04 09:05:07 · 1804 阅读 · 1 评论 -
netty案例,netty4.1中级拓展篇九《Netty集群部署实现跨服务端通信的落地方案》
前言介绍Netty的性能非常好,在一些小型用户体量的socket服务内,仅部署单台机器就可以满足业务需求。但当遇到一些中大型用户体量的服务时,就需要考虑讲Netty按照集群方式部署,以更好的满足业务诉求。但Netty部署集群后都会遇到跨服务端怎么通信,也就是有集群服务X和Y,用户A链接服务X,用户B链接服务Y,那么他们都不在一个服务内怎么通信?本章节将介绍一种实现方式案例,以满足跨服务之间的用...原创 2019-09-04 09:05:37 · 4924 阅读 · 3 评论 -
netty案例,netty4.1中级拓展篇十《Netty接收发送多种协议消息类型的通信处理方案》
前言介绍在我们实际做应用级开发的过程中,客户端与服务端需要发送多种消息类型,比如一个聊天室场景包括的消息类型;登录验证、组建群聊、发送消息、退出登录等等,但如果我们都是用统一对象加if判断来分别转换,那么对后期的维护成本就会非常大,这样的代码方式也不是一个面向对象开发的思维。面向对象的开发思路,经常会把很多if、switch等逻辑抽象成对应的接口和抽象类,以及加入工厂方式对服务进行动态编排。那...原创 2019-09-10 13:43:08 · 2359 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇十一《Netty基于ChunkedStream数据流切块传输》
前言介绍在Netty这种异步NIO框架的结构下,服务端与客户端通信过程中,高效、频繁、大量的写入大块数据时,因网络传输饱和的可能性就会造成数据处理拥堵、GC频繁、用户掉线的可能性。那么由于写操作是非阻塞的,所以即使没有写出所有的数据,写操作也会在完成时返回并通知ChannelFuture。当这种情况发生时,如果仍然不停地写入,就有内存耗尽的风险。所以在写大块数据时,需要对大块数据进行切割发送处理...原创 2019-09-18 09:23:02 · 2930 阅读 · 0 评论 -
netty案例,netty4.1中级拓展篇十二《Netty流量整形数据流速率控制分析与实战》
作者:付政委 | 关注微信公众号:bugstack虫洞栈,获取专题案例源码前言介绍你是否使用过某盘,在前几年我们使用的时候速度飞快,上传下载嗖嗖嗖。但是近年来只要不办会员,速度慢的像蜗牛,当然人家也得赚钱我们能理解。那么这样的限速是怎么实现的呢,我们这个案例使用Netty的流量整形进行限速传输,测试过程中当你把流量整形功能去掉后你就是年费VIP。流量整形(Traffic Shaping...原创 2019-09-19 09:09:32 · 3260 阅读 · 3 评论 -
netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》
前言介绍SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。在实际通信过程中,如果不使用SSL那么信息就是明文传输,从而给非法分子一些可乘之机;窃听风险[eavesdropping]:第三方可以获知通信内容...原创 2019-09-23 21:22:47 · 2168 阅读 · 0 评论 -
netty案例,netty4.1高级应用篇一,手写RPC框架第一章《自定义配置xml》
案例介绍本案例通过三个章节来实现一共简单的rpc框架,用于深入学习rpc框架是如何通信的,当前章节主要介绍如何自定义xml文件并进行解析。想解析自定义的xml首先定义自己的xsd文件,并且实现spring的NamespaceHandlerSupport、BeanDefinitionParser,两个方法进行处理。远程过程调用协议RPC(Remote Procedure Call)—远程过程...原创 2019-08-23 19:27:18 · 1953 阅读 · 0 评论 -
netty案例,netty4.1高级应用篇二,手写RPC框架第二章《netty通信》
案例介绍在我们实现rpc框架的时候,需要选择socket的通信方式。而我们知道一般情况下socket通信类似与qq聊天,发过去消息,什么时候回复都可以。但是我们rpc框架通信,从感觉上类似http调用,需要在一定时间内返回,否则就会发生超时断开。这里我们选择netty作为我们的socket框架,采用future方式进行通信。Netty是由JBOSS提供的一个java开源框架。Netty提供...原创 2019-08-23 19:27:55 · 1729 阅读 · 0 评论 -
netty案例,netty4.1高级应用篇三,手写RPC框架第三章《RPC中间件》
案例介绍结合上面两章节,本章将实现rpc的基础功能;提供一给rpc中间件jar给生产端和服务端。技术点;1、注册中心,生产者在启动的时候需要将本地接口发布到注册中心,我们这里采用redis作为注册中心,随机取数模拟权重。2、客户端在启动的时候,连接到注册中心,也就是我们的redis。连接成功后将配置的生产者方法发布到注册中心{接口+别名}。3、服务端配置生产者的信息后,在加载xml时候由...原创 2019-08-23 19:28:34 · 1700 阅读 · 0 评论 -
netty案例,netty4.1高级应用篇四,《基于Netty实践搭建的物联网网关iot-gatway》
作者:草非莫鱼 | 《物联网网关实战》 | 关注公众号:bugstack虫洞栈,回复iot-gateway获取案例源码前言介绍物联网平台框架网关设计图物联网平台是很大的一个摊子,在设计上,此次上传了关系设计图,业务框架设计图欠奉。在代码上,我目前也只是做了两版版网关,支持多规约;多规约组解服务,目前也只支持3761规约的组装和解析;接口做了一个框架,改了几版,开始就是提供ja...原创 2019-09-18 13:53:17 · 4933 阅读 · 0 评论 -
netty案例,netty4.1源码分析篇一《NioEventLoopGroup源码分析》
本章节我们从一个基础构建的基础NettyServer来分析NioEventLoopGroup源码,其中包括了;EventLoopGroup事件循环组、NioEventLoopGroup异步事件循环组、MultithreadEventLoopGroup多线程事件循环组等。启动NettyServer的模版代码private void bing(int port) { EventLoopGro...原创 2019-09-17 20:20:58 · 1557 阅读 · 0 评论 -
netty案例,netty4.1源码分析篇二《ServerBootstrap配置与绑定启动》
结合上一章节介绍NioEventLoopGroup,本章节继续介绍ServerBootstrap相关代码。启动NettyServer的模版代码private void bing(int port) { EventLoopGroup parentGroup = new NioEventLoopGroup(); EventLoopGroup childGroup = new ...原创 2019-10-08 15:16:52 · 1514 阅读 · 0 评论 -
netty案例,netty4.1源码分析篇三《Netty服务端初始化过程以及反射工厂的作用》
本章节主要分析Netty在启动过程中的配置内容以及最终调用bind方法是如何启动Netty服务端的。Netty服务启动模板代码private void bing(int port) { //配置服务端NIO线程组 EventLoopGroup parentGroup = new NioEventLoopGroup(); //NioEventLoopGroup extends Multi...原创 2019-10-08 15:17:27 · 1520 阅读 · 0 评论 -
netty案例,netty4.1源码分析篇四《ByteBuf的数据结构在使用方式中的剖析》
前言介绍在Netty中ByteBuf是一个非常重要的类,它可以以高效易用的数据结构方式来满足网络通信过程中处理数据包内字节码序列的移动。数据结构 +-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | | ...原创 2019-09-15 13:49:40 · 1487 阅读 · 0 评论 -
netty案例,netty4.1源码分析篇五《一行简单的writeAndFlush都做了哪些事》
前言介绍对于使用netty的小伙伴来说,ctx.writeAndFlush()再熟悉不过了,它可以将我们的消息发送出去。那么它都执行了那些行为呢,是怎么将消息发送出去的呢。 I/O Request via {@lin...原创 2019-09-20 23:18:02 · 1609 阅读 · 0 评论 -
netty案例,netty4.1源码分析篇六《Netty异步架构监听类Promise源码分析》
分析Promise之前我们先来看两个单词;Promise、Future>Promise v. 许诺;承诺;答应;保证;使很可能;预示Future n. 将来;未来;未来的事;将来发生的事;前景;前途;前程他们的含义都是对未来即将要发生的事情做相应的处理,这也是在异步编程中非常常见的类名。Netty是一个异步网络处理框架,在实现中大量使用了Future机制,并在Java自带Future的基础上,增加了Promise机制。这两个实现类的目的都是为了使异步编程更加方便使用。原创 2019-09-26 17:28:41 · 1592 阅读 · 0 评论