使用NETTY之前,当然需要先看一下所带的samples。
简单的hello world,可能大家都没啥感觉,觉得NETTY其实很简单:
1. 对于服务器端,需要写下面几个:
a. 写个ServerHandler,来接收并处理服务端业务逻辑;
b. 照葫芦画瓢整个Pineline,比如ServerPipelineFactory,把一些现成的和自己的ServerHandler串糖葫芦那样串起来;
c. 最后写个简单的Server,把ServerBootstrap和ServerPipelineFactory装起来;
d. 好吧,再加一些优化/适合的参数,比如child.tcpNoDelay,child.keepAlive之类的。
典型代码如下:
ServerBootstrap bootstrap = new ServerBootstrap(
new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool(),
threadpool_worker)
);
// Parameters for tuning
bootstrap.setOption("child.tcpNoDelay", true);
//bootstrap.setOption("child.keepAlive", true);
// Set up the event pipeline factory.
bootstrap.setPipelineFactory(serverPipelineFactory);
// Bind and start to accept incoming connections.
bootstrap.bind(new InetSocketAddress(port));
// please use System.out directly here. DON'T CHANGE IT!!!
System.out.println("====Server is ready to rock on port:" + port + "====");
2. 对于客户端,其实与服务器端非常相似,如下:
a. 写个ClientHandler,来接收并处理客户端业务逻辑;
b. 照葫芦画瓢整个Pineline,比如ClientPipelineFactory,把一些现成的和自己的ClientHandler串糖葫芦那样串起来;
c. 最后写个简单的Client,把ClientBootstrap和ClientPipelineFactory装起来。
典型代码如下:
// Set up.
bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
// Configure the event pipeline factory.
bootstrap.setPipelineFactory(new ClientPipelineFactory());
// Make a new connection.
logger.debug("trying to connect to host[{}] and port[{}]...", host, port);
channelFuture = bootstrap.connect(new InetSocketAddress(host, port));
// Wait until the connection is made successfully.
channel = channelFuture.awaitUninterruptibly().getChannel();
logger.debug("successfully connected to host[{}] and port[{}]!", host, port);
一般而言,hello world就可以玩了。
但对于实战性的应用开发,问题才刚刚开始:
1. 针对NETTY,合理的设计模式如何运用?
对于服务端,往往是在ServerHandler里,接收=》处理=》write,一般关照好messageReceived方法即可,比较简单,至于如何搞定你的业务逻辑设计,跟NETTY无关,在此不谈。
对于客户端,我们不得不关心,有几个要点:
a. 收发是异步的,如果发送者只管发而不管后果,这也可以不谈,跟Server端一样,非常简单
b. 如果发送者发了还要管收,这就来劲了,怎么玩?这是我们要探讨的第一个问题,我先抛出来,接下来再议
2. 为了引入高性能的binary protocol, 引入了google的protobuf,暂时没发现问题,如果是同构平台(java)的话,堪称完美,但由于netty针对protocol有专门的Decoder/Encoder。
问题二是:我google了半天,好像没有教好的案例,可以实现异构平台(如.net)访问NETTY + Protobuf的参考?
各位如有经验的,可以来分享、讨论,我会继续跟进。
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Netty和Protobuf来开发一个实时聊天室实例。Netty是一个高性能、异步事件驱动的网络应用框架,适用于Java平台,它简化了TCP、UDP和HTTP等协议的服务器和客户端应用开发。而Protobuf...
Netty和Protobuf是两种在IT领域中广泛使用的开源技术,尤其在开发高效、高性能的网络应用程序时。本文将深入探讨这两个技术,并结合一个入门案例,帮助初学者理解如何将它们结合起来使用。 Netty是一个高性能、异步...
为了实现高效的数据通信,开发者常常会结合其他技术,如Netty和ProtoBuf。本篇文章将深入探讨如何在Unity中利用ProtoBuf-net与Netty进行通信。 ProtoBuf(Protocol Buffers)是Google提出的一种数据序列化协议,它...
在本文中,我们将深入探讨一个名为“cdeer-im”的开源项目,它是一个基于Netty、Redis和protobuf技术栈构建的IM服务器。 **Netty详解** Netty是一个高性能、异步事件驱动的网络应用程序框架,适用于开发可维护的高...
综上所述,通过结合使用Netty和Thrift,可以有效地解决传统RPC框架存在的性能瓶颈问题,实现高并发和高性能的服务。这种组合不仅可以大幅提高系统的吞吐量,还能降低延迟,是现代分布式系统中不可或缺的技术栈之一。
总的来说,Netty发送protoBuf格式数据的过程包括定义数据结构、生成Java类、编写编码解码器、配置Netty管道以及在服务器和客户端之间发送和接收消息。这种结合提供了强大而高效的网络通信解决方案,适用于多种应用...
在本示例中,我们将深入探讨如何利用 Netty 和 Google 的 Protocol Buffers(protobuf)来构建一个简单的服务端和客户端通信系统。 Protocol Buffers 是 Google 提供的一种数据序列化协议,它可以将结构化数据序列...
在本文中,我们将深入探讨如何利用 Netty 和 WebSocket 技术实现通信,以及 `callServer` 文件可能包含的内容。 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它为 Web 应用程序提供了低延迟、双向通信...
总结来说,“android netty cli +protobuf示例”展示了如何在Android客户端利用Netty的异步网络通信能力和Protobuf的数据序列化特性,构建一个高效的即时通讯系统。这个示例涵盖了从消息定义到网络通信的全过程,...
本文将深入探讨如何使用Netty框架结合Protocol Buffers(protobuf)进行序列化,并实现数据推送至Android客户端。 Netty是一个高性能、异步事件驱动的网络应用框架,适用于开发可维护的高性能协议服务器和客户端。...
在本文中,我们将深入探讨Netty如何实现HTTP、WebSocket和Protobuf这三种通信方式,以及它们在服务器与客户端通信中的应用。 ### Netty与HTTP HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从...
在构建一个基于Android的聊天室应用时,使用Netty和Protocol Buffers(protobuf)是一种高效且灵活的方法。本文将深入探讨这两个技术如何协同工作,以及它们在实现聊天室功能中的关键作用。 首先,让我们理解一下...
本话题将探讨如何使用C++客户端与Java(通过Netty框架)服务器端实现TCP通讯,并涉及数据序列化工具Protocol Buffers(protobuf)在两者之间的交互。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节...
本实例主要探讨如何利用Java、Spring Boot和Netty来创建一个带有心跳机制的物联网系统,并提供完整的源代码供参考。 **Java在物联网中的角色** Java作为跨平台的编程语言,拥有广泛的应用场景,特别是在物联网(IoT)...
本文将深入探讨如何利用Netty和Protobuf构建一个客户端-服务器系统,并进行负载测试。 首先,我们要理解Netty的核心特性。Netty采用非阻塞I/O模型,通过NIO(非阻塞输入/输出)和EPOLL(Linux下的高性能网络I/O事件...
在本文中,我们将深入探讨如何将Spring Boot与Netty结合,并使用Protocol Buffers(protobuf)作为数据传输格式,实现心跳检测、断开重连、数据上传以及主动推送等功能。这是一套综合性的技术栈,旨在构建高效、稳定...
Netty和Protocol Buffers(简称Protocol Buffers,protobuf)是两个在IT行业中广泛使用的开源工具,主要用于构建高效、可靠的网络通信系统。Netty是一个高性能、异步事件驱动的网络应用程序框架,它使得开发者能够...
本文将深入探讨一个名为"chat_netty4.zip"的项目,该项目利用了Netty、Protobuf以及SwingBuilder这三者的技术,构建了一个适合初学者学习的聊天室应用。让我们一起走进这个项目,了解其背后的技术原理和实现细节。 ...
solace-netty应该包含一套完善的异常处理和重试机制,以应对可能出现的各种问题。例如,当网络通信失败或服务响应超时时,客户端可以自动重试请求,保证业务的连续性。 8. **安全性与认证** 为了保证通信的安全性...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在深入探讨Netty的知识点之前,我们先简单理解一下标题和描述所暗示的信息。 标题 "netty-netty-4.1.32....