高併發程式怎麼實現,一般是多執行緒來處理(執行緒池),執行緒池引數設定這個一般需要一個預估值,透過計算得到,比如你的機器是8核,處理一個請求計算得到用時100ms,一個cpu一秒就是處理10條請求,8核也就是80了,核心執行緒個數和最大執行緒數這個需要一個範圍,建議是cpu核數的整倍數,以及佇列大小這些都是可以計算預估出來,考慮cpu運算特別快,一般這個時候建立執行緒開銷就太大了,不如直接使用執行緒池,只是增加一點cpu執行緒切換開銷,如此一來你完全可以把執行緒開大一點,比如最大執行緒數64個那麼又提高了8倍就是600個請求了,假如每秒有2000個請求同時過來,這個時候你只需要多部署4個服務就是了,如此類推,
但是當請求又增加的話,你就需要考慮其他因素了,比如消峰問題,請求丟失.可以使用訊息佇列來解決
一般的業務問題都是以訂單系統來舉例子.除了要解決資料持久化問題還要解決高併發下查詢問題,使用mysql(分庫分表)+elasticSearch來做近實時查詢,業務上去了(壓力都在es這邊的時候)就選擇這個技術mysql(分庫分表)+elasticSearch+hbase了.這個時候elasticSearch就做條件查詢,hbase就做等值查詢.結合起來完美解決問題.
忘了說redis也可以做點事情,看你怎麼玩了
好了是時候結束這一波裝逼.
高併發程式怎麼實現,一般是多執行緒來處理(執行緒池),執行緒池引數設定這個一般需要一個預估值,透過計算得到,比如你的機器是8核,處理一個請求計算得到用時100ms,一個cpu一秒就是處理10條請求,8核也就是80了,核心執行緒個數和最大執行緒數這個需要一個範圍,建議是cpu核數的整倍數,以及佇列大小這些都是可以計算預估出來,考慮cpu運算特別快,一般這個時候建立執行緒開銷就太大了,不如直接使用執行緒池,只是增加一點cpu執行緒切換開銷,如此一來你完全可以把執行緒開大一點,比如最大執行緒數64個那麼又提高了8倍就是600個請求了,假如每秒有2000個請求同時過來,這個時候你只需要多部署4個服務就是了,如此類推,
但是當請求又增加的話,你就需要考慮其他因素了,比如消峰問題,請求丟失.可以使用訊息佇列來解決
一般的業務問題都是以訂單系統來舉例子.除了要解決資料持久化問題還要解決高併發下查詢問題,使用mysql(分庫分表)+elasticSearch來做近實時查詢,業務上去了(壓力都在es這邊的時候)就選擇這個技術mysql(分庫分表)+elasticSearch+hbase了.這個時候elasticSearch就做條件查詢,hbase就做等值查詢.結合起來完美解決問題.
忘了說redis也可以做點事情,看你怎麼玩了
好了是時候結束這一波裝逼.