产品经理需要了解的那些技术2:同步、异步、阻塞、同步服务
异步/同步
是处理模式的一种机制,一般用于函数、接口或者业务处理。
同步
处理业务上一级函数或者调用服务,必须等被调用的函数或者服务返回处理结果后,才可以继续处理。
举个例子:a去银行营业厅办事,等轮到a去窗口了,a说我要办某某业务,然后里面的营业员就开始办理,然后a要一直在窗口等着,直到里面营业员办完,才可以离开。
a在窗口等待,走不了。这种等待的模式,被称为阻塞。
异步
处理业务上一级函数或者调用服务,在对下一级的函数或者服务进行调用后,不等待被调用的函数或者服务返回处理结果,就继续出处理其他业务。等被调用者返回结果时,才继续处理对应业务。
举个例子:a去饭店吃饭,点了餐之后,可以随便溜达,等饭店做好之后,会进行叫号。a听到叫号后,去取餐,然后进餐。在等待的时候,a可以随便溜达随意干什么(我们不讨论a出饭店之后溜走的事)只是说这个状态。
a不专门等待,可以随便干点什么,这个不用专门等待的模式,也称为非阻塞。
叫号,属于回调函数(回调地址), 是a给b留下,b处理完后通知a的方式。
总结
同步/异步模式可以用在函数、服务、以及业务之间。
场景参考
产品经理在设计业务时,也可以参考同步、异步的这种机制。
耦合性比较强、业务处理比较短点的业务,一般使用同步模式,例如注册用户、新增用户、上传文件等。
耦合性没那么强,业务处理时间比较长的业务,则推荐使用异步模式,例如批量导入用户,文件在线转码等。
批量导入用户,例如我们需要导出1000个用户,等上传用户列表文件后,再进行用户创建。这时候如果使用同步模式,则用户需要一直在页面上等待,不但用户体验不好,而且也没有意义。这时候就可以使用异步模式,在上传完成后,就告诉用户已经完成操作,后面等系统进行创建即可,等创建之后再告知用户创建的结果即可。
同步服务
这里的同步其实是对服务的一个修辞,说明这个服务是用于数据同步的。类似的还可以有消息服务、订单服务等,跟上面的机制模式没有关系。
同步服务也可以是异步机制。