首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >微服务体系结构中的Websockets

微服务体系结构中的Websockets
EN

Stack Overflow用户
提问于 2017-11-28 20:05:21
回答 3查看 21.4K关注 0票数 36

假设我们有一个通知服务,它从消息队列中读取事件并实时通知所有web客户端。我知道web套接字是如何工作的,但是当有一个API网关在客户端、API网关和通知服务之间如何维护web套接字连接时,我会感到困惑。

请帮帮我!谢谢

编辑:体系结构:

EN

回答 3

Stack Overflow用户

发布于 2019-01-26 21:56:30

Websockets

客户端打开的websocket连接必须最终连接到websocket服务器。

API网关

API网关的工作是接受来自客户端的传入websocket连接,并正确地将其路由到websocket服务器。API网关将将从客户端websocket发送的所有数据重定向到正确的后端服务,并将始终保持连接。

一切都是如何一起运作的..。

您问题的根源是“如何让具有websocket连接的客户端从通知服务接收实时更新?”最简单的答案是在Notification上启动websocket服务器,让每个客户端连接到API网关,然后将流量传输到Notification的API网关路由。

  • 客户端<=> API网关<=>通知服务

更进一步..。

如果客户端进一步要求转换来自Notification的数据,则可以:

  1. 将业务逻辑填充到Notification (不推荐)。
  2. 或者,使用API网关和Notification (称为前端后端微服务设计模式(推荐): )之间的转换逻辑添加另一个服务
    • 客户端<=> API网关<=>通知服务器(转换逻辑) <=>通知服务。

  1. 或者,如果您选择的API网关是用来保存业务逻辑和转换数据的,则将转换逻辑直接放在API网关中。
票数 14
EN

Stack Overflow用户

发布于 2020-01-12 08:06:40

两年多后,我发现这个问题,我怀疑OP是否仍在致力于这个问题,但对于我本人和未来的访客来说,我建议如下:

API网关是一个或多个客户端进入系统的主要入口点(如果使用后端换前端模式,可以使用多个网关)。WebSocket客户机/服务器适合于其中的一个或多个客户端,但与API网关是独立的。每个客户端将维护到WebSocket服务器的单独连接。在应用程序及其服务中,每当向messages发布事件时,WebSocket服务器将订阅所有需要通知的事件,并将这些消息转发回每个连接的客户端。应该由WebSocket服务器来确定哪些客户端应该接收给定的通知,或者由WebSocket客户端来确定它是否应该处理给定的通知或忽略它(或者两者都取决于逻辑所在的位置)。

票数 7
EN

Stack Overflow用户

发布于 2017-11-30 11:33:38

你不应该混淆这些概念。API网关正在向客户端隐藏您的基础设施。它可以是许多服务的单一前端,在“前端后端”的意义上。它还可以负责许多其他事情,例如身份验证。

web套接字服务器可以与您的API网关并行。另一个域或另一个端口。假设您使用的是像http://nchan.io这样的web套接字服务器。应用程序中的事件会通过message或任何您使用的消息集成模式。使用者可以获取这些事件并通过Nchan服务器发布它们。客户端(例如浏览器)连接到Nchan服务器,并将被告知事件。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47544877

复制
相关文章
JS如何实现勾选全部复选框和不全选复选框
在一些后台管理系统里面,针对全选,复选框是一个很常见的操作,复选框可以执行多项选择的一种控件,有时,为了方便用户选中所有的复选框,网页界面
itclanCoder
2023/02/26
6.6K0
JS如何实现勾选全部复选框和不全选复选框
odoo wizard界面显示带复选框列表及勾选数据获取
如下图(非实际项目界面截图,仅用于介绍本文主题),打开记录详情页(form视图),点击某个按钮(图中的"选取ffers"按钮),弹出一个向导(wizard)界面,并将详情页中内联tree视图("Offers" Tab页)的列表记录展示到向导界面,且要支持复选框,用于选取目标记录,然执行目标操作。
授客
2023/05/24
5.4K0
odoo wizard界面显示带复选框列表及勾选数据获取
输入URL到页面加载
https://juejin.im/entry/58ce00c5ac502e00589b4bde
tanoak
2018/10/10
1K0
输入URL到页面加载
iOS开发——UITableView勾选效果
如今的APP开发中,UITableView是最常用的控件之一,而UITableView中有个很常见的效果就是勾选效果,这个效果是由UITableViewCell中的accessoryType属性来决定的。
Originalee
2018/08/30
1.7K0
[Selenium+Chrome使用总结]加载Flash、禁用JS脚本、滚动页面至元素、缩放页面
前几周做了个使用Selenium的项目,踩了好多好多好多的Selenium的坑,越来越感觉他作为一个第三方库,对于Chrome的操作实在是有局限。另外,推荐大家一个Selenium之外的操作浏览器的选择:puppeteer(https://github.com/GoogleChrome/puppeteer),是来自谷歌的库。它解决了很多在Selenium里很难解决的问题,比如手机页面截全屏。
Rude3Knife的公众号
2019/08/06
6.6K0
[Selenium+Chrome使用总结]加载Flash、禁用JS脚本、滚动页面至元素、缩放页面
[Selenium+Chrome使用总结]加载Flash/禁用JS脚本/滚动页面至元素/缩放页面
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
蛮三刀酱
2019/09/10
7.7K0
TreeView中节点勾选设置
本文转载:http://www.cnblogs.com/luxiaoxun/p/3288003.html
跟着阿笨一起玩NET
2018/09/18
1.3K0
后台系统设计(上篇:选择)
在单个选项下,存在多组互斥选项,且互斥选项组之间存在一定关系,可以考虑混用分段控件和常规按钮,由于分段控件在视觉上占用更大的面积,故给人在层级上更加置前。
霖酱
2018/10/10
9.9K0
后台系统设计(上篇:选择)
TeXStudio与Bakoma TeX 结合实现实时阅览
相信大家在使用TeXStudio时候,每次修改完毕都要运行一下再能看到PDF界面,这样做十分不方便,因此先给出如下操作办法。
汀丶人工智能
2022/12/21
2.7K0
TeXStudio与Bakoma TeX 结合实现实时阅览
SpringBoot:模块探究之spring-boot-devtools
Spring Boot 使我们能够快速设置和运行服务。为了进一步增强开发体验,Spring 发布了 spring-boot-devtools 工具——作为 Spring Boot-1.3 的一部分
栗筝i
2022/12/24
9290
SpringBoot:模块探究之spring-boot-devtools
TF+ OpenStack部署指南丨利用OpenStack TF配置虚拟网络
成功安装Tungsten Fabric的下一步,是了解在具体的配置场景中使用编排器部署Tungsten Fabric的工作流程。前面讨论了Kubernetes的部署方案,本文则聚焦在OpenStack上的网络配置过程。
Tungsten Fabric
2020/12/23
1.6K0
TF+ OpenStack部署指南丨利用OpenStack TF配置虚拟网络
React Native开发之调试
在做React Native开发时,少不了的需要对React Native程序进行调试。调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。 Developer Menu Android模拟器: 可以通过Command⌘ + M 快捷键来快速打开Developer Menu。也可以通过模拟器上的菜单键来打开。 iOS模拟器: 可以通过Command⌘ + D快捷键来快速打开Developer Menu。 在真机上开启Developer Menu: 在真机上你可以通过摇动手机来开启
xiangzhihong
2018/02/06
4K0
React Native开发之调试
React Native程序调试
在做React Native开发时,少不了的需要对React Native程序进行调试。调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。 Developer Menu Android模拟器: 可以通过Command⌘ + M 快捷键来快速打开Developer Menu。也可以通过模拟器上的菜单键来打开。 iOS模拟器: 可以通过Command⌘ + D快捷键来快速打开Developer Menu。 在真机上开启Developer Menu: 在真机上你可以通过摇动手机来开启
xiangzhihong
2018/01/26
3.7K0
Chrome设置断点的各种姿势
Chrome设置断点的各种姿势 最近在翻看Chrome devtools的文档,刚看到了关于断点调试这里,感觉发现了新大陆-。- 本文记录一下如何在Chrome上设置断点,以及可以设置哪些断点,并不涉及具体调试相关的操作。 在JavaScript代码中设置断点 刚工作时被leader安利了Chrome浏览器,那时一说到调试,就知道这一个操作 以为在行号上单击一下就是打断点,就是会调试了:) 当然这也是最最基本的打断点的方式了,当然了,相较于 调试全靠alert 已经高端很多了。
贾顺名
2018/04/12
16.4K1
Chrome设置断点的各种姿势
Linux远程管理工具
Linux远程管理服务器多基于 SSH 协议。本节给大家介绍 2 种常见的基于 SSH 协议的远程管理工具,分别是 PuTTY 和 SecureCRT。
芯动大师
2023/10/23
3680
Linux远程管理工具
Spring Boot 集成热部署
首先简单说下什么是热部署。热部署就是在修改程序代码和配置后,运行着的程序能自动监测到修改,实现让系统无需重启的情况下完成字节码或者配置的更新。热部署可以帮我们省去了开发调试时修改代码后经常手动部署应用的时间,能极大地提高开发效率。对于 Java 应用的热部署,Spring Boot 也推出了 Spring Boot DevTools 组件实现,我们就可以在 Spring Boot 程序快速集成热部署功能。
闻人的技术博客
2020/06/03
8440
bootstrap treeview级联勾选的正确姿势
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/78991829
hotqin888
2018/09/11
1.5K0
bootstrap treeview级联勾选的正确姿势
取消这几个默认设置,在Excel里使用Power系列顺心多了!| 实战经验
前段时间,我写了文章《开始用Power BI?别急!这几个选项配置值得注意!| PBI实战》,其中,提到了关于缓存、自动检测数据类型、自动关系、自动日期等设置的调整。
大海Power
2022/11/07
1.6K0
取消这几个默认设置,在Excel里使用Power系列顺心多了!| 实战经验
Axure RP8入门之基本操作篇
格式说明:“Password”表示主要用途;“Input”表示元件类型,一般情况下可省略,当有不同类型的同名元件需要区分或名称不能明确表达用途的时候使用;“01”表示出现多个同名元件时的编号;单词首字母大写的书写格式便于阅读。
胡琦
2021/09/09
5.4K0
Linux和Windows系统常用加固项
上面只是限制了用户从tty登录,而没有限制远程登录,修改sshd文件将实现对远程登陆的限制
没有故事的陈师傅
2020/05/07
3.4K0

相似问题

单击列表项时勾选或取消勾选复选框

21

如果未勾选复选框,则禁用字段

12

单击“别处”,复选框被勾选/取消勾选。

11

如何使用javascript在页面加载时勾选复选框?

313

勾选和取消勾选复选框时,使复选框可见和不可见

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文