心跳机制
心跳机制是常用的一个健康监测的机制,说白了就是每隔一段时间向服务器发送一个心跳的报文,服务收到报文后,就认为当前的客户端在活动的状态,否则会进入异常的机制,比如说主从切换
。
既然存在一个通信,就一定会有服务端和客户端。服务端开启监听,客户端发起心跳报文,然后服务就再次响应。
心跳机制是常用的一个健康监测的机制,说白了就是每隔一段时间向服务器发送一个心跳的报文,服务收到报文后,就认为当前的客户端在活动的状态,否则会进入异常的机制,比如说主从切换
。
既然存在一个通信,就一定会有服务端和客户端。服务端开启监听,客户端发起心跳报文,然后服务就再次响应。
IO本质上是对数据缓冲区的读写,主要分为文件IO和网络IO,基本模型有很多,可以从两个方面去认识 同步和异步,阻塞和非阻塞。根据上面分类可以分为下面五类:
阻塞I/O(blocking I/O)
非阻塞I/O (nonblocking I/O)
I/O复用(select 、poll和epoll) (I/O multiplexing)
信号驱动I/O (signal driven I/O (SIGIO))
异步I/O (asynchronous I/O )
在多路复用的IO的模型中,存在三种机制,分别是select
,poll
和epoll
.为了便于理解,可以使用简单的伪代码来表示一个原始的IO的读写:
1 | while(true) |
对于组件的全局的初始化,可以使用前面所说的ImportBeanDefinitionRegistrar
这个方法来指定初始化方法,以开源的队列QMQ的源码为例:
1 |
|
这个Demo的功能是客户端向服务端发送一个Hello Netty
的消息,然后服务端又把消息返回给客户端
这些都是一些公共的代码,代码比较简单,服务端负责监听端口,Handler负责处理业务逻辑
在Java中,由于反射的局限性,无法直接获取一个接口的所有实现子类,所以为了能够实现一个接口动态的注入实现的子类对象,需要借助ServiceLoader
简单的Demo使用
1 |
|
所谓AOP的思想是现在程序设计中常用的一种设计思想,主要是为了能够更好的监控程序的运行的情况。 在Spring中AOP的思想展现的淋漓尽致。
实现一个简单的AOP。
1 |
|
在Spring容器中,实例对象都会有三个过程,创建,初始化和消亡。
1 |
|
在Spring中,在一个类的上面增加@Configuration
注解,这个就表示当前为配置类,可以代替xml
形式的配置形式。在类中可以定义各种bean的定义,这些定义会被AnnotationConfigApplicationContext
容器扫描。
1 |
|
一个有效的收拾程序运行残局的方法--ShutdownHook
在阅读QMQ的源码的时候,在Server端启动的时候,注册了一个shutdown的代码,具体的代码如下:
1 | Runtime.getRuntime().addShutdownHook(new Thread(wrapper::destroy)); |
addShutdownHook
方法可以添加一个指定的线程来在Java程序退出的时候做一些事情,在以下几个场景会被调用:
System.exit(0)
Update your browser to view this website correctly.&npsb;Update my browser now