diff --git a/README.md b/README.md new file mode 100644 index 0000000..f30eaa4 --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +## 需求概述 + +- 项目的主要业务需求: + + 给定一个服务端模板,开启n个服务器,并在接口请求时返回可用服务器的地址。 + 管理在线服务器的数量。 + +- 项目的非功能需求: + + 分布式系统(会同时运行在多台机器上) + +### 功能需求 + +- 根据给定的服务端模板,可用端口范围生成多个服务器实例。 +- 回收已经标记为结束的服务器。 +- 接口请求时,返回一个可用的服务器ip。 +- 记录对局的id,开始时间,结束时间,参与玩家id到数据库中。 + +## 非功能需求 + +- 可以增加机器的数量。例如有A,B两台机器,A机器资源占满,B机器有余量。收到请求时,会在B机器开启新的服务器并返回ip +- 保持一定数量的可用服务器,在请求时可以立刻返回。 + +## 界面设计和交互 + +无ui需求,bat就行。 + +## 接口需求 + +### `func getServer()` + +- 接口描述:获取一个可用的服务器ip,并记录该对局的参与玩家。 + +- 返回值: + + - String类型的ip地址(带端口) + + - Int类型的对局id + +- 参数列表: + - `ArrayList players` + +### `func informEnd()` + +- 接口描述:告知系统某个对局结束了 + +- 返回值:无 + +- 参数列表: + - int id + +### `func getPlayerServer()` + +- 接口描述:获取某个玩家还在进行中的对局的服务器的ip地址 + +- 返回值: + - String 类型的ip地址(带端口),未在对局中返回null + - Int 类型的对局id,未在对局中返回-1 + +- 参数列表: + - `(Player player)` + +### `func containPlayer` + +- 接口描述:查询某个玩家是否在对局中。 + +- 返回值: + - bool + +- 参数列表: + - `(Player player)` \ No newline at end of file