原创 關於springboot項目使用@Transactional註解事務不回滾的問題

數據庫的事務在我們的項目中應用廣泛,最近在一個springboot項目中遇到了使用@Transactional註解後事務不回滾的問題,代碼如下: 後來查資料發現是因爲數據庫(MySQL)用的引擎是MyISAM,而MySQL的MyISAM

原创 【商城秒殺項目】-- 對返回json結果的封裝、通用緩存Key的設計與封裝

對返回json結果的封裝 在MVC模式中Controller接口類裏面一般有兩種返回值:rest api的json格式數據、頁面;在前後端開發模式中,後端開發人員與前端開發人員會對接口返回值進行約定,返回值一般是以rest api的jso

原创 服務治理組件Eureka簡介、初步使用

Eureka簡介 Eureka是Netflix開發的服務發現框架,本身是一個基於REST的服務,主要用於定位運行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。SpringCloud將它集成在其子項目spring-cl

原创 Hystrix斷路器簡介及應用

Hystrix斷路器簡介   Hystrix對應的中文名字是“豪豬”,豪豬身上長滿了刺,能保護自己不受天敵的傷害,代表了一種防禦機制,這與Hystrix本身的功能不謀而合,因此Netflix團隊將該框架命名爲Hystrix,並使用了對應的

原创 Hystrix集羣監控Turbine

前面Dashboard演示的僅僅是單機服務監控,但實際項目基本都是集羣,集羣監控用的是Turbine,Turbine是基於Dashboard的 先搞個集羣,在microservice-student-provider-hystrix-10

原创 【商城秒殺項目】-- 使用JSR303進行參數校驗、全局異常處理

什麼是JSR-303 JSR是Java Specification Requests的縮寫,意思是Java規範提案,是指向JCP(Java Community Process)提出新增一個標準化技術規範的正式請求。任何人都可以提交JSR,

原创 【商城秒殺項目】-- 分佈式Session的實現、使用Aop校驗Token令牌

通常秒殺項目可能不止部署在一個服務器上,而是使用分佈式部署在多臺服務器,這時候假如用戶登錄是在第一個服務器,第一個請求到了第一臺服務器,這是沒問題的;但是第二個請求到了第二個服務器,那麼用戶的Session信息就丟失了 解決:使用sess

原创 【商城秒殺項目】-- 流量削峯應該怎麼做

如果你看過秒殺系統的流量監控圖的話,你會發現它是一條直線,在秒殺開始那一秒是一條很直很直的線,這是因爲秒殺請求在時間上高度集中於某一特定的時間點。這樣一來,就會導致一個特別高的流量峯值,它對資源的消耗是瞬時的。 但是對秒殺這個場景來說,最

原创 Ribbon的負載均衡

前面的博客用Ribbon搭建了初步的例子,但是還沒實現真正的負載均衡,因爲只有一個生產者,要達到負載均衡效果需要先搞三個服務提供者形成集羣,然後才能演示負載均衡,以及負載均衡策略。本篇博客跟前面搭建Eureka集羣一樣,使用一個啓動類來跑

原创 關於docker上安裝的MySQL無法使用group by的問題

問題描述:同一段使用了group by來進行分組的SQL,在本地的MySQL執行是沒問題的,但放到docker上安裝的MySQL(版本是5.7)去執行就有問題,如下圖: 問題出現的原因:默認情況下,MySQL5.7鏡像中的sql_mo

原创 Config配置搜索路徑

前面所有的GIT遠程端配置文件都放在是根目錄的,所有請求默認都是根目錄,但是有時候,項目很多,配置文件需要根據子目錄來劃分,這時候,就需要來配置搜索路徑了;比如aaa項目的配置文件放aaa目錄下,bbb項目的配置文件放bbb目錄下,不配置

原创 Feign簡介及應用

在前面的博客裏已經集成了通過Ribbon去調用註冊中心裏已註冊好的服務,但這樣還是會使代碼不方便維護,原因如下圖: Feign簡介 Feign是一個聲明式的Web Service客戶端,它使得編寫Web Serivce客戶端變得更加簡單

原创 【商城秒殺項目】-- 秒殺接口地址隱藏

每次點擊秒殺按鈕的時候,才生成秒殺地址,秒殺地址不是寫死的,而是從服務端獲取,動態拼接而成的地址(HTTP協議是明文傳輸,前端是防不住惡意用戶的攻擊,所以安全校驗要放在服務端,從而禁止掉這些惡意攻擊),本篇博客記錄如何進行秒殺接口地址隱藏

原创 【商城秒殺項目】-- 秒殺的業務邏輯、接口的優化

秒殺業務場景併發量很大,瓶頸在數據庫,怎麼解決?可以加緩存。用戶在發起請求時,從瀏覽器開始,在瀏覽器上做頁面靜態化直接將頁面緩存到用戶的瀏覽器端,然後請求到達網站之前可以部署CDN節點,讓請求先訪問CDN,到達網站的時候使用頁面緩存。頁面

原创 【商城秒殺項目】-- 使用數學圖形驗證碼來進行限流

秒殺接口地址隱藏可以防止惡意用戶通過頻繁調用接口來請求的操作,但是無法防止機器人,刷票軟件還是可以惡意頻繁點擊按鈕來刷請求秒殺地址接口 高併發下場景,在剛剛開始秒殺的那一瞬間,迎來的併發量是最大的,減少同一時間點的併發量,將併發量分流也是