add status module

This commit is contained in:
xingchaowang 2015-03-14 16:55:30 +08:00
parent 6b1f4ce910
commit 2a63aeb033
17 changed files with 318 additions and 57 deletions

View file

@ -1,17 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<data-sources>
<data-source id="zeus">
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</connection-timeout>
<idle-timeout>1m</idle-timeout>
<statement-cache-size>1000</statement-cache-size>
<properties>
<driver>com.mysql.jdbc.Driver</driver>
<url><![CDATA[jdbc:mysql://10.2.25.93:3306/zeus]]></url>
<user>root</user>
<password>~{f4f3e3d1c393a7d0f23179f470f0f0e430ce68565}</password>
<connectionProperties>
<![CDATA[useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true]]></connectionProperties>
</properties>
</data-source>
<data-source id="zeus">
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</connection-timeout>
<idle-timeout>1m</idle-timeout>
<statement-cache-size>1000</statement-cache-size>
<properties>
<driver>com.mysql.jdbc.Driver</driver>
<url><![CDATA[jdbc:mysql://localhost:3306/zeus]]></url>
<user>root</user>
<password>~{e4d4da51d8c450d0d1c03948b6670}</password>
<connectionProperties><![CDATA[useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true]]></connectionProperties>
</properties>
</data-source>
</data-sources>

View file

@ -22,7 +22,7 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.20</version>
<version>5.1.34</version>
<scope>runtime</scope>
</dependency>
@ -135,12 +135,6 @@
<version>5.0.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
<scope>test</scope>
</dependency>
<!-- Spring End -->
<!-- Log -->

View file

@ -0,0 +1,21 @@
package com.ctrip.zeus.service.status;
import com.ctrip.zeus.dal.core.StatusAppServerDo;
import org.unidal.dal.jdbc.DalException;
import java.util.List;
/**
* @author:xingchaowang
* @date: 3/14/2015.
*/
public interface StatusAppServerService {
List<StatusAppServerDo> list() throws DalException;
List<StatusAppServerDo> listByAppName(String appName) throws DalException;
List<StatusAppServerDo> listByServer(String ip) throws DalException;
void updateStatusAppServer(StatusAppServerDo statusAppServerDo) throws DalException;
}

View file

@ -0,0 +1,19 @@
package com.ctrip.zeus.service.status;
import com.ctrip.zeus.dal.core.StatusServerDo;
import org.unidal.dal.jdbc.DalException;
import java.util.List;
/**
* @author:xingchaowang
* @date: 3/14/2015.
*/
public interface StatusServerService {
List<com.ctrip.zeus.dal.core.StatusServerDo> list() throws DalException;
List<com.ctrip.zeus.dal.core.StatusServerDo> listByServer(String ip) throws DalException;
void updateStatusAppServer(StatusServerDo statusServerDo) throws DalException;
}

View file

@ -0,0 +1,41 @@
package com.ctrip.zeus.service.status.impl;
import com.ctrip.zeus.dal.core.StatusAppServerDao;
import com.ctrip.zeus.dal.core.StatusAppServerDo;
import com.ctrip.zeus.dal.core.StatusAppServerEntity;
import com.ctrip.zeus.service.status.StatusAppServerService;
import org.springframework.stereotype.Component;
import org.unidal.dal.jdbc.DalException;
import javax.annotation.Resource;
import java.util.List;
/**
* @author:xingchaowang
* @date: 3/14/2015.
*/
@Component("statusAppServerService")
public class StatusAppServerServiceImpl implements StatusAppServerService {
@Resource
private StatusAppServerDao statusAppServerDao;
@Override
public List<StatusAppServerDo> list() throws DalException {
return statusAppServerDao.findAll(StatusAppServerEntity.READSET_FULL);
}
@Override
public List<StatusAppServerDo> listByAppName(String appName) throws DalException {
return statusAppServerDao.findAllByApp(appName, StatusAppServerEntity.READSET_FULL);
}
@Override
public List<StatusAppServerDo> listByServer(String ip) throws DalException {
return statusAppServerDao.findAllByIp(ip, StatusAppServerEntity.READSET_FULL);
}
@Override
public void updateStatusAppServer(StatusAppServerDo statusAppServerDo) throws DalException {
statusAppServerDao.insert(statusAppServerDo);
}
}

View file

@ -0,0 +1,37 @@
package com.ctrip.zeus.service.status.impl;
import com.ctrip.zeus.dal.core.StatusServerDao;
import com.ctrip.zeus.dal.core.StatusServerDo;
import com.ctrip.zeus.dal.core.StatusServerEntity;
import com.ctrip.zeus.service.status.StatusServerService;
import org.springframework.stereotype.Component;
import org.unidal.dal.jdbc.DalException;
import javax.annotation.Resource;
import java.util.List;
/**
* @author:xingchaowang
* @date: 3/14/2015.
*/
@Component("statusServerService")
public class StatusServerServiceImpl implements StatusServerService {
@Resource
private StatusServerDao statusServerDao;
@Override
public List<com.ctrip.zeus.dal.core.StatusServerDo> list() throws DalException {
return statusServerDao.findAll(StatusServerEntity.READSET_FULL);
}
@Override
public List<com.ctrip.zeus.dal.core.StatusServerDo> listByServer(String ip) throws DalException {
return statusServerDao.findAllByIp(ip, StatusServerEntity.READSET_FULL);
}
@Override
public void updateStatusAppServer(StatusServerDo d) throws DalException {
statusServerDao.insert(d);
}
}

View file

@ -18,9 +18,7 @@ public class C {
public static AppServer toAppServer(AppServerDo d) {
return new AppServer()
.setEnable(d.isEnable())
.setFailTimeout(d.getFailTimeout())
.setHealthy(d.isHealthy())
.setMaxFails(d.getMaxFails())
.setPort(d.getPort())
.setWeight(d.getWeight());
@ -54,8 +52,7 @@ public class C {
public static Server toServer(ServerDo d) {
return new Server()
.setHostName(d.getHostName())
.setIp(d.getIp())
.setUp(d.isUp());
.setIp(d.getIp());
}
public static Slb toSlb(SlbDo d) {
@ -97,9 +94,7 @@ public class C {
public static AppServerDo toAppServerDo(AppServer e) {
return new AppServerDo()
.setIp(e.getServer().getIp())
.setEnable(e.getEnable())
.setFailTimeout(e.getFailTimeout())
.setHealthy(e.getHealthy())
.setMaxFails(e.getMaxFails())
.setPort(e.getPort())
.setWeight(e.getWeight());
@ -134,8 +129,7 @@ public class C {
public static ServerDo toServerDo(Server e) {
return new ServerDo()
.setHostName(e.getHostName())
.setIp(e.getIp())
.setUp(e.getUp());
.setIp(e.getIp());
}
public static SlbDo toSlbDo(Slb e) {

View file

@ -129,8 +129,6 @@
<member name="weight" field="weight" value-type="int" length="10" nullable="false" />
<member name="max-fails" field="max_fails" value-type="int" length="10" nullable="false" />
<member name="fail-timeout" field="fail_timeout" value-type="int" length="10" nullable="false" />
<member name="healthy" field="healthy" value-type="boolean" nullable="false" />
<member name="enable" field="enable" value-type="boolean" nullable="false" />
<member name="created-time" field="created_time" value-type="Date" />
<member name="last-modified" field="last_modified" value-type="Date" nullable="false" />
<var name="key-id" value-type="long" key-member="id" />
@ -211,7 +209,6 @@
<member name="id" field="id" value-type="long" length="19" nullable="false" key="true" auto-increment="true" />
<member name="ip" field="ip" value-type="String" length="100" nullable="false" />
<member name="host-name" field="host_name" value-type="String" length="100" nullable="false" />
<member name="up" field="up" value-type="boolean" nullable="false" />
<member name="created-time" field="created_time" value-type="Date" />
<member name="last-modified" field="last_modified" value-type="Date" nullable="false" />
<var name="key-id" value-type="long" key-member="id" />
@ -449,5 +446,83 @@
</query>
</query-defs>
</entity>
<entity name="status-app-server" table="status_app_server" alias="sas">
<member name="id" field="id" value-type="long" length="19" nullable="false" key="true" auto-increment="true" />
<member name="app-name" field="app_name" value-type="String" length="200" nullable="false" />
<member name="ip" field="ip" value-type="String" length="200" nullable="false" />
<member name="up" field="up" value-type="boolean" nullable="false" />
<member name="created-time" field="created_time" value-type="Date" />
<member name="last-modified" field="last_modified" value-type="Date" nullable="false" />
<var name="key-id" value-type="long" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="app_name_ip" unique="true" members="app_name ASC, ip ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>
<entity name="status-server" table="status_server" alias="ss2">
<member name="id" field="id" value-type="long" length="19" nullable="false" key="true" auto-increment="true" />
<member name="ip" field="ip" value-type="String" length="200" nullable="false" />
<member name="up" field="up" value-type="boolean" nullable="false" />
<member name="created-time" field="created_time" value-type="Date" />
<member name="last-modified" field="last_modified" value-type="Date" nullable="false" />
<var name="key-id" value-type="long" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>
</entities>

View file

@ -116,8 +116,6 @@
weight = values(weight),
max_fails = values(max_fails),
fail_timeout = values(fail_timeout),
healthy = values(healthy),
enable = values(enable),
<FIELD name="last-modified"/> = NOW()
]]>
</statement>
@ -374,5 +372,81 @@
</query>
</query-defs>
</entity>
<entity name="status-app-server" table="status_app_server" alias="sas" do-class="StatusAppServerDo">
<query-defs>
<query name="insert" type="INSERT">
<statement>
<![CDATA[
INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)
ON DUPLICATE KEY UPDATE
up = values(up),
<FIELD name="last-modified"/> = NOW()
]]>
</statement>
</query>
<query name="find-all" type="SELECT" multiple="true">
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM <TABLE/>
]]>
</statement>
</query>
<query name="find-all-by-app" type="SELECT" multiple="true">
<param name="app-name"/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='app-name'/> = ${app-name}
]]>
</statement>
</query>
<query name="find-all-by-ip" type="SELECT" multiple="true">
<param name="ip"/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='ip'/> = ${ip}
]]>
</statement>
</query>
</query-defs>
</entity>
<entity name="status-server" table="status_server" alias="ss" do-class="StatusServerDo">
<query-defs>
<query name="insert" type="INSERT">
<statement>
<![CDATA[
INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)
ON DUPLICATE KEY UPDATE
up = values(up),
<FIELD name="last-modified"/> = NOW()
]]>
</statement>
</query>
<query name="find-all" type="SELECT" multiple="true">
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM <TABLE/>
]]>
</statement>
</query>
<query name="find-all-by-ip" type="SELECT" multiple="true">
<param name="ip"/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='ip'/> = ${ip}
]]>
</statement>
</query>
</query-defs>
</entity>
</entities>

View file

@ -65,14 +65,11 @@
<attribute name="weight" value-type="int" />
<attribute name="max-fails" value-type="int" />
<attribute name="fail-timeout" value-type="int" />
<attribute name="healthy" value-type="boolean" />
<attribute name="enable" value-type="boolean" />
<entity-ref name="server" />
</entity>
<entity name="server">
<attribute name="ip" value-type="String" />
<attribute name="host-name" value-type="String" />
<attribute name="up" value-type="boolean" />
</entity>
<entity name="app-list">
<element name="total" value-type="int" />

View file

@ -20,6 +20,8 @@
<table name="slb_server"/>
<table name="slb_vip"/>
<table name="slb_virtual_server"/>
<table name="status_app_server"/>
<table name="status_server"/>
</group>
</jdbc>
</wizard>

View file

@ -52,4 +52,12 @@
<constructor-arg type="java.lang.Class" value="com.ctrip.zeus.dal.core.SlbVirtualServerDao"/>
</bean>
<bean id="statusAppServerDao" factory-bean="daoFactory" factory-method="getDao">
<constructor-arg type="java.lang.Class" value="com.ctrip.zeus.dal.core.StatusAppServerDao"/>
</bean>
<bean id="statusServerDao" factory-bean="daoFactory" factory-method="getDao">
<constructor-arg type="java.lang.Class" value="com.ctrip.zeus.dal.core.StatusServerDao"/>
</bean>
</beans>

View file

@ -36,10 +36,10 @@ public class ConfWriterTest {
.setAppId("999999")
.setHealthCheck(new HealthCheck().setFails(5).setIntervals(50).setPasses(2).setUri("/hotel"))
.setLoadBalancingMethod(new LoadBalancingMethod().setType("roundrobin").setValue("test"))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.1").setHostName("app001").setUp(true))
.setEnable(true).setFailTimeout(30).setHealthy(true).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.2").setHostName("app002").setUp(true))
.setEnable(true).setFailTimeout(30).setHealthy(true).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.1").setHostName("app001"))
.setFailTimeout(30).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.2").setHostName("app002"))
.setFailTimeout(30).setMaxFails(2).setPort(80).setWeight(2))
.addAppSlb(new AppSlb().setSlbName("default").setVirtualServer(vs002).setPath("/hotel"));
List<App> list = new ArrayList<>();

View file

@ -20,10 +20,10 @@ public class ServerConfTest {
.setAppId("999999")
.setHealthCheck(new HealthCheck().setFails(5).setIntervals(50).setPasses(2).setUri("/hotel"))
.setLoadBalancingMethod(new LoadBalancingMethod().setType("roundrobin").setValue("test"))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.1").setHostName("app001").setUp(true))
.setEnable(true).setFailTimeout(30).setHealthy(true).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.2").setHostName("app002").setUp(true))
.setEnable(true).setFailTimeout(30).setHealthy(true).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.1").setHostName("app001"))
.setFailTimeout(30).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.2").setHostName("app002"))
.setFailTimeout(30).setMaxFails(2).setPort(80).setWeight(2))
.addAppSlb(new AppSlb().setSlbName("default").setVirtualServer(new VirtualServer().setName("vs002").setPort("80")
.setSsl(false).addDomain(new Domain().setName("hotel.ctrip.com"))).setPath("/hotel"))
;

View file

@ -20,10 +20,10 @@ public class UpstreamsConfTest {
.setAppId("999999")
.setHealthCheck(new HealthCheck().setFails(5).setIntervals(50).setPasses(2).setUri("/hotel"))
.setLoadBalancingMethod(new LoadBalancingMethod().setType("roundrobin").setValue("test"))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.1").setHostName("app001").setUp(true))
.setEnable(true).setFailTimeout(30).setHealthy(true).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.2").setHostName("app002").setUp(true))
.setEnable(true).setFailTimeout(30).setHealthy(true).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.1").setHostName("app001"))
.setFailTimeout(30).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.2").setHostName("app002"))
.setFailTimeout(30).setMaxFails(2).setPort(80).setWeight(2))
.addAppSlb(new AppSlb().setSlbName("default").setVirtualServer(new VirtualServer().setName("vs002").setPort("80")
.setSsl(false).addDomain(new Domain().setName("hotel.ctrip.com"))).setPath("/hotel"))
;

View file

@ -113,10 +113,10 @@ public class ApiTest {
.setAppId("999999")
.setHealthCheck(new HealthCheck().setFails(5).setIntervals(50).setPasses(2).setUri("/hotel"))
.setLoadBalancingMethod(new LoadBalancingMethod().setType("roundrobin").setValue("test"))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.1").setHostName("app001").setUp(true))
.setEnable(true).setFailTimeout(30).setHealthy(true).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.2").setHostName("app002").setUp(true))
.setEnable(true).setFailTimeout(30).setHealthy(true).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.1").setHostName("app001"))
.setFailTimeout(30).setMaxFails(2).setPort(80).setWeight(2))
.addAppServer(new AppServer().setServer(new Server().setIp("192.168.20.2").setHostName("app002"))
.setFailTimeout(30).setMaxFails(2).setPort(80).setWeight(2))
.addAppSlb(new AppSlb().setSlbName("default").setVirtualServer(new VirtualServer().setName("vs002").setPort("80")
.setSsl(false).addDomain(new Domain().setName("hotel.ctrip.com"))).setPath("/hotel"))
;

View file

@ -58,11 +58,11 @@
<value>uri</value>
</load-balancing-method>
<app-servers>
<app-server port="80" weight="5" max-fails="5" fail-timeout="30" healthy="true" enable="true">
<server ip="192.168.1.10" host-name="vms002" up="true"/>
<app-server port="80" weight="5" max-fails="5" fail-timeout="30">
<server ip="192.168.1.10" host-name="vms002"/>
</app-server>
<app-server port="80" weight="5" max-fails="5" fail-timeout="30" healthy="true" enable="true">
<server ip="192.168.1.11" host-name="vms002" up="true"/>
<app-server port="80" weight="5" max-fails="5" fail-timeout="30">
<server ip="192.168.1.11" host-name="vms002"/>
</app-server>
</app-servers>
</app>