Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
ali-middleware-5-sync
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Recolic
ali-middleware-5-sync
Commits
7edf7c33
There was an error fetching the commit references. Please try again later.
Commit
7edf7c33
authored
6 years ago
by
xujingfeng
Browse files
Options
Downloads
Patches
Plain Diff
humanize the readme
parent
52e51cc3
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.MD
+23
-26
23 additions, 26 deletions
README.MD
with
23 additions
and
26 deletions
README.MD
+
23
−
26
View file @
7edf7c33
...
@@ -75,13 +75,15 @@ Consumer 在接收到客户端请求以后,会生成一个随机字符串,
...
@@ -75,13 +75,15 @@ Consumer 在接收到客户端请求以后,会生成一个随机字符串,
### 项目结构
### 项目结构
-
internal-dubbo dubbo 依赖,不允许修改,评测时不依赖选手编译的 jar 包;
-
internal-dubbo dubbo 依赖,不允许修改,评测时不依赖选手编译的 jar 包;
-
internal-gateway gateway 依赖,不允许修改,评测时不依赖选手编译的 jar 包;
-
此次比赛的 Dubbo 版本是私有版本,具备开源 Dubbo 没有的一些扩展接口,选手需要下载源码,本地构建,不应该依赖远程仓库拉取依赖
-
internal-service 服务的接口定义和实现,不允许修改,评测时不依赖选手编译的 jar 包;
-
internal-service 服务的接口定义和实现,不允许修改,评测时不依赖选手编译的 jar 包;
-
workspace 选手进行开发的模块, 评测时会以 jar 包依赖的方式加载。
-
包含了服务端和客户端,服务端包含了负载动态变化的逻辑,开放给选手自己本地测试,禁止选手设计一个负载均衡算法来 hack 变化的过程;选手可以本地启动服务端客户端示例进行本地测试
-
adaptive-loadbalance(workspace) 选手进行开发的模块, 评测时会以 jar 包依赖的方式加载。
-
在选手本地开发阶段时,可以直接在 internal-service 的相应模块声明该 maven 依赖
### 开发接口
### 开发接口
###
#
com.aliware.tianchi.UserLoadBalance
### com.aliware.tianchi.UserLoadBalance
**负载均衡接口**
,用户需要更改该接口的实现,在示例代码中,实现了一个随机负载均衡算法
**负载均衡接口**
,用户需要更改该接口的实现,在示例代码中,实现了一个随机负载均衡算法
...
@@ -97,7 +99,7 @@ public class UserLoadBalance implements LoadBalance {
...
@@ -97,7 +99,7 @@ public class UserLoadBalance implements LoadBalance {
### 辅助接口
### 辅助接口
###
#
org.apache.dubbo.rpc.listener.CallbackListener
### org.apache.dubbo.rpc.listener.CallbackListener
```
java
```
java
@SPI
@SPI
...
@@ -121,15 +123,13 @@ public class CallbackListenerImpl implements CallbackListener {
...
@@ -121,15 +123,13 @@ public class CallbackListenerImpl implements CallbackListener {
**添加 SPI 声明文件**
**添加 SPI 声明文件**
resources/META-INF/services/org.apache.dubbo.rpc.listener.CallbackListener
```
```
com.aliware.tianchi.CallbackListenerImpl
com.aliware.tianchi.CallbackListenerImpl
```
```
文件内容只有一行,存放位置需要固定在:
### org.apache.dubbo.rpc.service.CallbackService
resources/META-INF/services/org.apache.dubbo.rpc.listener.CallbackListener
#### org.apache.dubbo.rpc.service.CallbackService
```
java
```
java
@SPI
@SPI
...
@@ -138,7 +138,7 @@ public interface CallbackService {
...
@@ -138,7 +138,7 @@ public interface CallbackService {
}
}
```
```
服务端扩展接口,用于接收客户端 CallbackListener 的注册,并执行推送能力。
在比赛中,选手只需要关心推送的内容,注册这一行为由赛题本身保证。
服务端扩展接口,用于接收客户端 CallbackListener 的注册,并执行推送能力。
**接口实现示例**
**接口实现示例**
...
@@ -182,17 +182,15 @@ public class CallbackServiceImpl implements CallbackService {
...
@@ -182,17 +182,15 @@ public class CallbackServiceImpl implements CallbackService {
**添加 SPI 声明文件**
**添加 SPI 声明文件**
resources/META-INF/services/org.apache.dubbo.rpc.service.CallbackService
```
```
com.aliware.tianchi.CallbackServiceImpl
com.aliware.tianchi.CallbackServiceImpl
```
```
文件内容只有一行,存放位置需要固定在:
> 以上 CallbackListener 和 CallbackService 结合使用,实现了一个服务提供者每 5 秒向客户端推送服务器时间的能力,选手可以自行扩展。
resources/META-INF/services/org.apache.dubbo.rpc.service.CallbackService
以上 CallbackListener 和 CallbackService 结合使用,实现了一个服务提供者每 5 秒向客户端推送服务器时间的能力,选手可以自行扩展。
###
#
org.apache.dubbo.remoting.transport.RequestLimiter
### org.apache.dubbo.remoting.transport.RequestLimiter
```
java
```
java
@SPI
@SPI
...
@@ -224,18 +222,17 @@ public class TestRequestLimiter implements RequestLimiter {
...
@@ -224,18 +222,17 @@ public class TestRequestLimiter implements RequestLimiter {
-
false 不提交给服务端业务线程池直接返回,客户端可以在 Filter 中捕获 RpcException
-
false 不提交给服务端业务线程池直接返回,客户端可以在 Filter 中捕获 RpcException
-
true 不限流
-
true 不限流
**添加 SPI 声明文件**
**添加 SPI 声明文件**
resources/META-INF/services/org.apache.dubbo.remoting.transport.RequestLimiter
```
```
com.aliware.tianchi.TestRequestLimiter
com.aliware.tianchi.TestRequestLimiter
```
```
文件内容只有一行,存放位置需要固定在:
> 限流接口开放给选手,旨在让选手保护服务端不被击垮,非强制使用
resources/META-INF/services/org.apache.dubbo.remoting.transport.RequestLimiter
###
#
org.apache.dubbo.rpc.Filter
### org.apache.dubbo.rpc.Filter
```
java
```
java
...
@@ -293,19 +290,20 @@ public class TestServerFilter implements Filter {
...
@@ -293,19 +290,20 @@ public class TestServerFilter implements Filter {
**添加 SPI 声明文件**
**添加 SPI 声明文件**
resources/META-INF/services/org.apache.dubbo.rpc.Filter
```
```
com.aliware.tianchi.TestClientFilter
com.aliware.tianchi.TestClientFilter
com.aliware.tianchi.TestServerFilter
com.aliware.tianchi.TestServerFilter
```
```
文件内容只有一行,存放位置需要固定在:
> 选手无法更改服务消费者和服务提供者的逻辑,但可以借助 Filter 进行 AOP 控制。禁止在服务端获取 salt 值提前返回,需要保证请求到达真实服务。
resources/META-INF/services/org.apache.dubbo.rpc.Filter
### 接口说明
### 接口说明
-
开发接口固定为
`UserLoadBalance`
,选手可以修改其实现,但不能重命名、移动其位置,包括其 SPI 定义文件,否则评测程序无法正常加载选手的代码
-
开发接口固定为
`UserLoadBalance`
,选手可以修改其实现,但不能重命名、移动其位置,包括其 SPI 定义文件,否则评测程序无法正常加载选手的代码
-
辅助接口不强制选手使用,只是为了方便一部分负载均衡算法的实现而设计的,一些算法客户端需要依赖服务端的信息做决策
-
辅助接口不强制选手使用,只是为了方便一部分负载均衡算法的实现而设计的,一些算法客户端需要依赖服务端的信息做决策
-
Dubbo 拥有众多的扩展点,选手可以在不影响赛题题意的前提下适当使用,详情参考 Dubbo 官方文档:用户文档 -> 开发者指南 ->
[
SPI 扩展实现
](
http://dubbo.incubator.apache.org/zh-cn/docs/dev/impls/protocol.html
)
### 要求和限制
### 要求和限制
...
@@ -343,7 +341,7 @@ resources/META-INF/services/org.apache.dubbo.rpc.Filter
...
@@ -343,7 +341,7 @@ resources/META-INF/services/org.apache.dubbo.rpc.Filter
选手按照题目提供的接口,实现 provider-consumer 协同的自适应负载均衡策略。
选手按照题目提供的接口,实现 provider-consumer 协同的自适应负载均衡策略。
#### 本地开发
配置
#### 本地开发
-
fork 本项目, clone 自己的仓库到本地
-
fork 本项目, clone 自己的仓库到本地
...
@@ -418,4 +416,3 @@ wrk -t4 -c1024 -d60s -T5 --script=./wrk.lua --latency http://localhost:8087/invo
...
@@ -418,4 +416,3 @@ wrk -t4 -c1024 -d60s -T5 --script=./wrk.lua --latency http://localhost:8087/invo
| 2 | 1,000,000 | 9,998 |
| 2 | 1,000,000 | 9,998 |
| 3 | 800,000 | 10,000 |
| 3 | 800,000 | 10,000 |
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment