同步通讯和异步通讯的区别
一、同步通讯
什么是同步通讯?
在我们的生活经常碰到,比如:你和一个妹子视频通话,一旦视频电话接通,你们就建立了同步通讯;
你讲的每一句话每个动作都是立即反馈给对方的,是实时的;
但如果我们在视频通话同时,如果有其他的妹子也想和我们视频通话呢?发过来的请求肯定是接不通的,那是不是就错过机会了。(#^.^#)嘻嘻
同步调用的问题?
在我们开发项目中,同步的应用场景比如微服务中基于Feign的远程调用就属于同步方式,存在一些问题。
应用场景:支付模块
同步方式:先是支付服务调用了订单服务响应之后再调用仓储服务响应之后再调用短信服务等等
1. 耦合度高的问题
在我们开发过程中,总有需求的变动、需求的升级等问题,那如果是同步调用的方式,是不是每次需求的变动或升级都需要在原来的代码上进行修改?这就完全违背了软件开发中的开闭原则
2. 性能下降
调用者需要等待的服务提供者响应,如果调用链路过长则响应的时间等于调用时间之和;
一个系统调用时长都变长了,那还谈什么性能可言,吞吐量肯定也高不了。
3. 资源浪费
上游服务在等待下游服务的响应过程中啥也干不了,只能干等着;
调用链中的每个服务在等待响应过程中,不能释放请求占用的资源,高并发场景下会极度浪费资源。
4. 级联失败
如果服务提供者出现问题宕机,整个调用链路都会受牵连跟着出问题,如同多米诺骨牌一样,导致整个微服务集群故障。
二、异步通讯
什么是异步通讯?
好比如我们用微信发消息,我们是不是可以给多个妹子发消息?是多线操作的,但我们第一时间是收不到响应的,今天上午发的消息可能对方下午才会回复你, 时效性不好,这就是异步通讯。
异步调用解决方案
异步调用最常见的实现就是事件驱动模式;
我们不能像之前同步调用的那种方式一样在支付服务之后先后调用下游其他多个服务吧?
所以我们引入了Broker,Broker也就是事件代理者,什么是事件代理?
在我们系统中只要有人支付成功就是一个事件,这个事件就叫给Broker去管理;
我们的下游服务通过去订阅Broker,就好比你关注了微信公众号一样,只要有消息就会推送给你;
事件驱动优势
优势一:服务解耦
同之前的支付模块案例,以后产品经理要升级需求等,不需要再修改代码了,因为支付服务只需要关注自己的支付业务;
我们支付服务只要有人支付成功了,就会发布支付成功事件,那Broker就会广播通知订阅它的服务,这就解决了服务耦合的问题。
优势二:性能提升,吞吐量提高
同之前的支付服务,我们需要等待下游各服务完成响应,响应的时间等于调用时间之和;
现在我们异步调用的方式,只要用户支付成功了,支付服务只需要发布支付成功事件就行,调用时间=支付服务时间+发布事件时间,大大提高了我们的性能。
优势三:服务没有强依赖,不担心级联失败问题
如果下游其他服务出现了宕机等问题,跟我们支付服务本身是没有关系的,因为我们异步调用无需关注其他的服务,只关注业务本身就行,也解决资源浪费的问题。
优势四:流量削峰
随着业务量增加,用户越来越多,比如我们的下游系统订单等服务每秒只能处理一个请求,但我们现在有5000个请求进来,这个时候Broker就可以起到一个缓冲的作用,压力由事件代理者扛着,我们的下游系统服务就可以根据自己的能力来处理这些请求;
一个高并发就被砍平了变成了低并发,也就实现了流量削峰 。
总结:
同步通讯和异步通讯的区别相关推荐
- 同步请求和异步请求的区别
同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据 ...
- java同步异步区别_同步请求和异步请求的区别
同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...
- 同步电路和异步电路的区别
摘自 何宾著<XilinxFPGA设计权威指南>P86~P91 同步电路和异步电路的区别在于电路触发是否与驱动时钟同步,从行为上讲,就是所有电路是否在同一时钟沿下同步地处理数据. 同步复位 ...
- 同步消息和异步消息传递的区别?
在系统交互时候选择同步还是异步有时候很让人困扰,希望通过阅读这篇文章可以帮助更好的理解同步与异步. 同步与异步消息的区别 1.同步消息 同步消息传递涉及到等待服务器响应消息的客户端.消息可以双向地向两 ...
- ajax同步请求和异步请求的区别
刚毕业那会有一位面试官问我的问题,现在想做个总结 jquery 的 async 这个属性 默认是true:异步 , false:同步. 那么异步和同步到底有什么区别呢? 异步:异步处理是客户端通过事件 ...
- 同步计数器与异步计数器的区别,以及4040计数器的使用
目录 一.4040计数器原理 二.分类 1.异步计数器与同步计数器 三.应用 一.4040计数器原理 4040是由T触发器组成的而精致计数器,主要用于分频和计数. 4040内部有12个计数级,每个计数 ...
- 同步通讯和异步通讯(简单理解)
同步通信和异步通信(简单理解) 注:本篇文章只是告诉你什么是同步通信,什么是异步通信,即使没有计算机基础的同学也适合阅读,同时也能帮助计算机专业同学更好理解这个知识点.但是如果想深入学习,还需自己翻阅 ...
- Ajax之同步请求和异步请求的区别
同步与异步的概念区别 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式,是一种单线程的请求方式. 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的. ...
- 同步线程和异步线程的区别
1:同步可以看做是一个单线程操作,只要客户端请求了,在服务器没有反馈信息之前是一个线程阻塞状态(就是假死状态,不能操作其他方法). 2:异步肯定是个多线程.在客户端请求时,可以执行其他线程,并且在把这 ...
最新文章
- github开源项目分享
- 滴滴算法大赛算法解决过程 - 机器学习
- 在Opendaylight中karaf启动的时候自动安装自己编写的feature
- php客户端连接远程redis,phpredis客户端连接Redis--华为云DCS for Redis使用经验
- 解决The current branch is not configured for pull No value for key branch.master.merge found in config
- 【树莓派学习笔记】一、烧录系统、(无屏幕)配置Wifi和SSH服务
- java解析csv文件写入mysql_java读取cvs文件并导入数据库
- oracle+tquery,Oracle测试题及答案
- 没有主清单属性_梦幻西游电脑版:神威组第一大唐?大佬两天更新200W硬件,这身属性难被超越!太狠了...
- 二维数组作为形参的参数传递问题[08-0704]-转
- 全新 HTML 5.1 工作草案发布
- Visual Studio 2005 重置设置
- CCF NOI1007 计算余数
- php 视频播放加密,如何在HTML5页面播放加密视频
- 无人驾驶常用专有名词
- 多张tif图片合成一张tif图片
- 对抗攻击(Adversarial Attack)
- Python基础——类属性、类方法、异常
- windows环境下安装RabbitMQ(超详细)
- form表单提交数据的两种方式——submit直接提交、AJAX提交
热门文章
- 【debug】汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
- [转]经验分享:微信小程序外包接单常见问题及流程
- 问题:Traceback (most recent call last): File “D:/xiangmu/python/test/test1.py“, line 100, in <module
- 超详细!Vue-coderwhy个人学习笔记(二)(Day3)
- GSSI地质雷达Radan7.5.18.02270视窗雷达数据分析软件中文免费版
- 华为云GaussDB首席架构师冯柯:摘取皇冠上的明珠,华为云数据库的创新与探索
- 寒假训练十(map,pair,string)2020.02.17(4题)
- 从键盘分别输入年、月、日判断这一天是当年的第几天
- 微信朋友圈新增仅最近一个月可见;OpenAI 发布音乐生成网络 MuseNet
- 端口波特率有专门测试软件,波特率检查工具