diff --git a/README.MD b/README.MD index 5214bd2cf6a8c3850598e5f1d116ade800eef156..7fdce7b3f6c8d2133712efa545910ba3347ec26f 100644 --- a/README.MD +++ b/README.MD @@ -44,6 +44,14 @@ TBD TBD +### 项目结构 + +- bootstrap 程åºå¯åЍ入å£ï¼Œä¸å…许修改,评测时ä¸ä¾èµ–选手编译的 jar 包; +- internal-dubbo dubbo ä¾èµ–,ä¸å…许修改,评测时ä¸ä¾èµ–选手编译的 jar 包; +- internal-gateway gateway ä¾èµ–,ä¸å…许修改,评测时ä¸ä¾èµ–选手编译的 jar 包; +- internal-service æœåŠ¡çš„æŽ¥å£å®šä¹‰å’Œå®žçŽ°ï¼Œä¸å…许修改,评测时ä¸ä¾èµ–选手编译的 jar 包; +- workspace 选手进行开å‘çš„æ¨¡å— + ### å¼€å‘æŽ¥å£ TBD diff --git a/bootstrap/pom.xml b/bootstrap/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..7311cef9f80383c4f14374a532b3fe2b8be3a3b0 --- /dev/null +++ b/bootstrap/pom.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>adaptive-loadbalance</artifactId> + <groupId>com.aliware.tianchi</groupId> + <version>1.0.0</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>bootstrap</artifactId> + <dependencies> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>workspace-gateway</artifactId> + <version>1.0.0</version> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>workspace-provider</artifactId> + <version>1.0.0</version> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>service-provider</artifactId> + </dependency> + </dependencies> + + +</project> \ No newline at end of file diff --git a/bootstrap/src/main/java/com/aliware/tianchi/GatewayApp.java b/bootstrap/src/main/java/com/aliware/tianchi/GatewayApp.java new file mode 100644 index 0000000000000000000000000000000000000000..f3d1decc60daf88d81ccbd09db5c079a4c6b0fdc --- /dev/null +++ b/bootstrap/src/main/java/com/aliware/tianchi/GatewayApp.java @@ -0,0 +1,16 @@ +package com.aliware.tianchi; + +import java.io.IOException; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +/** + * @author guohaoice@gmail.com + */ +public class GatewayApp { + public static void main(String[] args) throws IOException { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"dubbo-provider.xml"}); + context.start(); + + System.in.read(); // press any key to exit + } +} diff --git a/bootstrap/src/main/java/com/aliware/tianchi/ProviderApp.java b/bootstrap/src/main/java/com/aliware/tianchi/ProviderApp.java new file mode 100644 index 0000000000000000000000000000000000000000..a8a203aec664f4331225826a8b11c4b4bc8ba1c7 --- /dev/null +++ b/bootstrap/src/main/java/com/aliware/tianchi/ProviderApp.java @@ -0,0 +1,17 @@ +package com.aliware.tianchi; + +import java.io.IOException; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +/** + * @author guohaoice@gmail.com + */ +public class ProviderApp { + + public static void main(String[] args) throws IOException { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:dubbo-provider.xml"}); + context.start(); + System.in.read(); // press any key to exit + } + +} diff --git a/internal-dubbo/pom.xml b/internal-dubbo/pom.xml index a4be6d0ac8b3adbfe8aad1265daff56d011f7f05..9c4730d24728d5c34b368774eda81bab1a77e928 100644 --- a/internal-dubbo/pom.xml +++ b/internal-dubbo/pom.xml @@ -10,4 +10,12 @@ <modelVersion>4.0.0</modelVersion> <artifactId>internal-dubbo</artifactId> + + <dependencies> + <dependency> + <groupId>org.apache.dubbo</groupId> + <artifactId>dubbo</artifactId> + <version>3.0.0-SNAPSHOT</version> + </dependency> + </dependencies> </project> \ No newline at end of file diff --git a/internal-gateway/pom.xml b/internal-gateway/pom.xml index cc5ce9a0db1e7d6b263abf9e0a0d04f8543f91b1..dfdbf980700f7d5a644f6c22eff5a922d3d48d3d 100644 --- a/internal-gateway/pom.xml +++ b/internal-gateway/pom.xml @@ -11,5 +11,11 @@ <artifactId>internal-gateway</artifactId> + <dependencies> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>internal-dubbo</artifactId> + </dependency> + </dependencies> </project> \ No newline at end of file diff --git a/service/pom.xml b/internal-service/pom.xml similarity index 100% rename from service/pom.xml rename to internal-service/pom.xml diff --git a/service/service-api/pom.xml b/internal-service/service-api/pom.xml similarity index 100% rename from service/service-api/pom.xml rename to internal-service/service-api/pom.xml diff --git a/service/service-api/src/main/java/com/aliware/tianchi/HashInterface.java b/internal-service/service-api/src/main/java/com/aliware/tianchi/HashInterface.java similarity index 100% rename from service/service-api/src/main/java/com/aliware/tianchi/HashInterface.java rename to internal-service/service-api/src/main/java/com/aliware/tianchi/HashInterface.java diff --git a/internal-service/service-consumer/pom.xml b/internal-service/service-consumer/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..81633ade46316180e0b5ad5d31e8bdab1b752aa4 --- /dev/null +++ b/internal-service/service-consumer/pom.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>service</artifactId> + <groupId>com.aliware.tianchi</groupId> + <version>1.0.0</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>service-consumer</artifactId> + + <dependencies> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>service-api</artifactId> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + </dependency> + </dependencies> + + +</project> \ No newline at end of file diff --git a/internal-service/service-consumer/src/main/java/com/aliware/tianchi/MyConsumer.java b/internal-service/service-consumer/src/main/java/com/aliware/tianchi/MyConsumer.java new file mode 100644 index 0000000000000000000000000000000000000000..162e5b34419ba2c0d99d4b7c1ca8e3c4cc216b5d --- /dev/null +++ b/internal-service/service-consumer/src/main/java/com/aliware/tianchi/MyConsumer.java @@ -0,0 +1,19 @@ +package com.aliware.tianchi; + +import java.io.IOException; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +/** + * @author guohaoice@gmail.com + */ +public class MyConsumer { + public static void main(String[] args) throws IOException { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:dubbo-consumer.xml"}); + context.start(); + HashInterface bean = context.getBean(HashInterface.class); + for (int i = 0; i < 10; i++) { + System.out.println(bean.hash("hahaha")); + } + System.in.read(); // press any key to exit + } +} diff --git a/internal-service/service-consumer/src/main/resources/dubbo-consumer.xml b/internal-service/service-consumer/src/main/resources/dubbo-consumer.xml new file mode 100644 index 0000000000000000000000000000000000000000..f25a6e957747a7497fe950c196e1d075ec780f46 --- /dev/null +++ b/internal-service/service-consumer/src/main/resources/dubbo-consumer.xml @@ -0,0 +1,18 @@ +<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> + + <!-- consumer's application name, used for tracing dependency relationship (not a matching criterion), + don't set it same as provider --> + <dubbo:application name="demo-consumer"/> + + <!-- use multicast registry center to discover service --> + <!--<dubbo:registry address="zookeeper://127.0.0.1:2181"/>--> + + <!-- generate proxy for the remote service, then demoService can be used in the same way as the + local regular interface --> + <dubbo:reference id="directService" check="false" interface="com.aliware.tianchi.HashInterface" url="localhost:20880"/> + +</beans> \ No newline at end of file diff --git a/service/service-provider/pom.xml b/internal-service/service-provider/pom.xml similarity index 93% rename from service/service-provider/pom.xml rename to internal-service/service-provider/pom.xml index 53c8fabe88b9307d1fb28c5605161197b9ec82fc..5e390fbe44bcf192d2c31c1ce58156742c43e06b 100644 --- a/service/service-provider/pom.xml +++ b/internal-service/service-provider/pom.xml @@ -15,8 +15,8 @@ <dependency> <groupId>com.aliware.tianchi</groupId> <artifactId>service-api</artifactId> - <version>${project.version}</version> </dependency> + </dependencies> diff --git a/service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java b/internal-service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java similarity index 94% rename from service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java rename to internal-service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java index 4df128874254c968a5b484706f4ce0b605223573..35bd7d0e3756ae147eeb4bdef034476aa675c2a2 100644 --- a/service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java +++ b/internal-service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java @@ -36,7 +36,7 @@ public class HashServiceImpl implements HashInterface { double cdf = 0; while (u >= cdf) { x++; - cdf = 1 - Math.exp(-1.0 * 1 / averageRTT * x); + cdf = 1 - Math.exp(-1.0D * 1 / averageRTT * x); } return x; } diff --git a/internal-service/service-provider/src/main/resources/dubbo-provider.xml b/internal-service/service-provider/src/main/resources/dubbo-provider.xml new file mode 100644 index 0000000000000000000000000000000000000000..fb14e691c6c6bdea255914dfd7f6929beca67aab --- /dev/null +++ b/internal-service/service-provider/src/main/resources/dubbo-provider.xml @@ -0,0 +1,21 @@ +<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" + xmlns="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd + http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> + + <!-- provider's application name, used for tracing dependency relationship --> + <dubbo:application name="demo-provider"/> + <!-- use multicast registry center to export service --> + <dubbo:registry address="multicast://224.5.6.7:1234"/> + <!-- use dubbo protocol to export service on port 20880 --> + <dubbo:protocol name="dubbo" port="20880"/> + <!-- service implementation, as same as regular local bean --> + <bean id="demoService" class="com.aliware.tianchi.HashServiceImpl"> + <constructor-arg index="0" value="10"/> + <constructor-arg index="1" value="10000000"/> + <constructor-arg index="2" value="salt-value"/> + </bean> + <!-- declare the service interface to be exported --> + <dubbo:service interface="com.aliware.tianchi.HashInterface" ref="demoService"/> +</beans> \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3055949960681ac3e3bcd1c730158e515d09e184..93825243e03b198d5bf431797a6dd9b8fa6fd71c 100644 --- a/pom.xml +++ b/pom.xml @@ -9,6 +9,53 @@ <packaging>pom</packaging> <version>1.0.0</version> + <dependencyManagement> + <dependencies> + <!--internal start--> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>internal-dubbo</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>internal-gateway</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>service-api</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>service-consumer</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>service-provider</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>workspace-provider</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.aliware.tianchi</groupId> + <artifactId>workspace-gateway</artifactId> + <version>${project.version}</version> + </dependency> + <!--internal end--> + + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <version>4.3.20.RELEASE</version> + </dependency> + </dependencies> + </dependencyManagement> <build> <plugins> <plugin> @@ -26,6 +73,8 @@ <modules> <module>internal-dubbo</module> <module>internal-gateway</module> - <module>service</module> + <module>internal-service</module> + <module>bootstrap</module> + <module>workspace</module> </modules> </project> \ No newline at end of file diff --git a/service/src/main/java/com/aliware/tianchi/HashInterface.java b/service/src/main/java/com/aliware/tianchi/HashInterface.java deleted file mode 100644 index 5665174dd7c49ae5760864824d8397a4ea0fd9be..0000000000000000000000000000000000000000 --- a/service/src/main/java/com/aliware/tianchi/HashInterface.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.aliware.tianchi; - -/** - * @author guohaoice@gmail.com - */ -public interface HashInterface { - - int hash(String input); - -} diff --git a/src/main/java/com/aliware/GatewayApp.java b/src/main/java/com/aliware/GatewayApp.java deleted file mode 100644 index f00f00d17b51c01f6cc9764bb12dffe01f2c20cc..0000000000000000000000000000000000000000 --- a/src/main/java/com/aliware/GatewayApp.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.aliware; - -/** - * @author guohaoice@gmail.com - */ -public class GatewayApp { - public static void main(String[] args) { - // - } -} diff --git a/src/main/java/com/aliware/ProviderApp.java b/src/main/java/com/aliware/ProviderApp.java deleted file mode 100644 index bd5778af65166747a6a6609f771f25abcf675936..0000000000000000000000000000000000000000 --- a/src/main/java/com/aliware/ProviderApp.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.aliware; - -/** - * @author guohaoice@gmail.com - */ -public class ProviderApp { - public static void main(String[] args) { - // - } -} diff --git a/workspace/README.md b/workspace/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b89adcf4d8d28fd60f523fe70167d911fa092f44 --- /dev/null +++ b/workspace/README.md @@ -0,0 +1,3 @@ +# Workspace + +选手在这个 module 下开å‘,其他 module ä¸å…许修改。 \ No newline at end of file diff --git a/workspace/pom.xml b/workspace/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..5230c79c381be375c584ccd0a1d52b260aa25db7 --- /dev/null +++ b/workspace/pom.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>adaptive-loadbalance</artifactId> + <groupId>com.aliware.tianchi</groupId> + <version>1.0.0</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>workspace</artifactId> + <packaging>pom</packaging> + <modules> + <module>workspace-gateway</module> + <module>workspace-provider</module> + </modules> + + +</project> \ No newline at end of file diff --git a/service/service-consumer/pom.xml b/workspace/workspace-gateway/pom.xml similarity index 82% rename from service/service-consumer/pom.xml rename to workspace/workspace-gateway/pom.xml index ba938d80e9b3c947e8ffdddc82978939cebfd453..9a1c6a71bb133635813aa4447731a9b237f83d46 100644 --- a/service/service-consumer/pom.xml +++ b/workspace/workspace-gateway/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> - <artifactId>service</artifactId> + <artifactId>workspace</artifactId> <groupId>com.aliware.tianchi</groupId> <version>1.0.0</version> </parent> <modelVersion>4.0.0</modelVersion> - <artifactId>service-consumer</artifactId> + <artifactId>workspace-gateway</artifactId> </project> \ No newline at end of file diff --git a/workspace/workspace-provider/pom.xml b/workspace/workspace-provider/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..7d0f8a3081016e02c865945d5788a2f88c548473 --- /dev/null +++ b/workspace/workspace-provider/pom.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>workspace</artifactId> + <groupId>com.aliware.tianchi</groupId> + <version>1.0.0</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>workspace-provider</artifactId> + +</project> \ No newline at end of file