如何利用線程池實現互聯網驗證碼保護服務
- 1、業務背景與實現思路
- 2、代碼實操
1、業務背景與實現思路
首先介紹一下業務背景,假設我們的系統是一個短視頻播放網站,每個新加入的用戶都需要注冊賬號并綁定手機號。為了驗證用戶手機的正確性,我們的系統會發送一條驗證碼到用戶注冊時填寫的手機上,用戶在有效期內填寫驗證碼進行認證,通過認證之后即綁定該手機號到用戶注冊的賬號上。完整的業務流程如圖1所示。
2、代碼實操
當用戶注冊賬戶成功之后,需要發送短信驗證碼,因此賬戶注冊流程中會調用驗證碼發送模塊提供的驗證碼發送服務。因此我們實現一個名為AsyncSmsVerificationCodePusher的服務,對外提供驗證碼生成和響應的短信下發能力。最終調用第三方的短信推送服務,觸達用戶。
由于用戶注冊流程中,不止發送短信,還可能執行其他的業務流程。并且發送短信本身屬于跨網絡服務調用,本質上是一種網絡I/O操作,因此如果直接在業務主線程上直接同步阻塞式的調用驗證碼發送模塊的發送短信接口,會影響