Skip to content

Commit

Permalink
OSV instance added
Browse files Browse the repository at this point in the history
  • Loading branch information
ThilinaManamgoda committed Sep 21, 2017
1 parent 53d44de commit d1af1f8
Show file tree
Hide file tree
Showing 9 changed files with 72 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof FullHttpRequest) {
FullHttpRequest request = (FullHttpRequest) msg;
//domain
instanceID = request.headers().get("domain");

EtcdUtil.getValue(instanceID).thenAccept(x -> {
Expand All @@ -92,7 +93,7 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
} else if (stateImpl.getState() == InstanceStates.STARTING) {
String state = EtcdUtil.setWatcher(instanceID);
State tmp = StateImplJsonHelp.getObject(state);
String remoteIp = tmp.getHosts().peek();
String remoteIp = tmp.getOSVInstance().peek().getHost();
ProxyEvent proxyEvent = new ProxyEvent(remoteIp);
proxyEvent.setDomain(instanceID);
ctx.fireUserEventTriggered(proxyEvent);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,26 @@

package lambda.netty.loadbalancer.core.launch;

import io.netty.bootstrap.Bootstrap;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.http.HttpRequestEncoder;
import lambda.netty.loadbalancer.core.ConfigConstants;
import lambda.netty.loadbalancer.core.Server;
import lambda.netty.loadbalancer.core.SysService.SysServiceConnection;
import lambda.netty.loadbalancer.core.SysService.SysServiceHandlersInit;
import lambda.netty.loadbalancer.core.etcd.EtcdClientException;
import lambda.netty.loadbalancer.core.etcd.EtcdUtil;
import lambda.netty.loadbalancer.core.loadbalance.StateImplJsonHelp;
import lambda.netty.loadbalancer.core.loadbalance.statemodels.InstanceStates;
import lambda.netty.loadbalancer.core.loadbalance.statemodels.OSVInstance;
import lambda.netty.loadbalancer.core.loadbalance.statemodels.State;
import lambda.netty.loadbalancer.core.loadbalance.statemodels.StateImpl;
import lambda.netty.loadbalancer.core.scalability.ScalabilityManager;
import org.apache.commons.configuration2.XMLConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.log4j.Logger;

import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

Expand Down Expand Up @@ -103,14 +105,17 @@ public static long getLong(String s) {

public static void main(String[] args) throws InterruptedException, EtcdClientException {

// State state = new StateImpl();
// state.pushHost("127.0.0.1:8082");
// State state = new StateImpl();
// OSVInstance osvInstance = new OSVInstance();
// osvInstance.setHost("127.0.0.1:8082");
// osvInstance.setUuid(new UUID(1,1));
// state.pushOSVInstance(osvInstance);
// state.setState(InstanceStates.DOWN);
// state.setDomain("maanadev.org");
// state.setDomain("localhost");
//
// System.out.println(StateImplJsonHelp.toString(state));
// try {
//// EtcdUtil.putValue("localhost",StateImplJsonHelp.toString(state)).get();
// EtcdUtil.putValue("localhost",StateImplJsonHelp.toString(state)).get();
// System.out.println(EtcdUtil.getValue("localhost").get().getKvs().get(0).getValue().toString(StandardCharsets.UTF_8));
// } catch (EtcdClientException e) {
// e.printStackTrace();
Expand All @@ -120,21 +125,20 @@ public static void main(String[] args) throws InterruptedException, EtcdClientEx
// e.printStackTrace();
// }
//
// try {
// ConfigLogger.printFields();
// } catch (Exception e) {
// logger.error("Cannot print Configurations !", e);
// }
//
//
// if (SCALABILITY_ENABLED) {
// service.submit(new ScalabilityManager());
// } else {
// logger.info("Scalability is not enabled !");
// }
// service.submit(new Server());
try {
ConfigLogger.printFields();
} catch (Exception e) {
logger.error("Cannot print Configurations !", e);
}


if (SCALABILITY_ENABLED) {
service.submit(new ScalabilityManager());
} else {
logger.info("Scalability is not enabled !");
}
service.submit(new Server());

EtcdUtil.putValue("aaa","klk");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@

package lambda.netty.loadbalancer.core.loadbalance;

import lambda.netty.loadbalancer.core.loadbalance.statemodels.OSVInstance;
import lambda.netty.loadbalancer.core.loadbalance.statemodels.State;

import java.util.Queue;
Expand All @@ -41,9 +42,10 @@ public class RoundRobinImpl implements LoadBalance {
@Override
public String getRemoteHost(State stateImpl) {

Queue<String> queue = stateImpl.getHosts();
String tmp = queue.poll();
Queue<OSVInstance> queue = stateImpl.getOSVInstance();
OSVInstance tmp = queue.poll();
String result = tmp.getHost();
queue.add(tmp);
return tmp;
return result;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package lambda.netty.loadbalancer.core.loadbalance.statemodels;

import java.util.UUID;

public class OSVInstance {
String host;
UUID uuid;

public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}

public UUID getUuid() {
return uuid;
}

public void setUuid(UUID uuid) {
this.uuid = uuid;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,14 @@
import java.util.Queue;

public interface State {
/**
* @param host host:port ex: "127.0.0.1:8508"
*/
void pushHost(String host);

void pushOSVInstance(OSVInstance instance);

InstanceStates getState();

void setState(InstanceStates state);

Queue<String> getHosts();
Queue<OSVInstance> getOSVInstance();

public String getDomain();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,10 @@

public class StateImpl implements State {

private Queue<String> hosts = new LinkedList<>();
private Queue<OSVInstance> hosts = new LinkedList<>();
private InstanceStates state;
private String domain;
//ex-func.org

public StateImpl() {
}
Expand All @@ -54,16 +55,16 @@ public void setState(InstanceStates state) {
this.state = state;
}

public Queue<String> getHosts() {
public Queue<OSVInstance> getOSVInstance() {

return hosts;
}

public void pushHost(String host) {
hosts.add(host);
public void pushOSVInstance(OSVInstance instance) {
hosts.add(instance);
}

public String pullHost() {
public OSVInstance pullHost() {
return hosts.poll();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public class HandleScaling implements Runnable {

@Override
public void run() {

logger.info("scaled");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ public class ScaleInfoDAO {

private static Map<String, ResponseTimeInfo> responseTimesMap = new HashMap(Launcher.getIntValue(ConfigConstants.CONFIG_SCALABILITY_MAP_SIZE));
final private static long THRESHOLD = Launcher.getLong(ConfigConstants.CONFIG_SCALABILITY_THRESHOLD);//milliseconds
private static Object lock = new Object();

private ScaleInfoDAO() {
}
Expand All @@ -50,7 +49,7 @@ public static void putTime(String domain, long time) {
if (domain == null) {
throw new NullPointerException("Domain is null");
}
synchronized (lock) {
synchronized (responseTimesMap) {

ResponseTimeInfo responseTimeInfo = responseTimesMap.get(domain);

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit d1af1f8

Please sign in to comment.