亂說異步
異步是相對于同步而言的,也有地方稱之為“非阻塞”方式。從淺顯的字面理解,就是無需等待,由此可以肯定的是:系統的響應速度會大大增加,就用戶體驗來說,那肯定是好的,但在這字面理解的背后,異步又意味這什么?這是筆者過去常常思考而無所得的問題。時至今日,結合自己做系統的體驗和做性能的工作,若有所思:首先,說到A流程無需等待B子流程,那么是否意味著,A和B應該在業務上是不太緊密相關的?從設計角度說,他們最好是業務的兩個完全分離的關注點,典型的例子就是我們經常做的日志記錄,日志信息的處理,持久化等等,都可以無礙于主業務流程的正常執行,因此,它應該是可以異步的;
其次,如果A流程無需等待B子流程,又是否意味著,A與B在邏輯上是解耦的,無論以何種方式進行異步(線程?消息系統?),那么對于相對獨立的A和B來說都是可以單獨增加資源進行擴容(比如單獨增加日志服務器),從而提高系統的可伸縮性;
再次,如果AB異步執行,那么意味著B可能在未來的某個時間執行(相對于A執行的時間來說),這樣可以在時間維度上平攤系統的負荷,進而降低系統的負載峰值,也就是說可以使用性能差些、廉價些的機器完成相同的問題;(做性能的都非常明白,負載峰值越小,代表負載曲線越平滑)
就胡攪蠻纏這么多,嘿嘿