加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

设计模式 – 实时Web应用程序的体系结构

发布时间:2020-12-14 23:22:50 所属栏目:资源 来源:网络整理
导读:这将是一个相当理论上的问题.我目前正在研究我的学士论文,其中包括创建一个与 Firebase非常相似的 web-based real-time对象同步框架,但是本地(即不是基于云的). 我需要从实时中区分“常规”Web应用程序(有更好的术语吗?),尤其是在体系结构方面.到目前为止我
这将是一个相当理论上的问题.我目前正在研究我的学士论文,其中包括创建一个与 Firebase非常相似的 web-based real-time对象同步框架,但是本地(即不是基于云的).
我需要从实时中区分“常规”Web应用程序(有更好的术语吗?),尤其是在体系结构方面.到目前为止我的想法:

>常规Web应用程序基于客户端 – 服务器模型,即“客户端和服务器以请求 – 响应消息传递模式交换消息:客户端发送请求,服务器返回响应”.
>实时Web应用程序维护客户端和服务器之间的持久连接.两者都可以通过该连接同时并且彼此独立地发送和接收消息(全双工).
>我的顾问(来自应用软件工程主席)表示,上述观点已经证明了Peer-to-Peer架构的申请资格,尽管他不太确定.我还不确信,因为a)同行不是同质的,b)服务器仍然是一个集中系统,c)我们仍然使用术语“服务器”和“客户端”.
>服务器不直接向特定客户端发送消息,而是使用publish-subscribe消息传递模式,即客户端连接到消息通道,并在服务器在相应通道中发布消息时接收消息.因此服务器实际上并不知道它的客户端,尽管他可以知道.
>主要用例如下:客户端向服务器发送消息(例如,当创建新的待办事项项时),服务器处理它(例如将新的待办事项项目写入数据库),最后将消息发送给所有人其他订阅的客户.我想起了mediator pattern,虽然它是一种行为模式,而不是一种建筑模式.
>但还有另一个用例:服务器向订阅的客户端发送自己的消息(例如,它识别超出todo项目的到期日期并删除它).因此,沟通并不总是必须从客户端开始.

对不起,它比预期的要长.简而言之,我看到了基于Web的实时应用程序架构的三种可能性:

>点对点(具有异构对等体)
>具有pub-sub消息传递模式和中介的客户端服务器(如果后者对于体系结构很重要)
>你用完全不同的东西让我感到惊讶;-)

不确定它是否具有重要性,但我使用Rails(基于JMS的消息服务,提供WebSocket支持)在后端和AngularJS在前端.

解决方法

“实时”操作或应用程序或系统具有及时性和可预测性限制.

原则上,这与系统架构无关 – 实际上,架构必须适合您需要的实时属性.

发布/订阅机制具有基于从可发布事件发生到事件在所有运营订户中显现的延迟的实时度量 – 简化,实时=真实快速(想想自动化金融交易).但实时性与时效性可预测性同样重要.在P / S案例中,感兴趣的可预测性是延迟 – 在幅度和可变性方面(“抖动”是一种特殊情况).在研究和从业者社区中有很多文献 – 在你的情况下,我建议阅读RTI网站上的一些优秀文件(虽然IMHO RTI并没有尽可能彻底地处理可预测性,但它们做得很好产品).

非P / S系统(包括但不限于客户端/服务器系统)具有不同的实时风格.有许多争用共享资源的时间约束(比方说)任务(例如处理器,同步器,网络等).必须通过以满足及时性和可预测性最优性标准的顺序调度或调度来解决竞争访问请求.每个人都熟悉一个非常简单的特殊情况,即请求有截止日期,最优标准是满足所有截止日期.请注意,“符合期限”及时性标准已与可预测性标准“始终满足所有”一起表达.

在绝大多数现实世界的实时案例(不仅限于计算机)中,标准要复杂得多 – 例如,实时系统通常要求平均值(或者,最大值)延迟要么最小化要么不超过某个值.依赖性添加了额外的复杂性,例如优先约束.这种实时方式对架构及其系统软件的某些属性有重大影响.为简洁起见,上述所有内容都已大大简化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读