Socket编程实践(二)
最近新任务,需要写一个Socket服务端,用来接收设备透传数据
考虑以下几点
- 设备规模(300~2000)
- 链接方式(长连接)
- 文本协议未定
- 有持久化需求
- 有前端控制页面
方案选型
- 因为涉及有持久化需求,应该都是数据库相关操作,直接使用SpringBoot套件
- 因为有前端控制需求,直接添加SpringMVC作为控制面板开发套件
- 因为设备规模仅有2000个且是长连接,直接使用BIO协议开发效率更高(更推荐Netty来做开发模型,可惜不太熟悉)
类设计
以下三个类代表了领域模型核心,其他功能均基于以下三个对象做开发或辅助
Device
代表了具体的一个设备
- 设备验证与登录
- 设备状态维护
- 设备数据接收
- 设备数据维护与持久化
DevicePool
代表了设备们的管理功能,如
- 监测在线
- 监测是否有数据到达
- 设备上线下线处理
Waitress
代表了SocketServer接待处
仅用来分发接收到的socket然后交给线程池就不管事了