当前位置:合肥网站优化 > seo网站优化 >

尽可能使用异步通信

来源:懒猫seo博客  作者:懒猫  发布时间:2020-08-13 14:47:53  阅读:  分类:seo网站优化

导读:尽可能使用异步通信,而不是同步通信。服务和各个层之间的所有调用。使用程序设计语言专有的调用,确保发出了请求,且没有在等待。同步词用会使整个程序执行停止来等待一个响...

尽可能使用异步通信,而不是同步通信。服务和各个层之间的所有调用。使用程序设计语言专有的调用,确保发出了请求,且没有在等待。同步词用会使整个程序执行停止来等待一个响应,从而把所有的展务和各个层维系在一起,造成级联性的故障。使用异步通信技术可以确保每个服务和层是独立的,这样系统的可扩展程度比所有部件都掲合在一起的系统大得多。一般的异步调用,无论是在一个服务内还是在两个服务间,实现起来都比实现同步调用难得多。原因在于异步调用通常都需要通知最初发送消息的服务,告诉它请求已经完成了。如果你发送完请求就不再理会,那就没必要再与调用方法通信或协作了。实现这个的方法很多且很简单,包括如下所示的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%。我们介绍过,根据不同的客户,把系统的资源池划分成独立的泳道。这样做的好处是如果一个泳道出了问题,不会術生到其他客户的泳道,这可以将问题的影响最小化。此外,检测故障也容易得多,因为同一个代码右采用异步调用的模块或方法也具有这种能力。
原创声明:本站所有文章皆由懒猫原创,转载请注明出处与原文地址:http://www.lanmaoseo.com/seowzyh/6660.html
版权:【本站部分转载文章能找到原作者的我们都会注明,若文章涉及版权请发至邮箱:1695770950@qq.com,我们以便及时处理,可支付稿费。向本站投稿或需要本站向贵司网站定期免费投稿请加QQ:1695770950】
更多信息请关注微信:18621662294
技术支持每天都在等您哦!