易捷网络专注企业网站建设
11年企业网站建设经验、响应式网站建设,兼容PC、手机、平板全
终端,给你更佳的浏览体验...

尽可能使用异步通信

来源:网站建设行业资讯网
添加时间:2022-01-16
尽可能使用异步通信,而不是同步通信。服务和各个层之间的所有调用。使用程序设计语言专有的调用,确保发出了请求,且没有在等待。同步词用会使整个程序执行停止来等待一个响应,从而把所有的展务和各个层维系在一起,造成级联性的故障。使用异步通信技术可以确保每个服务和层是独立的,这样系统的可扩展程度比所有部件都掲合在一起的系统大得多。 尽可能使用异步通信,而不是同步通信。服务和各个层之间的所有调用。使用程序设计语言专有的调用,确保发出了请求,且没有在等待。同步词用会使整个程序执行停止来等待一个响应,从而把所有的展务和各个层维系在一起,造成级联性的故障。使用异步通信技术可以确保每个服务和层是独立的,这样系统的可扩展程度比所有部件都掲合在一起的系统大得多。

一般的异步调用,无论是在一个服务内还是在两个服务间,实现起来都比实现同步调用难得多。原因在于异步调用通常都需要通知最初发送消息的服务,告诉它请求已经完成了。如果你发送完请求就不再理会,那就没必要再与调用方法通信或协作了。实现这个的方法很多且很简单,包括如下所示的PHP函数,它利用了符号在后台运行进程。



但是,并非所有服务发出请求后就不再管它什么状态了。通常,调用方法想知道被调用的方法是什么时候完成的。原因可能是在结果返回前发生了其他的处理。可以设想一个电子商务平台上的场景,即需要根据抵折扣代码重新计算邮费。理想的情况是同步执行这两个任务,而不是计算邮费(可能需要调用供应商的第三方法),然后再对购物车中的物品处理折扣代码。但在两者都完成之前,我们不能把最终结果发送给用户。

在大多数程序设计语言中有一种机制,是为母方法和被调用的异步子方法之间的协调和通信设计的,叫作回调。在C/C++语言中,这是通过函数指针实现的。在Java语言中,是通过对象引用实现的。有许多设计模式使用回调,如委托设计模式和观察者设计模式。但是为什么要自找麻烦异步调用方法或服务呢?

我们之所以要自找麻烦进行异步调用,是因为如果采用同步调用,所有的方法、服务和层都会被维系在一起,它们中的任何一个运行放慢或出了故障,都会造成整个系统发生延迟的级联故障。把所有部件串联起来会导致故障成倍增长。我们只针对可用性讨论了这一概念,但它其实也适用于每KLOC存在bug的概率。如果方法A、B和和C都有99.99%6的机会没有bug,而且A方法同步地调用B方法,B方法同步地调用C方法,那么整个系统的逻辑流中有bug的概率就是99.99%×99.99%×99.9%=99.97%。

我们介绍过,根据不同的客户,把系统的资源池划分成独立的泳道。这样做的好处是如果一个泳道出了问题,不会術生到其他客户的泳道,这可以将问题的影响最小化。此外,检测故障也容易得多,因为同一个代码右采用异步调用的模块或方法也具有这种能力。

异步调用可以防止故障或运行减慢这种情况传播,而且有助于在发生问题时确定bug在哪里。许多遇到过数据库问题的人都在应用或Web层见证过这一点,因为一个很慢的查询使得连接受到阻碍堆积起来了,然后应用服务器上的套接字一直保持打开状态。数据库的监控系统可能不会发出故障信号,但应用的监控系统则会发出故障信号。这种情况是在应用和数据库服务器间使用了同步调用造成的,而且这种问题还很难诊断。

当然,不能对系统中所有方法和层之间的调用都使用异步调用,所以真正的问题是哪些调用应该采用异步调用。在使用非异步调用时,应该具有超时设置,能够在同步调用的方法或服务失败时,优雅地处理错误或继续进行处理。决定哪些调用可以采用异步模式的方法是基于下列标准分析每个调用。

外部API/第三方。调用的是第三方的方法或外部API吗?如果是,那么一定要采用异步调用。调用外部方法可能出现的问题太多,所以不能采用同步调用。你一定不想让自己的系统健康和可用性与你不能控制的系统紧密关联在一起。

长时间运行的进程。要调用的进程是不是运行时间很长?运行的计算需求和1O需求是不是很高?如果是,最好采用异步调用。运行慢的进程是比停机更棘手的问题。

容易出错的/频繁更改的方法。调用的方法会频繁更改吗?修改的次数越多,代码中有bug的可能性越大。不要把关键代码和需要频繁更改的代码关联在一起,否则会造成故障数量增加。

时间约束。当两个进程间没有时间约束时,考虑发出请求后就不再管什么状态的子进程。这个场景可能是新注册的用户收到一封欢迎邮件。虽然系统关心邮件是否发送出去了,但不应该等待邮件发送出去了才给用户返回注册页面的结果。

对于决定网站制作是否使用异步调用来说,这只是几条最重要的标准。我们把归纳所有标准作为练习留给读者。虽然我们能再列出十条标准,但随着列出标准的增多,它们可能更适用于特定的系统。另外,和你的开发团队一起做这个练习,这会让团队中的每个人都注意到使用同步调用和异步调用的利弊,从而遵循本原则,更好地扩展系统。

网站建设计最新案例赏析:


深圳趣团建文化传播网站制作首页设计效果图
深圳趣团建文化传播
深圳华力兴新材料股份网站制作首页设计效果图
深圳华力兴新材料股份
深圳大狮影业摄影广告网站制作首页设计效果图
深圳大狮影业摄影广告
东莞莲泉净水设备网站制作首页设计效果图
东莞莲泉净水设备
深圳共安智能科技网站制作首页设计效果图
深圳共安智能科技
山东恒美科技网站制作首页设计效果图
山东恒美科技
广州庄齐实验室工程网站制作首页设计效果图
广州庄齐实验室工程
浙江爱就推门玩具网站制作首页设计效果图
浙江爱就推门玩具
阳光雨露信息技术服务网站制作首页设计效果图
阳光雨露信息技术服务
深圳市航冠实业网站制作首页设计效果图
深圳市航冠实业
 

网站建设行业资讯推荐阅读:


服务专业的网站设计公司哪家不错 备案流程介绍网站优化推广的手段有哪些企业网站设计会影响网站跳出率吗如何降低网站跳出率企业网站建设需要了解的一些事什么是定制软件开发企业如何建设网站才能提高收录软件定制开发的关键!这些你都知道吗云浮建站做好企业网站优化的几个重要因素工信部同意“.网址”域名纳入国家域名体系商城网站设计应该考虑哪些问题SEO系列教程:域名和主机对SEO的影响企业网站建设需要注意哪些法律规定企业网站建设时有哪些注意事项深圳网站制作 很好的网站设计制作公司哪个品牌好 网页设计排版需注意哪些问题响应式网站建设有哪些要注意的标准易捷网络建站:五个妙招教你如何推广网站如何通过微信公众号来推广产品 服务专业的网站设计费用 易捷网络建站:域名被劫持应该如何处理网站建设怎样做才能突出核心内容介绍两款网站模型设计工具公司网站建设的四个要点品牌网站建设有什么特色呢如何为初创企业建设网站中小企业建站初期不应忽略的问题关于“网络订餐热”的背后解析网页制作怎样才能保证吸引住眼珠收录内容少或不收录的主要原因是什么科技分享做百度知道的技巧经验!基本建设外贸网站必须留意的关键点难题有什么科技浅谈:成功的企业网站建设需要具备什么移动网站建设需要注意的问题深度挖掘网络营销的潜在价值 相关软文在提升网站SEO提升层面的工作经验手机网站网页设计有哪些主要事项深圳网站设计品牌型网站建设始于视觉归于体验网站打不开是什么原因造成的优秀的网页设计需要注意哪些问题 企业网站设计公司专业定制 深圳网站制作|企业网站制作如何应对百度算法有哪些技巧企业如何做好移动端手机网站网站优化排名如何领先竞争对手网站网站建设如何优于同行从摩托罗拉的倒下来看互联网营销的重要性-深圳网站设计分享网站建设中域名的选择规则深圳网站建设中网站设计版面布局的平衡性分享成功运营一个网站过程中的四大因素了解一下营销型网站建设具有哪些特点呢网站架设必须留意难题有什么深圳网站建设中网站设计常用技术如何提升气质和品质把个人博客做到百度第一名的一些经验分享注册域名这种常见问题要了解广州网站建设公司讲解360收录为什么比其它搜索引擎少做网站建设前需要考虑什么问题企业网站怎么选择自助建站系统国际网站建设的标准是什么新站分析策划网站的几点建议
企业网站建设行业信息服务发布平台!
(www.fantodo.com)版权所有
QQ在线咨询