diff --git a/README.MD b/README.MD
index eba640ef68e1ee49b5e8219954c1f5a4dc3f6893..5214bd2cf6a8c3850598e5f1d116ade800eef156 100644
--- a/README.MD
+++ b/README.MD
@@ -14,13 +14,12 @@
 
 
 ### Apache Dubbo Gateway
-
+TBD
 
 ### 题目由来
 
 传统的负载均衡场景为单调度器模式,即中心化负载均衡:调度器负责将新到的请求立即转发至多个后端服务器中的一个。随着分布式系统的发展,这种单调度器模式在扩展性和可靠性方面的问题也愈发严重。因此,设计和实现去中心化且性能优异的负载均衡是学术和工业界的共同需求。
 
-
 ## 赛题说明
 
 按照题目提供的扩展接口,实现一套自适应负载均衡机制。要求能够具备以下能力:
@@ -29,9 +28,13 @@
 2. Provider 端能自动进行服务容量评估,当请求数量超过服务能力时,允许拒绝部分请求,以保证服务不过载。
 3. 当请求速率高于所有的 Provider 服务效率之和时,允许 Gateway( Consumer ) 拒绝服务新到请求。
 
-
 ### 架构
-TBD
+![service_architect](assets/service-architect.png)
+
+- Gateway 负责将请求转发至 Provider;
+- Provider 处理请求返回响应;
+- Provider 按照 CPU 核数和内存大小分为 Small、Medium、Large 三个规格;
+- 选手需要设计实现 Gateway 选择 Provider 的 loadbalance 算法。
 
 ### 服务
 
diff --git a/assets/service-architect.png b/assets/service-architect.png
new file mode 100644
index 0000000000000000000000000000000000000000..4df4e033f24d523160ee3c606f6852076e831830
Binary files /dev/null and b/assets/service-architect.png differ
diff --git a/pom.xml b/pom.xml
index 0542f3ffc77ee11e782af6aed0e8a0e055305675..3055949960681ac3e3bcd1c730158e515d09e184 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,5 +26,6 @@
     <modules>
         <module>internal-dubbo</module>
         <module>internal-gateway</module>
+        <module>service</module>
     </modules>
 </project>
\ No newline at end of file
diff --git a/service/pom.xml b/service/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..851b0068e6fb533589424f0a8fe83c21ace88823
--- /dev/null
+++ b/service/pom.xml
@@ -0,0 +1,33 @@
+<?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>service</artifactId>
+    <packaging>pom</packaging>
+    <modules>
+        <module>service-api</module>
+        <module>service-consumer</module>
+        <module>service-provider</module>
+    </modules>
+
+    <dependencies>
+        <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>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/service/service-api/pom.xml b/service/service-api/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0f3df8723d05524346a21d2d4d7e2c2c317b6733
--- /dev/null
+++ b/service/service-api/pom.xml
@@ -0,0 +1,15 @@
+<?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-api</artifactId>
+
+
+</project>
\ No newline at end of file
diff --git a/service/service-api/src/main/java/com/aliware/tianchi/HashInterface.java b/service/service-api/src/main/java/com/aliware/tianchi/HashInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..087dfcef54124f5801e2f09ac68d6f1e05aedbe1
--- /dev/null
+++ b/service/service-api/src/main/java/com/aliware/tianchi/HashInterface.java
@@ -0,0 +1,18 @@
+package com.aliware.tianchi;
+
+/**
+ * @author guohaoice@gmail.com
+ */
+public interface HashInterface {
+
+  /**
+   * 计算给定字符串的 hash 值
+   * <li>
+   *     <ol>接口的响应时间符合负指数分布 </ol>
+   *     <ol>接口的并发度(允许同时调用的线程数)会随时间增加或减小,从而模拟生产环境可能的排队</ol>
+   * </li>
+   * @param input 要计算的字符串
+   * @return 字符串的 hash 值
+   */
+  int hash(String input);
+}
diff --git a/service/service-consumer/pom.xml b/service/service-consumer/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba938d80e9b3c947e8ffdddc82978939cebfd453
--- /dev/null
+++ b/service/service-consumer/pom.xml
@@ -0,0 +1,15 @@
+<?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>
+
+
+</project>
\ No newline at end of file
diff --git a/service/service-provider/pom.xml b/service/service-provider/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..53c8fabe88b9307d1fb28c5605161197b9ec82fc
--- /dev/null
+++ b/service/service-provider/pom.xml
@@ -0,0 +1,23 @@
+<?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-provider</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.aliware.tianchi</groupId>
+            <artifactId>service-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java b/service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..4df128874254c968a5b484706f4ce0b605223573
--- /dev/null
+++ b/service/service-provider/src/main/java/com/aliware/tianchi/HashServiceImpl.java
@@ -0,0 +1,43 @@
+package com.aliware.tianchi;
+
+import java.util.concurrent.ThreadLocalRandom;
+
+/**
+ * Hash service impl
+ *
+ * @author guohaoice@gmail.com
+ */
+public class HashServiceImpl implements HashInterface {
+  private long averageRTT;
+  private int maxConcurrency;
+  private String salt;
+
+  public HashServiceImpl(long averageRTT, int maxConcurrency, String salt) {
+    this.averageRTT = averageRTT;
+    this.maxConcurrency = maxConcurrency;
+    this.salt = salt;
+  }
+
+  @Override
+  public int hash(String input) {
+    long baseRtt = nextRTT();
+    try {
+      Thread.sleep(baseRtt);
+    } catch (InterruptedException e) {
+      Thread.currentThread().interrupt();
+    }
+    return (input + salt).hashCode();
+  }
+
+  private long nextRTT() {
+    ThreadLocalRandom rng = ThreadLocalRandom.current();
+    double u = rng.nextDouble();
+    int x = 0;
+    double cdf = 0;
+    while (u >= cdf) {
+      x++;
+      cdf = 1 - Math.exp(-1.0 * 1 / averageRTT * x);
+    }
+    return x;
+  }
+}
diff --git a/service/src/main/java/com/aliware/tianchi/HashInterface.java b/service/src/main/java/com/aliware/tianchi/HashInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..5665174dd7c49ae5760864824d8397a4ea0fd9be
--- /dev/null
+++ b/service/src/main/java/com/aliware/tianchi/HashInterface.java
@@ -0,0 +1,10 @@
+package com.aliware.tianchi;
+
+/**
+ * @author guohaoice@gmail.com
+ */
+public interface HashInterface {
+
+    int hash(String input);
+
+}