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