先来看一个日常生活快递寄件场景,从寄件人(寄件)到收件人(收件),全流程如下:
当你准备寄送一个包裹时,通常你可以有两种寄件方式:
方案一、你亲自前往快递服务点,填写寄件单、交付包裹、等待工作人员处理,最后得到一张寄送单据。你必须在服务点等待直到所有步骤都完成。这个过程是同步的。
方案二、你可以选择在线预约快递上门取件服务,填写相关信息后,你的请求就被提交给系统。此时,你可以继续进行其他事情,而不需要等待快递员到达。系统会在后台异步处理你的请求,安排合适的快递员前来取件。这样,你就可以在等待的过程中做其他事情,无需阻塞在快递服务点。
这种寄件方式提高了效率,让用户可以更加灵活地安排自己的时间。在后台系统中,快递公司可以通过合理的任务调度,处理多个异步请求,提高寄件服务的整体吞吐量。这种方式类似于在后端异步处理任务,而用户无需等待任务完成,可以继续进行其他操作,提高了整个寄件过程的并发性和响应性。这个过程就是异步。
我们通过这个例子抽象出同步模型和异步模型:
同步模型:一个任务做完做下一个任务,阻塞
异步模型:做当前任务,只需要开启而不需要关心另一个任务如何执行,非阻塞
有了上边的模型,对于同步和异步的概念就有了初步的认识。事实上,在架构设计中,异步思想是指通过异步处理来提高系统的性能、可伸缩性和响应速度。
以下是SpringColud微服务架构的基本套件:
在架构设计中,异步思想可以应用在多个方面。常见的异步实践包括: