Socket编程实践(二)

Socket编程实践(二)

最近新任务,需要写一个Socket服务端,用来接收设备透传数据

考虑以下几点

  1. 设备规模(300~2000)
  2. 链接方式(长连接)
  3. 文本协议未定
  4. 有持久化需求
  5. 有前端控制页面

方案选型

  • 因为涉及有持久化需求,应该都是数据库相关操作,直接使用SpringBoot套件
  • 因为有前端控制需求,直接添加SpringMVC作为控制面板开发套件
  • 因为设备规模仅有2000个且是长连接,直接使用BIO协议开发效率更高(更推荐Netty来做开发模型,可惜不太熟悉)

类设计

以下三个类代表了领域模型核心,其他功能均基于以下三个对象做开发或辅助

Device

代表了具体的一个设备

  1. 设备验证与登录
  2. 设备状态维护
  3. 设备数据接收
  4. 设备数据维护与持久化

DevicePool

代表了设备们的管理功能,如

  1. 监测在线
  2. 监测是否有数据到达
  3. 设备上线下线处理

Waitress

代表了SocketServer接待处

仅用来分发接收到的socket然后交给线程池就不管事了