`

netty实用场景-心跳检测(java)

 
阅读更多

netty主要应用场景心跳检测和网络通信,下面主要介绍心跳检测内容,主要分服务端和客户端两部分。

1、服务端,接收并解析客户端信息,判断客户端是否还活着

EventLoopGroup pGroup = new NioEventLoopGroup();
EventLoopGroup cGroup = new NioEventLoopGroup();

ServerBootstrap b = new ServerBootstrap();
b.group(pGroup, cGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG, 1024)
//设置日志
.handler(new LoggingHandler(LogLevel.INFO))
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel sc) throws Exception {
//Jboss Marshalling解码器MarshallingDecoder和MarshallingEncoder
sc.pipeline().addLast(MarshallingCodeCFactory.buildMarshallingDecoder());
      sc.pipeline().addLast(MarshallingCodeCFactory.buildMarshallingEncoder());
      sc.pipeline().addLast(new ServerHeartBeatHandler());
   }
});

ChannelFuture cf = b.bind(8888).sync();

cf.channel().closeFuture().sync();
pGroup.shutdownGracefully();
cGroup.shutdownGracefully();

 

2、客户端,发送本服务器运行信息,内存、CPU等

EventLoopGroup group = new NioEventLoopGroup();
Bootstrap b = new Bootstrap();
b.group(group)
.channel(NioSocketChannel.class)
.handler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel sc) throws Exception {
//Jboss Marshalling解码器MarshallingDecoder和MarshallingEncoder
sc.pipeline().addLast(MarshallingCodeCFactory.buildMarshallingDecoder());
      sc.pipeline().addLast(MarshallingCodeCFactory.buildMarshallingEncoder());
      sc.pipeline().addLast(new ClienHeartBeattHandler());
   }
});

ChannelFuture cf = b.connect("127.0.0.1", 8888).sync();

cf.channel().closeFuture().sync();
group.shutdownGracefully();

 

3、检查心跳连接,判断一个机器是否或者,需要获取计算机当时运行状态。

sigar.jar包获取,根据本机电脑配置,选择sigar的环境信息,例如我的电脑,window 64位:sigar-amd64-winnt.dll

获取cup信息代码如下:

Sigar sigar = new Sigar();
CpuInfo infos[] = sigar.getCpuInfoList();
CpuPerc cpuList[] = null;

System.out.println("cpu 总量参数情况:" + sigar.getCpu());
System.out.println("cpu 总百分比情况:" + sigar.getCpuPerc());

cpuList = sigar.getCpuPercList();
for (int i = 0; i < infos.length; i++) {// 不管是单块CPU还是多CPU都适用
CpuInfo info = infos[i];
    System.out.println("第" + (i + 1) + "块CPU信息");
    System.out.println("CPU的总量MHz:    " + info.getMhz());// CPU的总量MHz
System.out.println("CPU生产商:    " + info.getVendor());// 获得CPU的卖主,如:Intel
System.out.println("CPU类别:    " + info.getModel());// 获得CPU的类别,如:Celeron
System.out.println("CPU缓存数量:    " + info.getCacheSize());// 缓冲存储器数量
printCpuPerc(cpuList[i]);
}

 

 

4、总结:

使用netty进行心跳检测,主要基于netty的网络通信功能,客户端往服务端发送本服务运行信息(内存、CPU),服务端接受客户端消息,获取服客户端服务器运行情况,根据获取服务器参数检查客户端是否可用。

 

分享到:
评论

相关推荐

    netty-netty-4.1.69.Final.tar.gz

    9. **心跳与空闲检测**:Netty提供心跳机制和空闲检测,以保持连接的活跃状态并及时发现死连接。 10. **文档与社区支持**:Netty有详尽的官方文档和活跃的社区,为开发者提供强大的支持。 下载并解压“netty-netty...

    netty-all-4.1.28.Final.jar

    除了基本的网络通信功能,Netty还提供了一些高级特性,如零拷贝(Zero-Copy)、流式API、心跳检测、连接池等,这些特性都极大地提升了网络通信的性能和可靠性。 在给定的压缩包文件中,还有"redisson-3.7.5.jar",...

    Netty实战代码-2019-Netty-Action-Mayday-2019.zip

    2. **心跳检测机制**:实现了心跳检测功能,防止因长时间无数据交换导致的连接断开。 3. **编解码器**:使用自定义的编解码器进行数据的序列化和反序列化,如长度预编码器和protobuf编码器。 4. **WebSocket支持**:...

    netty实战代码-netty-in-action.zip

    4. **强大的心跳与空闲检测**:Netty支持自定义心跳包和空闲状态检测,能有效地防止网络延迟或连接中断带来的问题。 5. **易于扩展和优化**:Netty的API设计简洁,允许开发者方便地扩展新的协议、处理逻辑和优化...

    netty-netty-4.1.66.Final.tar.gz

    8. **心跳与Keep-Alive**:Netty提供心跳机制和Keep-Alive策略,可以检测并处理空闲连接,确保网络连接的可靠性。 9. **线程安全**:Netty的设计考虑了多线程环境下的并发问题,确保了在高并发场景下的正确性。 10...

    netty-socketio-demo-master

    这个"netty-socketio-demo-master"项目结合了Netty和Socket.IO,展示了如何在Java环境中实现WebSocket长连接。 首先,我们要理解Netty的核心概念。Netty的非阻塞I/O模型基于Java NIO(非阻塞输入/输出)库,允许在...

    Netty实战中的优秀代码-netty-In-Action.zip

    8. **心跳机制与空闲检测**: Netty提供了心跳包和空闲状态检测功能,可以防止因长时间无数据交换导致的连接失效问题。 9. **异常处理**: Netty的异常处理机制能够优雅地处理各种错误情况,比如连接异常、编码解码...

    netty-websocket-example 基于netty的websocket实现示例

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,常用于开发服务器和客户端的通信应用,尤其在处理高并发场景时表现出色。WebSocket 协议则是一种在客户端和服务器之间建立长连接的协议,提供了双向通信的能力...

    netty-api-4.1中文.CHM.7z

    9. **心跳与空闲检测**:Netty支持心跳包机制和连接空闲检测,防止因长时间无数据交换导致的连接死锁。 10. **多协议支持**:Netty不仅支持TCP/UDP/IP,还支持HTTP、FTP、SMTP、SSL/TLS等网络协议,是构建分布式...

    netty-4.1_javaNetty_netty_服务器_

    9. **心跳与保持连接**:了解如何在 Netty 中实现心跳机制,以检测连接是否断开,以及如何维持长连接。 10. **安全性**:研究 SSL/TLS 的配置和使用,以实现安全的网络通信。 通过学习和实践这些知识点,你可以...

    netty-in-action-cn-ChineseVersion.zip

    《Netty实战中文版》是Java开发者深入了解和学习Netty框架的重要参考资料,尤其对于网络编程、高并发场景下的应用开发有着深远的影响。Netty是一个高性能、异步事件驱动的网络应用框架,它为Java开发人员提供了构建...

    netty所需要得jar包

    在Java开发领域,Netty由于其高效、稳定性和灵活性,被广泛应用于各种分布式系统、微服务架构以及高并发场景。下面将详细阐述Netty的核心概念和关键特性,以及`netty-all-4.1.25.Final.jar`这个包在Netty中的作用。 ...

    Netty源码教程-1

    心跳机制用于检测网络连接是否有效,防止空闲连接占用资源。Netty可以通过设置心跳消息和超时时间来实现这一功能。 10. **线程模型** Netty的线程模型可以根据应用需求进行配置,例如,可以选择单线程、多线程...

    基于NIO的Netty框架实战-Netty.zip

    Netty 的核心是基于Java NIO(非阻塞I/O)构建的,这使得Netty能够高效处理大量的并发连接,尤其适合高负载、大数据量的网络应用。NIO是一种I/O模型,与传统的阻塞I/O相比,它允许单个线程处理多个通道(channel)的...

    netty-rpc-master.zip

    1. **心跳机制**:定期发送心跳消息,检查连接状态,确保连接的活性。 2. **负载均衡**:根据服务实例的负载情况,选择合适的节点进行请求分发。 3. **线程池**:管理和调度线程资源,避免并发访问时的资源竞争。 4....

    netty-4.1.16.Final

    5. **强大的心跳与空闲检测机制**:能有效防止网络连接长时间无数据传输导致的连接问题。 6. **安全**:支持SSL/TLS加密,确保通信的安全性。 Netty的常用组件包括: - **ByteBuf**:Netty的高效缓冲区,替代了Java...

    netty4-demos

    8. **心跳机制**:Netty 可以轻松实现心跳检测,保持连接活跃,防止因长时间无数据交换导致的连接断开。 9. **连接管理**:Netty 提供了完整的连接生命周期管理,包括连接建立、连接关闭、异常处理等。 “netty4-...

    netty-socketio api接口文档.7z

    Netty-SocketIO提供了不同的Message类型,如TextMessage、BinaryMessage等,以适应不同场景的需求。 10. **Namespace**: Namespace是Socket.IO的一个特性,允许在同一个服务器上创建多个逻辑隔离的通信空间。开发者...

    Netty实战相关代码-netty-test.zip

    3. **心跳机制**: 实战代码可能包含心跳包的发送和处理,确保连接的活跃性,并检测潜在的网络问题。 4. **异常处理**: 对于网络编程来说,错误处理至关重要。项目可能会展示如何捕获和处理I/O异常,以及如何优雅地...

    netty-learning学习Java源代码.zip

    这个“netty-learning学习Java源代码.zip”压缩包包含的是关于学习Netty框架的Java源代码示例,非常适合那些希望深入理解Netty工作原理以及如何在实际项目中应用它的开发者。 Netty 的核心特性包括: 1. **异步...

Global site tag (gtag.js) - Google Analytics