由于工作原因,需要用到定时任务。但是一个服务部署多个实例的时候,导致定时任务会执行多次。
在网上翻阅资源感觉最小IP的方式这个挺好实现的。
步骤
- 获取当前服务IP
- 从eureka上根据服务名称获取IP集合
- 比对ip获取最小的服务执行
具体实现
1.获取服务器当前IP
public class IPV4Util {
/**
* @param ipAddress
* @return
*/
public static long ipToLong(String ipAddress) {
long result = 0;
String[] ipAddressInArray = ipAddress.split("\\.");
for (int i = 3; i >= 0; i--) {
long ip = Long.parseLong(ipAddressInArray[3 - i]);
// left shifting 24,16,8,0 and bitwise OR
// 1. 192 << 24
// 1. 168 << 16
// 1. 1 << 8
// 1. 2 << 0
result |= ip << (i * 8);
}
retu