ScheduleUtil.java
4.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.taobao.pamirs.schedule;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 调度处理工具类
* @author xuannan
*
*/
public class ScheduleUtil {
public static String OWN_SIGN_BASE ="BASE";
public static String getLocalHostName() {
try {
return InetAddress.getLocalHost().getHostName();
} catch (Exception e) {
return "";
}
}
public static int getFreeSocketPort() {
try {
ServerSocket ss = new ServerSocket(0);
int freePort = ss.getLocalPort();
ss.close();
return freePort;
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
public static String getLocalIP() {
try {
return InetAddress.getLocalHost().getHostAddress();
} catch (Exception e) {
return "";
}
}
public static String transferDataToString(Date d){
SimpleDateFormat DATA_FORMAT_yyyyMMddHHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return DATA_FORMAT_yyyyMMddHHmmss.format(d);
}
public static Date transferStringToDate(String d) throws ParseException{
SimpleDateFormat DATA_FORMAT_yyyyMMddHHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return DATA_FORMAT_yyyyMMddHHmmss.parse(d);
}
public static Date transferStringToDate(String d,String formate) throws ParseException{
SimpleDateFormat FORMAT = new SimpleDateFormat(formate);
return FORMAT.parse(d);
}
public static String getTaskTypeByBaseAndOwnSign(String baseType,String ownSign){
if(ownSign.equals(OWN_SIGN_BASE) == true){
return baseType;
}
return baseType+"$" + ownSign;
}
public static String splitBaseTaskTypeFromTaskType(String taskType){
if(taskType.indexOf("$") >=0){
return taskType.substring(0,taskType.indexOf("$"));
}else{
return taskType;
}
}
public static String splitOwnsignFromTaskType(String taskType){
if(taskType.indexOf("$") >=0){
return taskType.substring(taskType.indexOf("$")+1);
}else{
return OWN_SIGN_BASE;
}
}
/**
* 分配任务数量
* @param serverNum 总的服务器数量
* @param taskItemNum 任务项数量
* @param maxNumOfOneServer 每个server最大任务项数目
* @param maxNum 总的任务数量
* @return
*/
public static int[] assignTaskNumber(int serverNum,int taskItemNum,int maxNumOfOneServer){
int[] taskNums = new int[serverNum];
int numOfSingle = taskItemNum / serverNum;
int otherNum = taskItemNum % serverNum;
//20150323 删除, 任务分片保证分配到所有的线程组数上。 开始
// if (maxNumOfOneServer >0 && numOfSingle >= maxNumOfOneServer) {
// numOfSingle = maxNumOfOneServer;
// otherNum = 0;
// }
//20150323 删除, 任务分片保证分配到所有的线程组数上。 结束
for (int i = 0; i < taskNums.length; i++) {
if (i < otherNum) {
taskNums[i] = numOfSingle + 1;
} else {
taskNums[i] = numOfSingle;
}
}
return taskNums;
}
private static String printArray(int[] items){
String s="";
for(int i=0;i<items.length;i++){
if(i >0){s = s +",";}
s = s + items[i];
}
return s;
}
public static void main(String[] args) {
System.out.println(printArray(assignTaskNumber(1,10,0)));
System.out.println(printArray(assignTaskNumber(2,10,0)));
System.out.println(printArray(assignTaskNumber(3,10,0)));
System.out.println(printArray(assignTaskNumber(4,10,0)));
System.out.println(printArray(assignTaskNumber(5,10,0)));
System.out.println(printArray(assignTaskNumber(6,10,0)));
System.out.println(printArray(assignTaskNumber(7,10,0)));
System.out.println(printArray(assignTaskNumber(8,10,0)));
System.out.println(printArray(assignTaskNumber(9,10,0)));
System.out.println(printArray(assignTaskNumber(10,10,0)));
System.out.println("-----------------");
System.out.println(printArray(assignTaskNumber(1,10,3)));
System.out.println(printArray(assignTaskNumber(2,10,3)));
System.out.println(printArray(assignTaskNumber(3,10,3)));
System.out.println(printArray(assignTaskNumber(4,10,3)));
System.out.println(printArray(assignTaskNumber(5,10,3)));
System.out.println(printArray(assignTaskNumber(6,10,3)));
System.out.println(printArray(assignTaskNumber(7,10,3)));
System.out.println(printArray(assignTaskNumber(8,10,3)));
System.out.println(printArray(assignTaskNumber(9,10,3)));
System.out.println(printArray(assignTaskNumber(10,10,3)));
}
}