南昌seo-赣州九江网站建设-宜春吉安做网站推广公司
南昌seo动态
当前位置:首页 > 南昌seo动态

尽可能使用异步通信

发布时间:2019-04-13 作者: 来源:

尽可能使用异步通信,而不是同步通信。服务和图层之间的所有通话。使用特定于编程语言的调用来确保发出请求并且不等待。同步字的使用导致整个程序执行停止等待响应,从而将所有展品和层绑在一起,从而导致级联故障。使用异步通信技术可确保每个服务和层都是独立的,因此系统比任何组合所有组件的系统都具有更高的可扩展性。 TR TR 无论是在服务中还是在两个服务之间,一般的异步调用都比实现同步调用更难实现。原因是异步调用通常需要通知最初发送消息的服务,告知它已完成请求。如果您在发送请求后不在意,则无需与调用方法进行通信或协作。有很多简单的方法可以做到这一点,包括下面显示的PHP函数,它利用符号在后台运行进程。 TR TR TR 但是,在提出请求后,并非所有服务都不再控制其状态。通常,调用方法想知道被调用方法何时完成。原因可能是在返回结果之前发生了其他处理。可以设想电子商务平台上的场景,即需要基于打折代码重新计算邮资。理想的情况是同时执行这两项任务,而不是计算邮资(可能需要调用供应商的第三种方法),然后处理购物车中商品的折扣代码。但在两者完成之前,我们无法将最终结果发送给用户。 TR   大多数编程语言都有一种机制,用于父方法和被调用异步子方法之间的协调和通信,称为回调。在C/C ++语言中,这是通过函数指针完成的。在Java语言中,它由对象引用实现。有许多设计模式使用回调,例如委托设计模式和观察者设计模式。但为什么还要求异步方法或服务呢? TR我们必须要求异步调用的原因是因为如果我们使用同步调用,所有方法,服务和层将保持在一起。其中任何一个都会减速或失败,从而导致整个系统出现延迟。级联失败。将所有组件连接在一起可能会导致故障成倍增加。我们只讨论了这个概念的可用性,但它也适用于每个KLOC的错误概率。如果方法A,B和C都有99.99%6没有错误的机会,并且A方法同步调用B方法,并且B方法同步调用C方法,则逻辑流中的错误概率为整个系统是99.99%和次。 ; 99.99%&倍; 99.9%=99.97%。 TR TR 我们介绍了系统的资源池根据不同的客户划分为独立的通道。这样做的好处是,如果一条车道出现问题并且不会发生其他客户的泳道,则可以最大限度地减少问题的影响。此外,检测故障要容易得多,因为对同一代码使用异步调用的模块或方法具有此功能。 TR TR 异步调用可防止故障或减速传播,并帮助确定问题发生时的错误位置。许多遇到数据库问题的人在应用程序或Web层看到了这种情况,因为查询速度非常慢导致连接被阻止,并且应用程序服务器上的套接字保持打开状态。数据库的监控系统可能不会发出故障信号,但应用程序的监控系统会发出故障信号。这种情况是由在应用程序和数据库服务器之间使用同步调用引起的,并且这个问题很难诊断。 TR   当然,您不能对系统中所有方法和层之间的调用使用异步调用,因此真正的问题是应该异步调用哪些调用。使用非异步调用时,应该具有正常处理错误的超时设置,或者在同步调用失败的方法或服务时继续处理。决定哪些呼叫可以采用异步模式的方法是基于以下标准分析每个呼叫。 TRTR 外部API /第三方。是第三方方法还是外部API?如果是,则必须使用异步调用。调用外部方法有太多问题,因此无法使用同步调用。您不希望将系统运行状况和可用性与您无法控制的系统联系起来。 TR TR 漫长的过程。这个过程被称为运行了很长时间吗?运行的计算需求和1O要求是否高?如果是这样,最好使用异步调用。运行缓慢的过程比停机时间更困难。 TR TR 容易出错/频繁更改的方法。该方法是否经常变更?修改的次数越多,您的代码中出现错误的可能性就越大。不要将关键代码与需要频繁更改的代码相关联,因为这会增加失败次数。 TR TR 时间限制。当两个进程之间没有时间限制时,请考虑在发出请求后没有任何状态的子进程。这种情况可能是新注册的用户收到欢迎电子邮件。尽管系统关心邮件是否已发送出去,但在将注册页面的结果返回给用户之前,不应等待邮件被发送出去。 TR TR 这只是决定是否为进行异步调用的几个最重要的标准。我们将所有标准的归纳作为练习留给读者。虽然我们可以列出另外十个标准,但随着所列标准数量的增加,它们可能更适合特定系统。此外,与您的开发团队一起进行此练习,这将使团队中的每个人都注意到使用同步和异步调用的优缺点,以遵循此原则并更好地扩展系统。 TR TR