Java架構——推薦引擎非同步架構設計
如果一味追求實時設計,對於線上併發量大的業務來說,瓶頸點是很多的,一個是IO消耗時間、一個是儲存消耗時間、一個是計算消耗時間。實際情況並不是一個方面的問題,而是三個方面交織在一起。

IO消耗時間,包含資料讀取,讀取資料量大,量大IO就會消耗時間長。做了很多優化方式:1、多個key批量拉取,比單個迴圈要優化很多時間,合併了IO,將多次IO減少為了1次。2、多執行緒讀取,通過多執行緒方式增加並行性,原來一個執行緒讀,變成多個來提升效能。
給大家推薦一個程式員學習交流群:702895049。群裡有分享的視訊,還有思維導圖
群公告有視訊,都是乾貨的,你可以下載來看。主要分享分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰學習架構師視訊。
儲存消耗,儲存消耗包含多個方面。1、讀取儲存速度本身影響著線上效能,大的儲存用的是redis。2、讀取redis本身消耗時間,採取部分資料提前拉取方式讀取,快取在記憶體減少讀取消耗時間,本身也是存在一個問題,就是本地記憶體大小問題,快取資料量侷限於本地記憶體大小。3、儲存量的影響,並且對於儲存不是能夠處理無限的qps,當資料拉取過多,會導致儲存效能下降。
計算消耗,計算本身消耗cpu。1、將計算拆成新的服務,減少線上業務服務本身計算,但是增加了IO。2、多執行緒計算,通過多執行緒併發計算,減少計算時間,提升效能。
嘗試了很多優化方式,取得了一定效果,但是每一種也都會帶來一定問題,1、比如多執行緒能提升併發,但是過多執行緒會導致效能下降,甚至影響服務穩定。2、服務拆分本身可以增加很多計算量以及解耦,但如果服務之間傳輸資料特別多,時間都消耗在IO傳輸上,這點如果時間太長,拆分的優勢就沒了。
分散式帶來好處是計算分散,問題也是需要更多機器資源,系統之間也會變複雜。並且能帶來一定擴充套件,但不一定是特別大。
要想獲得更多架構設計可能,可能就要轉換思路,採取非同步方式進行推薦架構設計,握緊手裡面什麼都沒有,張開手獲得的是一切。架構設計也是同理,需要換個思路,獲得更多可能。
做事情挺重要一點是不斷有新的思路,新的思路難點在於推進,特別是在大公司,有好處都上去了,有困難都跑的遠遠的,也就更需要初心,初心是做一件事,將來才有可能有機會做成更多事,初心是kpi過一段時間人就廢了。
對於備戰雙11這種事,就是多少艱苦,不可告人。在這個過程中更多是要自己有收穫,對於每個技術問題有自己的思考。更多的得到,避免功勞當作苦勞自己有收穫,一定要有思考對於遇到的事與問題,解決眼前的問題並想一些根本解決方案,希望對你有點啟發。
給大家推薦一個程式設計師學習交流群:702895049。群裡有分享的視訊,還有思維導圖
群公告有視訊,都是乾貨的,你可以下載來看。主要分享分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰學習架構師視訊。
下面是我花了很久整理出來的Java架構師進階必經之路,喜歡的關注我點贊,感興趣的也可以加群討論交流!
