原创 ElasticSearch(3)

導入tmdb tmdb是電影數據,他的數據量很大,非常適合用作es實踐。直接谷歌kaggle tmdb下載。 首先還是要在es上建立mapping: PUT /movie { "settings": { "number_of

原创 機器學習簡介,ALS、LR、GBDT

市面上的主流app,大多數情況下不同的用戶看到的頁面都是不同的,這裏面就有一個推薦的因素了。 那麼我們如果想要做推薦,首先需要實現的當然是千人千面,也就是不同的人推薦展示的內容是不一樣的,再有就是需要根據場景去推薦。 推薦的方法 基於規則

原创 ALS召回、LR、GBDT排序的實戰,A/B Test

在生成ALS和LR模型以後,接下來就可以用在代碼中了。 首先ALS,其實在數據已經存在數據庫中了,只要從中取出來,去掉個逗號之類的就好 @Service public class RecommendService { @Auto

原创 11.防刷限流

之前我們已經講了流量削峯,接下來講下防刷限流。 首先我們可以使用比較通用的驗證碼,包裝秒殺令牌前置,需要驗證碼來錯峯。 我們可以使用awt來生成圖片: public class CodeUtil { private static

原创 8.交易方面的優化,redis和rocketmq

我們對於交易進行一下200個線程壓測,看下應用服務器的資源: 再看下壓測結果: 接下來用1000個線程看下數據庫資源: 並且耗時也加大了: 那麼對於下單我們一般會有幾個步驟:1.校驗商品是否存在,用戶是否合法,購買數量是否正確。2

原创 1.高併發下的系統優化-總覽+單機壓測

關於併發下的優化有很多,接下來總結一下並一一實踐測試一下: 讀操作: 首先是單機優化: 1.數據庫方面:優化語句,避免出現模糊查詢、多表逗號等。 2.數據庫方面:讀操作:給數據庫加索引,增加查詢速度。 3.數據庫方面:增加數據庫socke

原创 Springboot集成SpringSession

在傳統web應用中,session都是交給容器管理,但是對於分佈式或是集羣,如果交給web容器管理的話,自然是行不通的,除非是web容器共享session,但是這樣做需要入侵web容器,提高問題的複雜度,並且集羣機器之間要相互耦合。因此,

原创 Tomcat+nginx集羣搭建

Tomcat集羣,可以提高服務的性能,併發能力以及高可用性。提供項目架構的橫向擴展能力。 那麼Tomcat集羣的實現原理是?通過nginx負載均衡進行請求轉發。 Tomcat單機部署多應用 Linux下: 在/etc/profilexia

原创 linux部署java

安裝jdk 去官網下rpm包,cd到文件夾後運行命令來賦予權限: chmod 777 jdk-8u241-linux-x64.rpm 接下來用rpm工具安裝java: rpm -ivh jdk-8u241-linux-x64.rpm 安裝

原创 jemeter性能壓測部署

性能壓測所需工具:jemeter,可在阿帕奇下載。下載後windows下直接bin目錄下cmd啓動即可。 關於jemeter工具,我們還需要知道幾點: 線程組:jemeter用來壓測高併發下系統的表現,因此jemeter提供了一個線程組的

原创 mysql分佈式性能優化

上面已經介紹了主從的方式,在這裏完善一下。 主從分佈的優點是實現了備份和讀寫分離,master只需要專門負責寫操作,讀操作交給slave來執行,然後主從數據庫通過bin_log來異步更新,當然這樣也會有一個數據不同步的情況,那可以改成同步

原创 ElasticSearch(8)

之前我們已經介紹過全量索引和增量索引了,對於增量索引,我們使用了logstash定時,1分鐘掃描一次,雖然可以解決一些問題,但是對於大數據量的,可能並不適用,因此再介紹一個新的索引構建中間件。 我們對增量構建的要求:準實時性(可以理解爲異

原创 3.高併發下的系統優化-寫操作壓測

關於寫操作,想了半天感覺和讀操作差不多,那麼這裏就模擬一下秒殺的情景,看下500的數量,搶購時訂單多久搶完,排隊的情景。 測試場景:請求進來以後進行redis鑑權,查詢商品是否存在(數據庫百萬級),獲取用戶詳細信息,落單減庫存(百萬級),

原创 2.高併發下的系統優化-動態資源集羣讀操作壓測

接下來進行集羣的壓測,配置跟單機的一樣,一臺數據庫+redis+mq,兩臺應用,一臺nginx。 沒有任何優化的情況下: 可以看出數據庫壓力很大,nginx壓力很大,而且有很多錯誤連接 優化一下數據庫(同單機): tps變高了,訪問5

原创 數據庫主從搭建及應用數據源切換

數據庫主從架構過程,參考https://www.cnblogs.com/cloudhere/p/10991520.html。 java關於主從的應用在這裏寫一下: <dependency> <groupId>org.