点击空白处退出提示
作品详情
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以示区分;
![](https://filescdn.proginn.com/works/9048648c7124085f64ce21a465d3149154d9acee.png?x-oss-process=image/resize,w_800)
![](https://filescdn.proginn.com/works/c150e4869de101c035546a5a9e910404c9cd85a9.jpg?x-oss-process=image/resize,w_800)
![](https://filescdn.proginn.com/works/b431ecac525a3a4688ea063334bcd3b4d3e4fd57.jpg?x-oss-process=image/resize,w_800)
![](https://filescdn.proginn.com/works/d8b25a22a48c965b095967f6912a6e33bc21eb31.jpg?x-oss-process=image/resize,w_800)
![](https://filescdn.proginn.com/works/bb0f2e9c75b8c2bb83440299bfd45ce265a38040.png?x-oss-process=image/resize,w_800)
![](https://filescdn.proginn.com/works/5fa525f4604701cb7e8b2082e4151a20f57edd4c.png?x-oss-process=image/resize,w_800)
![](https://filescdn.proginn.com/works/4900a33d58789fd438dff01bf780ffd6ecfcab78.png?x-oss-process=image/resize,w_800)
![](https://filescdn.proginn.com/works/a59007833d11c26253f163d26247dfd031e87c67.png?x-oss-process=image/resize,w_800)
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
评论