Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在缩放的网站上显示实时数据?

我开始一个项目,我想创建一个网站,将显示实时飞行信息和状态。我们都在机场见过这个。这里给出了一个例子-- http://www.computronics.biz/productimages/prodairport4.jpg。如您所见,不断地更改。该网站将与后端api对话,而这个后端api将与数据库对话。现在重要的是数据库中的飞行信息将由航空公司自己更新。可能有几家航空公司,他们将分别更新他们的数据。我已经画了一个图表并上传到这里- https://imgur.com/a/ssw1S

现在,这些航空公司显然将有一个界面(与某个后端API对话的网站),通过它他们将更新数据库。

下面是我解决这个问题的尝试。我们需要某种类型的触发,如果任何航空公司在当前时间-1小时到当前+4小时之间更新数据库中的航班详细信息(网站只显示几个小时的航班),我们需要调用web,然后实时将更新发送到网站。用户不能刷新页面。同时需要很好地扩展--如果有100万用户在网站上,而且数据库中有正确的时间范围内的更新,则所有100万用户的网站都应该在相当长的时间内得到更新。

我做了一些研究,看起来我们需要一个基于事件的方法。例如,我们需要创建一个函数(AWS、lambda或Azure函数),只要数据库中有更新(例如,Dynamo),就应该在正确的时间范围内调用该函数。然后,这个函数应该调用一个API,然后通过website技术更新网站。

我并不是在寻找任何代码,而是一些关于如何以可伸缩的方式解决这个问题的替代建议。此外,我们如何测试可伸缩性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-25 06:50:07

不使用无服务器函数(Lambda/Azure函数)

虽然我是无服务器功能的超级粉丝,目前在Lambda中运行一个完整的web应用程序,但我不认为这是你的用例所需要的,也没有经济上的意义。正如您在评论中所回答的那样,每一家航空公司都不会直接写到数据库,它们将推送到API,这意味着当航班更改时,您将被明确告知。当航空公司向您发送新数据时,您只需通过websockets将其传播到所有浏览器端点。这使得设计非常简单。没有必要人为地创建一个数据库事件,然后触发一个函数,该函数将告诉您已更新了一个航班。这就像移除你的门铃,用触发门铃的运动检测器来代替它:)

成本

钱总是值得它自己分的。兰博达与其说是技术上的突破,不如说是经济上的突破。你必须知道什么时候它的成本效益。您需要支付每个请求的费用,所以如果您处理一个每月处理10,000次操作的过程,或者比lambda每天只触发1,000次的操作,那么您的处理过程就非常便宜,而且实际上是免费的。您还需要支付函数执行的时间长度和执行过程中所消耗的内存。通常,使用lambda函数是有意义的,因为在这些函数中,专用服务器大部分时间都处于空闲状态。因此,AWS不是一个完整的EC2实例,而是按需提供一个容器。在某些点上,高请求率和不断运行的进程使得lambda比EC2更昂贵。本文讨论了在一定程度上使用lambda如何更便宜,-> https://www.trek10.com/blog/lambda-cost/也适用于Azure函数和googles等价物。它们都是按需提供的集装箱。

如果您正在处理航班信息,我可以想象,您将每分钟更新数千次航班,因此您的lambda函数将像运行EC2实例一样不断地启动。你最终会支付比EC2多得多的钱。如果您的服务需要24/7工作,并且运行24/7,活动频繁,这无疑是专用服务器或服务器的有效用例。

提出的解决方案

以下是我将使用的组件:

  • 某种消息队列(可能是带有SNS的RabbitMQ或AWS )
  • Web后端(选择将取决于编程语言)
  • 航空公司输入API (REST,GraphQL,或者可能是AWS动态数据消防软管)

航空公司将数据发布到后端api。更新存储在消息队列中,web应用程序通过websockets将结果实际显示给用户,并从队列中读取。

可伸缩性

为了实现可伸缩性,您可以在自动标号组中的多个EC2实例上运行websocket应用程序(所有这些实例都是从同一个队列服务中读取的),因此,随着额外的负载,将自动创建更多的实例,因此名为“自动标注”。这些实例可以放在弹性负载平衡器后面。关于如何做到这一点和它的旗舰设计模式的许多AWS文档。如果您使用AWS,您不需要自己管理可伸缩性细节,aws就会处理这个问题。唯一真正要扩展的组件是websocket应用程序和飞行数据输入端点。您也可以在自动标度组中运行api,但是AWS确实为高流量数据处理提供了额外的工具。我在下面详述这一点。

测试可伸缩性

让一家模拟航空公司用成千上万的假更新来启动您的服务是相当容易的,另一方面,您可以轻松地运行多个selenium测试线程,模拟浏览器单击并验证UI是否仍然有效。

附加工具

如果它最终是大量的数据,而不是为您的航班更新服务使用传统的REST,您可以考虑AWS专门为处理大量实时更新而提供的服务(KinessisDataFire浩) https://aws.amazon.com/kinesis/data-firehose/,但我从未使用过它。

票数 4
EN

Stack Overflow用户

发布于 2018-02-24 05:39:01

首先,请不要想得太多。这是一个需要解决的小问题,不需要任何特殊的技术、技术或时髦的模式和框架。

实际上,您有三个功能区域,您几乎可以单独处理。

  1. 摄取-从不同来源收集和标准化数据。为此,您需要一个流程和转换引擎,LogicApps之类的。
  2. 你的数据库。你很快就会发现,并非所有航班都是相同的;)。虽然看起来是这样,但数据量并不大。为特定函数进行调优的MySQL/ Server实例将运行得很好。提示,您不需要为每一次移动都准备好随时显示的数据。
  3. 演示。数据API和UI。这是最简单的部分。我建议你一开始使用基本轮询。由于您永远无法控制的原因,对于飞行数据的SLA是5分钟,所以实时客户端通知系统是您首先应该花在其他地方的时间。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48961243

复制
相关文章
测试思想-测试设计 测试用例设计之等价类划分方法
把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
授客
2019/09/11
1.4K0
测试思想-测试设计 测试用例设计之等价类划分方法
测试用例方法
等价类划分 是把所有可能输入的数据分为若干个区域,然后从每个区域中取少量有代表性的数据进行测试即可。
派大星在吗
2021/12/06
7070
测试用例的设计方法:等价类划分法[通俗易懂]
常见测试用例的设计方法有八种,下图中标红的是需要掌握的。优先级从等价类划分法,边界值分析法方向排序。每种设计方法,我都会分析,今天我们先一起看看什么是等价类划分法。
全栈程序员站长
2022/11/02
8250
黑盒测试用例测试方法
等价类划分法是一种典型的、重要的黑盒测试方法,是指某个输入域的子集合。在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的。
全栈程序员站长
2022/07/01
1.2K0
黑盒测试用例测试方法
等价类划分法设计测试用例例题_有效等价类测试用例
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/02
6210
等价类划分法设计测试用例例题_有效等价类测试用例
什么是 Java 对象深拷贝?面试必问!
浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。
Java技术栈
2019/09/16
9420
什么是 Java 对象深拷贝?面试必问!
测试用例设计方法
等价类划分 是把所有可能输入的数据分为若干个区域,然后从每个区域中取少量有代表性的数据进行测试即可。
花落花相惜
2021/11/26
6440
软件测试(测试用例)—写用例无压力
主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。
伤心的辣条
2022/12/14
1.3K0
软件测试(测试用例)—写用例无压力
软件测试用例编写方法_软件测试用例包括
HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例 格式关系如下图所示:
全栈程序员站长
2022/09/19
7540
软件测试用例编写方法_软件测试用例包括
【测试】黑盒测试用例设计方法
等价类划分法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。
全栈程序员站长
2022/08/10
2K0
【测试】黑盒测试用例设计方法
等价类测试用例设计原则_边界值法测试用例
   等价类划分法是黑盒测试中非常重要的测试方法,采用等价类划分法时,无需考虑程序内部结构,设计测试用例是依据游戏策划案进行设计的
全栈程序员站长
2022/11/02
9080
等价类划分法测试用例举例_使用等价类划分法设计测试用例
是在测试执行之前,由测试人员进行编写的指导测试过程的重要文档,主要包括:用例编号,测试目的,测试步骤(用例描述),预期结果(期待结果)等(不同公司模板不同,但是大同小异)
全栈程序员站长
2022/09/27
5890
软件测试用例编写方法_接口测试用例设计思路
HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例 格式关系如下图所示:
全栈程序员站长
2022/09/19
5990
软件测试用例编写方法_接口测试用例设计思路
常用八大测试用例设计方法有哪些_测试用例编写方法
1、等价类划分(Equivalance Partitioning)测试的思想:将程序的输入域划分为若干个区域(等价类),并在每个等价类中选择一个具有代表性的元素生成测试用例。该方法是常用的黑盒(Blackbox Testing)测试用例(Testcase)设计方法。
全栈程序员站长
2022/11/04
2.8K0
常用八大测试用例设计方法有哪些_测试用例编写方法
设计测试用例的方法
(1)有限的时间内测试,保证用户经常使用(使用频率比较高,主要的,核心的功能)功能的质量。 (2)如果有限的时间所有的功能不能完全测完,可以和产品经理开发商量,把没有通过测试的,有风险的功能把用户的入口,屏蔽掉(让用户无法使用),产生错误风险就会降低。 (3)本次测试,测试报告写清楚,这次上线,哪些功能测试了,哪些功能没有测试,上线风险分析清楚。
全栈程序员站长
2022/08/31
5480
设计测试用例的方法
初尝 Jest 单元测试
最近的几次发布都犯了小错,都是缺乏或者忽视了测试所导致的。通常来说,一个新功能上线的时候,开发和测试都投入比较多,各项测试都是比较全面的。然而,发布上线也并非意味着不再有bug或者修改。那这时候问题来了,有些修改, 我们会以为很简单,从而放松警惕,偷懒也罢,没有精力也罢,简单验证之后便匆匆发布了。此时,有可能不经意的改动对其它功能造成了影响,bug复bug, bug何其多呀。
IMWeb前端团队
2019/12/04
1.6K0
软件测试用例的设计方法_设计测试用例的依据
把程序的输入域和输出域划分成若干部分,然后从各个部分中选取若干代表性数据作为测试用例。这些数据在测试中的作用等价于其所属部分的其他值。
全栈程序员站长
2022/11/07
9770
软件测试用例的设计方法_设计测试用例的依据
初尝 Jest 单元测试
最近的几次发布都犯了小错,都是缺乏或者忽视了测试所导致的。通常来说,一个新功能上线的时候,开发和测试都投入比较多,各项测试都是比较全面的。然而,发布上线也并非意味着不再有bug或者修改。那这时候问题来
IMWeb前端团队
2017/12/29
1.8K0
初尝 Jest 单元测试
JUnit4:在测试用例中用FixMethodOrder指定测试方法的执行顺序
2018/09/30补记:感谢评论的指正,@FixMethodOrder的顺序也并不一定是方法在代码中定义的顺序,这与JVM的实现有关,我猜在class中方法名是保存在一个map中,不同JVM对map的实现不同,导致并不一定是按代码定义顺序的。
10km
2022/05/07
7840
JUnit4:在测试用例中用FixMethodOrder指定测试方法的执行顺序
黑盒测试用例设计方法二
定义:分析和表述若干输入条件下,被测对象对这些输入作出相应的一种表格。在遇到复杂业务逻辑时可以用该表理清业务逻辑关系。
吾非同
2020/10/23
5140

相似问题

实体框架具有双向关联时出现Webapi异常

10

使用实体框架检索的WebApi 2

12

尝试使用实体框架进行SaveChanges时的异常

13

实体框架和webapi中的列表

211

实体框架WebAPI模型UpSerts

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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