场景切入

先来看一个日常生活快递寄件场景,从寄件人(寄件)到收件人(收件),全流程如下:

当你准备寄送一个包裹时,通常你可以有两种寄件方式:

方案一、你亲自前往快递服务点,填写寄件单、交付包裹、等待工作人员处理,最后得到一张寄送单据。你必须在服务点等待直到所有步骤都完成。这个过程是同步的。

方案二、你可以选择在线预约快递上门取件服务,填写相关信息后,你的请求就被提交给系统。此时,你可以继续进行其他事情,而不需要等待快递员到达。系统会在后台异步处理你的请求,安排合适的快递员前来取件。这样,你就可以在等待的过程中做其他事情,无需阻塞在快递服务点。

这种寄件方式提高了效率,让用户可以更加灵活地安排自己的时间。在后台系统中,快递公司可以通过合理的任务调度,处理多个异步请求,提高寄件服务的整体吞吐量。这种方式类似于在后端异步处理任务,而用户无需等待任务完成,可以继续进行其他操作,提高了整个寄件过程的并发性和响应性。这个过程就是异步

同步和异步

我们通过这个例子抽象出同步模型和异步模型:

小结

同步模型:一个任务做完做下一个任务,阻塞

异步模型:做当前任务,只需要开启而不需要关心另一个任务如何执行,非阻塞

设计理念

有了上边的模型,对于同步和异步的概念就有了初步的认识。事实上,在架构设计中,异步思想是指通过异步处理来提高系统的性能、可伸缩性和响应速度

以下是SpringColud微服务架构的基本套件:

在架构设计中,异步思想可以应用在多个方面。常见的异步实践包括:

  1. 消息队列:通过消息队列实现异步通信,将消息发送到队列中,然后由消费者异步地处理这些消息。这种方式可以实现解耦和削峰填谷的效果。
  2. 事件驱动:系统中的各个组件通过事件进行通信,当事件发生时,系统中的其他组件可以异步地响应这些事件,从而实现松耦合和高内聚。