简单-高效-优雅

乱说异步

    异步是相对于同步而言的,也有地方称之为“非阻塞”方式。从浅显的字面理解,就是无需等待,由此可以肯定的是:系统的响应速度会大大增加,就用户体验来说,那肯定是好的,但在这字面理解的背后,异步又意味这什么?这是笔者过去常常思考而无所得的问题。时至今日,结合自己做系统的体验和做性能的工作,若有所思:
    首先,说到A流程无需等待B子流程,那么是否意味着,A和B应该在业务上是不太紧密相关的?从设计角度说,他们最好是业务的两个完全分离的关注点,典型的例子就是我们经常做的日志记录,日志信息的处理,持久化等等,都可以无碍于主业务流程的正常执行,因此,它应该是可以异步的;
    其次,如果A流程无需等待B子流程,又是否意味着,A与B在逻辑上是解耦的,无论以何种方式进行异步(线程?消息系统?),那么对于相对独立的A和B来说都是可以单独增加资源进行扩容(比如单独增加日志服务器),从而提高系统的可伸缩性;
    再次,如果AB异步执行,那么意味着B可能在未来的某个时间执行(相对于A执行的时间来说),这样可以在时间维度上平摊系统的负荷,进而降低系统的负载峰值,也就是说可以使用性能差些、廉价些的机器完成相同的问题;(做性能的都非常明白,负载峰值越小,代表负载曲线越平滑)
    就胡搅蛮缠这么多,嘿嘿

posted on 2008-06-14 20:52 BigOnion 阅读(141) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: