您的位置:首页 > 其它

20160516

2016-05-16 21:57 253 查看
1. 交易

1.1 需求

采用拍卖场模式,支持一口价和出价(每次自动提价10%?)

1.2 实现

1.2.1 接口

mina监听指定socket端口

1.2.2 实现

1.2.2.1 添加物品

消息到达后,insert table, 并返回insert结果,消息中包含底价和一口价

1.2.2.2 出价

消息到达后,update table,where字句中应当指定status和price范围(小于一口价)

1.2.2.3 一口价

消息到达后,update table,where字句中应当指定status

1.2.2.4 拍卖到期物品发送

启动一个离线线程,每5分钟(?是否合适)扫描一次数据库,并将到期的拍卖物,调用逻辑服务器接口,mail给指定userid

2. 聊天

2.1 需求

广播:message推送所有逻辑服务器

团队消息:message推送所有团队成员所在的服务器

p2p消息:message推送指定id

2.2 实现

2.2.1 接口

mina监听指定socket端口

2.2.2 实现

2.2.2.1 广播

接到请求后,message转发所有逻辑服务器

2.2.2.2 团队消息

接收到请求后,查询redis中团队成员(最大允许多少人?)所在的逻辑服务器,message转发至团队成员所在的逻辑服务器

2.2.2.3 p2p消息

接收到请求后,查询redis中目标所在的逻辑服务器,message转发至于目标所在的逻辑服务器

3. 战斗

N/A

4. 登录

4.1 需求

login: 将user从上一个逻辑服务器下线,并在指定的逻辑服务器上线

logout:将user从指定的逻辑服务器下线

4.2 实现

4.2.1 接口

提供两个HTTPServlet,LoginServlet, LogoutServlet

4.2.2 login

查询redis中userid上一个逻辑服务器,调用接口将其从此逻辑服务器下线。

并选择合适的的逻辑服务器(负载最少的?or 轮询?)上线,redis中指定逻辑服务器在线人数加1

4.2.3 logout

查询redis中userid当前逻辑服务器,调用接口将其从此逻辑服务器下线,,redis中指定逻辑服务器在线人数减1

5. 服务器状态Servlet

5.1 需求

可以通过此Servlet获取当前服务器状态信息

包括:

服务器连接信息

线程信息

物品发送队列信息

登录统计信息(登录和注销的用户数量,分逻辑服务器在线人数)

上一分钟的请求数量

6. 其他设计

6.1 缓存

reids中key的ttl设置为86400秒

6.2 线程控制

在ServletContextListener中启动所有线程,包括:

逻辑服务器连接守护线程,每个逻辑服务器一个,大世界服务器作为client

拍卖到期物品扫描线程

物品发送线程(与拍卖到期物品扫描线程,通过阻塞队列交互)

配置WatchDog线程,5分钟扫描一次数据库配置,包括逻辑服务器地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: