热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

同步调用与异步调用分析

服务与服务间的调用方式分为两种同步调用、异步调用。同步调用可以理解为A打电话给B,需要实时响应,异步调用类似A给B发送邮件,B不需要马上回


       服务与服务间的调用方式分为两种同步调用、异步调用。同步调用可以理解为A打电话给B,需要实时响应,异步调用类似A给B发送邮件,B不需要马上回复。这两种调用方式应该说都有的优缺点。但是在面对一个高并发吞吐量的系统,异步方式比同步方式可以大大增加系统的吞吐量。A,B,C,E 可以同时给F发送邮件,F可以不在线,不用立即回复。对于服务化后服务与服务之间的调用也类似这样一个原理。同步调用虽然只是耦合外部接口,实时性上会高于异步调用,但是会带来很多的问题。
1.调用方的吞吐量受限于被调用方的吞吐量,一旦某个服务响应特别慢,那么整个调用链的性能都会受到影响。
2.同步调用会导致线程被阻塞,你想想当一个调用需要等待另外一个服务响应回来时,相当于线程被阻塞在哪里,服务的线程资源是很可观,我们用户可以有成千上万个,但是我们服务器缺不允许启动1w个线程。这样会导致整个系统的性能都耗费在等待返回结果的这一个过程中。
3.服务与服务之间的调用只能是1对1的关系,想要做到一对多是很困难的。
4.被调用方一定失败,会导致服务发起方也跟着失败,从而引起雪崩的问题。


        异步调用相对于同步调用来说,虽然在理想的情况下请求响应时间会慢与同步调用,但是可以加大系统的吞吐量,还可以简化系统与系统之间的耦合性,即使被调用方宕机了也不影响业务发起方。
在资源服务器有限的情况下,在针对大促的时候可以,异步调用的模式把一些非关键的服务器挪作他用,例如用户下单成功后通知物流系统,发送下单成的消息这些服务全部停止掉,挪给订单服务器使用。因为这些服务直接停了也不会影响系统的正常下单逻辑。我们只需要保存好这些消息,当系统不那么繁忙的时候在把之间挪作他用的服务器在重新启动回来,这样下单成功通知、物流通知系统又可以恢复正常的流转。当然异步调用的好处远不止以上说的这些,什么样的场景适合这类方式,还需要大家多多的思考,不知道大家有没了解过saga,异步调用的最终模型其实就是saga(服务编排),这里面其实也并不是否定同步调用的不好,同步从整个理解逻辑上来说是很直观的。如果一个系统里面所有的通讯都走异步其实也是很恐怖的他的代价其实也是蛮大的,所以应用异步应该在系统的瓶颈位置上,领域边界上,而不是所有的调用都是异步,这样的开发量太大了,得不偿失。又或者我们的系统压根就是一个简单的管理系统,要求没那么高,同步的模型也是ok的,因地制宜,什么马配什么鞍,一定要给捷达增加一个法拉利V8的引擎不是不行,适合自己的项目,适合的场景才是追重要的。


推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文总结了淘淘商城项目的功能和架构,并介绍了传统架构中遇到的session共享问题及解决方法。淘淘商城是一个综合性的B2C平台,类似京东商城、天猫商城,会员可以在商城浏览商品、下订单,管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。商城的架构包括后台管理系统、前台系统、会员系统、订单系统、搜索系统和单点登录系统。在传统架构中,可以采用tomcat集群解决并发量高的问题,但由于session共享的限制,集群数量有限。本文探讨了如何解决session共享的问题。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 如何使用代理服务器进行网页抓取?
    本文介绍了如何使用代理服务器进行网页抓取,并探讨了数据驱动对竞争优势的重要性。通过网页抓取,企业可以快速获取并分析大量与需求相关的数据,从而制定营销战略。同时,网页抓取还可以帮助电子商务公司在竞争对手的网站上下载数百页的有用数据,提高销售增长和毛利率。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • vb6集成ad登录共享文件_SCSP实验2单点登录
    01—实验目的掌握单点登陆相关原理和深信服配置02—实验环境1.AC版本v12.0.42AC1地址:https:172.172.1.1AC2地址:htt ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 1、PLSQLDeveloper记住登陆密码在使用PLSQLDeveloper时,为了工作方便希望PLSQLDeveloper记住登录Oracle的用户名和密码&#x ... [详细]
author-avatar
流浪汉中的小男人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有