微信紅包架構

架構圖

發紅包

1.爲了減輕服務器端壓力,在客戶端對紅包金額數值進行拆分

2.用算法爲每個紅包加一個唯一標識id。此處我採用的是uuid(雪花算法)+ip+時間戳

3.請求通過nginx分發到各個服務器。

4.服務器把數據雙寫到數據庫中。

5.服務器同時也把數據雙寫寫入redis中。

 

搶紅包

1.搶紅包請求通過nginx分發到各個服務器。

2.雙寫到同一個消息隊列中一個個處理。

3.將數據雙寫入同一個redis中(此時,便已經會返回你搶到了多少錢,但是真正多少錢此時還沒有同步到數據庫中)

4.每過一段時間便會把redis中的數據同步到數據庫中。

5.返回發紅包時客戶端拆分成的一份金額。

 

如果沒有同步到數據庫那我查看到的金額是怎麼呢?

1.如果併發不高會很快同步到數據庫

2.如果併發高的情況下,會先在客戶端同步假數據顯示,但是這個金額依舊可以操作,客戶端會幫你進行相應的處理。

 

爲什麼使用nginx?

nginx用C++寫的,apache用java寫,會慢一點

 

爲什麼使用redis?

1.redis的抗併發能力比數據庫好很多倍。

2.存redis相當於存緩存,增刪改查都很快。

 

爲什麼雙寫?

有備份。如果有一個崩潰,另外一個可以繼續使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章