设计实现方式: 抽象工厂模式+xml+HTTP流响应方式
描述:管理服务器上的进程状态信息,进程关闭,开启,日志信息等
调用代码测试类:
200并发篱栅压测final static String api = "http://115.29.163.148:9001/RPC2"; final static String userName = "zhubo"; final static String passWord = "123456"; final static String namespace = "supervisor"; //初始化 static XmlRpcFactory xmlRpcFactory = null; public static void main(String[] args) throws InterruptedException { xmlRpcFactory = new SimpleXMLRpcFactory(); int size = 200; CyclicBarrier cb = new CyclicBarrier(size); ExecutorService service = Executors.newFixedThreadPool(size); System.out.PRintln(new Date()); for(int i =0;i<size;i++){ service.execute(new rpcThread(cb)); } service.shutdown(); //调用API while(true){ if(!service.isTerminated()){ Thread.sleep(1000); }else{ System.out.println(new Date()); break; } } //监控请求成功,失败,异常记录 for(SimpleXMLPRC rpc :SimpleXMLRpcFactory.getRegistries()) { Map<String, Set<XmlRpcCount>> maprpc = rpc.getCounter(); System.out.println(maprpc.get(Constants.SUCCESS).size()); //System.out.println(JSON.toJSONString(maprpc.get(Constants.SUCCESS)));//成功 System.out.println(JSON.toJSONString(maprpc.get(Constants.FAILURE)));//失败 System.out.println(JSON.toJSONString(maprpc.get(Constants.ERROR)));//异常 AtomicInteger atomicInteger = new AtomicInteger(0); for(XmlRpcCount xmlRpcCount :maprpc.get(Constants.SUCCESS)){ atomicInteger.incrementAndGet(); System.out.println(atomicInteger.get()+"---"+JSON.toJSONString(xmlRpcCount)); } } } static class rpcThread implements Runnable{ private CyclicBarrier cb; public rpcThread( CyclicBarrier cb ){ this.cb = cb; } @Override public void run() { try { cb.await(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BrokenBarrierException e) { // TODO Auto-generated catch block e.printStackTrace(); } // TODO Auto-generated method stub SimpleXMLPRC simpleXMLPRC =(SimpleXMLPRC) xmlRpcFactory.getXmlRpc(api, userName, password, namespace); simpleXMLPRC.getAPIVersion(); com.yuntai.yw.supervisord.tools.Process process = simpleXMLPRC.getProcessInfo("dubbo:hs-med-service-queue"); } }JSON样板数据
{"description":"pid 31164, uptime 0:00:05","exitStatus":0,"group":"dubbo","logFile":"/tmp/supervisor/hs-med-service-queue.log","name":"hs-med-service-queue","pid":31164,"start":"1484534147","stateName":"RUNNING","stdoutFile":"/tmp/supervisor/hs-med-service-queue.log","stop":"1484534146"}
进程Process类
字段 | 类型 | 描述 |
---|---|---|
name | String | 名称 |
group | String | 组名 |
description | String | 描述信息 |
start | String | 启动时间戳 |
stop | String | 结束时间戳 |
now | String | 当前时间戳 |
status | String | 状态 |
statusName | String | 状态名称 |
exitStatus | int | 退出状态 |
logFile | String | 日志文件内容 |
stdoutFile | String | 日志文件内容 |
pid | int | 进程Pid |
API:
方法API | 参数 | 说明 |
---|---|---|
public String getAPIVersion(); | 获取api版本号 | |
public XmlRpc namespace(String namespace); | namespace 空间(默认supervisor) | 根据namespace获取调用实例 |
public XmlRpc proxy(String host, int port); | host 请求url 及port端口 | 根据url及端口 获取调用实例 |
public XmlRpc auth(String username, String password); | 用户名 密码 | 鉴权实例 |
public String getSupervisorVersion(); | 安装在服务器上的supervisor版本号 | |
public String getIdentification(); | 实例名一般为空间namespace名(服务器上配置) | |
public Map<String, Object> getState(); | 服务器上的supervisor服务状态 | |
public int getPID(); | 服务器上的supervisor服务的进程id | |
public String readLog(int offset, int length) ; | 日志开始位置 及长度 | 日志内容 |
public boolean clearLog(); | 清除supervisor服务日志文件 | |
public boolean shutdown(); | 关闭supervisor服务 | |
public boolean restart(); | 重启supervisor服务 | |
public Process getProcessInfo(String processName); | supervisor管理下的进程名 | 进程信息 |
public Object[] getAllProcessInfo(); | 获取所有进程信息 | |
public boolean startProcess(String processName, boolean waitToStart); | 进程名 是否等待 | 启动服务器上进程名 |
public Object[] startAllProcesses(boolean waitToStart); | 是否等待 | 启动服务器上所有进程 |
public boolean startProcessGroup(String groupName, boolean waitToStart); | 组名 是否等待 | 根据组名 启动各个进程 |
public boolean stopProcess(String processName, boolean waitToStop); | 进程名 是否等待 | 关闭服务器上进程名 |
public boolean stopProcessGroup(String groupName, boolean waitToStop) ; | 组名 是否等待 | 根据组名 关闭各个进程 |
public Object[] stopAllProcesses(boolean waitToStop) ; | 是否等待 | 关闭服务器上所有进程 |
资源地址:http://download.csdn.net/detail/pajiakuo/9756525
新闻热点
疑难解答