基于websocket集群的在线问诊系统

我要开发同款
日升月潜2023年03月25日
277阅读
开发技术java
所属分类istio、k8s、websocket

作品详情

1、项目分为医生端和患者端,医生端需要连接公司自己的websocket服务器,以便于对医生的控制(如:对于忙碌的医生,减少问诊派单;时间控制,分为图文和视频问诊,图文控制在10分钟,视频控制在120分钟,可以发起多次视频);2、要求websocket需配置集群模式,实现上使用2台服务器,由于websocket session不能使用redis统一管理,所以websocket server是有状态的,我采用的方式是根据患者的id号取2的模,为0的使用服务器1,不为0的使用服务器2,这样也很容器扩展到多台websocket服务器;3、websocket服务器安全,传统上是建立session后进行控制,这样不能保证建立session之前发生的flood攻击,本方案采用握手阶段权限验证,如果失败或已连接就拒绝建立session,防止握手阶段flood攻击(图5);4、项目采用发布-订阅模式(图6),对于不同医生或患者不同的消息类型,发布为不同的类型的消息,使用不同的订阅handler进行处理;5、系统支持患者转诊,即,问诊单分配给一个医生后,医生在3分钟内部接单,该单会转给其他医生,其他医生的选择,是根据医院、科室、是否空闲、口碑等综合算法计算,转诊医生的session可能位于另一台服务器,即第一次分配给单数的医生,转诊后分配给了双数医生,就会连接到另外的websocket服务器;6、由于websocket是有状态的,需要对实时数据进行一定的保护,采用每5分钟进行一次redis快照,websocketserver重新部署或重启后会恢复redis快照,所以不会影响用户体验;6、系统部署到k8s + istio公有云,采用helm chart结合Jenkins部署,使用istio gateway以及virtualservice进行路由,需要配置正则表达式以支持单数医生和双数医生能分配到固定的websocket(图8),这样也很容易扩展到多台websocket服务器;由于websocket server需要部署到k8s,需要部署不同的deployment以示区分;
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论