阿裡神器 Seata 實現 TCC模式 解決分布式事務,真香!-編程思維

今天這篇文章介紹一下Seata如何實現TCC事務模式,文章目錄如下: 什麼是TCC模式? TCC(Try Confirm Cancel)方案是一種應用層面侵入業務的兩階段提交。是目前最火的一種柔性事務方案,其核心思想是:針對每個操作,都要注冊一個與其對應的确認和補償(撤銷)操作。 TCC分為兩個階段,分别如下: 第一階段:Try(嘗試),主要是對業務系統做檢測及資源預留 (加鎖,鎖住資源) 第

Spring boot 運行服務jar外配置配置文件方式總結-編程思維

本文為博主原創,轉載請注明出處:   由于需要在本地編譯打包,在服務器上驗證某些功能,需要頻繁修改配置,本地打包時,會将配置文件也打包的jar 包内部,這種方式下,若修改配置則需要本地修改重新上傳服務器一次,則非常耗時,所以總結了下服務器上運行jar 包時,jar包 讀取配置文件方式的優先級。   spring boot 讀取核心配置文件application.properties 或 appl

緩存一緻性-編程思維

緩存數據的一緻性 讀所有的數據,首先去緩存中獲取,緩存中沒有就去讀數據庫,最後在緩存中放一份。如果該數據在數據庫中發生改變,那麼緩存裡面的數據如何和數據庫保持一緻?解決這個問題,目前有兩個用的非常多的場景: 雙寫模式 失效模式 雙寫模式 修改數據庫的數據後再修改緩存中的數據 但又引出了一個問題,那就是當有并發時,線程一将數據庫的值改為「一号」然後立刻将這個值保存到緩存,而保存過程中遇到了種種原

分布式鍊路追蹤自從用了SkyWalking,睡得真香!-編程思維

本篇文章介紹鍊路追蹤的另外一種解決方案Skywalking,文章目錄如下: 什麼是Skywalking? 上一篇文章介紹了分布式鍊路追蹤的一種方式:Spring Cloud Sleuth+ZipKin,這種方案目前也是有很多企業在用,但是作為程序員要的追逐一些新奇的技術,Skywalking作為後起之秀也是值得大家去學習的。 skywalking是一個優秀的國産開源框架,2015年由個人吳晟(

實現微服務預熱調用之後再開始服務(下)-編程思維

繼續分析其他接入點。 其他需要初始化的接入點分析 我們有時候還需要做一些自定義的初始化操作,但是如何在注冊到注冊中心狀态為 UP 也就是開始處理請求之前做這些操作呢? 為了更加與雲環境兼容,Spring Boot 從 2.3.0 版本之後引入了一些雲上部署相關的概念: LivenessState(存活狀态):就應用程序而言,存活狀态是指應用程序的狀态是否正常。如果存活狀态不正常,則意味着應用程序

實現微服務預熱調用之後再開始服務(上)-編程思維

最近線上發現一個現象,應用實例剛剛啟動的時候,開始接收請求之後發生了一小段時間的請求阻塞,從 HTTP Servlet 請求隊列監控上可以看出(基于 spring-web 的普通阻塞的 HTTP 服務器是有 HTTP 線程池的,當線程是滿了之後,請求在阻塞隊列中等待處理。基于 spring-webflux 的沒有這個現象,但是考慮的背壓問題其實和這個場景類似): 然後阻塞數量很快就下去了,通過

實戰!退出登錄時如何借助外力使JWT令牌失效?-編程思維

大家好,我是不才陳某~ 今天這篇文章介紹一下如何在修改密碼、修改權限、注銷等場景下使JWT失效。 文章的目錄如下: 解決方案 JWT最大的一個優勢在于它是無狀态的,自身包含了認證鑒權所需要的所有信息,服務器端無需對其存儲,從而給服務器減少了存儲開銷。 但是無狀态引出的問題也是可想而知的,它無法作廢未過期的JWT。舉例說明注銷場景下,就傳統的cookie/session認證機制,隻需要把存在服務

實戰幹貨!Spring Cloud Gateway 整合 OAuth2.0 實現分布式統一認證授權!-編程思維

大家好,我是不才陳某~ 今天這篇文章介紹一下Spring Cloud Gateway整合OAuth2.0實現認證授權,涉及到的知識點有點多,有不清楚的可以看下陳某的往期文章。 文章目錄如下: 微服務認證方案 微服務認證方案目前有很多種,每個企業也是大不相同,但是總體分為兩類,如下: 網關隻負責轉發請求,認證鑒權交給每個微服務控制 統一在網關層面認證鑒權,微服務隻負責業務 你們公司目前用的哪種方

@Conditional注解使用及@ConditionalOnXXX各注解的作用-編程思維

本文為博主原創,轉載請注明 出處: 一。@Conditional注解作用:     必須是 @Conditional 注解指定的條件成立,才會在容器中添加組件,配置類裡面的所有配置才會生效 二。@Conditional 衍生注解 @Conditional擴展注解作用 判斷是否滿足指定條件 @ConditionalOnBean 容器中存在指定Bean @ConditionalOnMissingBe

OAuth2.0實戰:認證、資源服務異常自定義!-編程思維

大家好,我是不才陳某~ 這是《Spring Security 進階》的第4篇文章,往期文章如下: 實戰!Spring Boot Security+JWT前後端分離架構登錄認證! 妹子始終沒搞懂OAuth2.0,今天整合Spring Cloud Security 一次說明白! OAuth2.0實戰!使用JWT令牌認證! 文章都是成體系的,陳某默認看到這篇文章的讀者都已經看了前期的文章,之前的知識點

Spring Cloud Eureka源碼分析之服務注冊的流程與數據存儲設計!-編程思維

Spring Cloud是一個生态,它提供了一套标準,這套标準可以通過不同的組件來實現,其中就包含服務注冊/發現、熔斷、負載均衡等,在spring-cloud-common這個包中,org.springframework.cloud.client.serviceregistry路徑下,可以看到一個服務注冊的接口定義ServiceRegistry。它就是定義了spring cloud中服務注冊的

深度解析Spring Cloud Ribbon的實現源碼及原理-編程思維

Ribbon的核心作用就是進行請求的負載均衡,它的基本原理如下圖所示。就是客戶端集成Ribbon這個組件,Ribbon中會針對已經配置的服務提供者地址列表進行負載均衡的計算,得到一個目标地址之後,再發起請求。 那麼接下來,我們從兩個層面去分析Ribbon的原理 @LoadBalanced 注解如何讓普通的RestTemplate具備負載均衡的能力 OpenFeign集成Ribbon的實現原理

OAuth2.0實戰!使用JWT令牌認證!-編程思維

大家好,我是不才陳某~ 這是《Spring Security 進階》的第3篇文章,往期文章如下: 實戰!Spring Boot Security+JWT前後端分離架構登錄認證! 妹子始終沒搞懂OAuth2.0,今天整合Spring Cloud Security 一次說明白! 文章都是成體系的,陳某默認看到這篇文章的讀者都已經看了前期的文章,之前的知識點就不再詳細介紹了。 今天這篇文章介紹一下OA

Spring Cloud中五花八門的分布式組件我到底該怎麼學-編程思維

分布式架構的演進 在軟件行業,一個應用服務随着功能越來越複雜,用戶量越來越大,尤其是互聯網行業流量爆發式的增長,導緻我們需要不斷的重構應用的結構來支撐龐大的用戶量,最終從一個簡單的系統主鍵演變成了一個非常複雜的可以支撐高并發的高可用的分布式架構,但是一個系統再複雜也是不斷演變來的,所以從另一方面來說,其實是業務(問題)推動了技術的發展。 傳統的單體應用 在早期,我們開發的都是單體應用,也就是一個

55張圖吃透Nacos,妹子都能看懂!-編程思維

大家好,我是不才陳某~ 這是《Spring Cloud 進階》第1篇文章,往期文章如下: 五十五張圖告訴你微服務的靈魂擺渡者Nacos究竟有多強? openFeign奪命連環9問,這誰受得了? 阿裡面試這樣問:Nacos、Apollo、Config配置中心如何選型?這10個維度告訴你! 阿裡面試敗北:5種微服務注冊中心如何選型?這幾個維度告訴你! 阿裡限流神器Sentinel奪命連環 17 問?

妹子始終沒搞懂OAuth2.0,今天整合Spring Cloud Security 一次說明白!-編程思維

大家好,我是不才陳某~ 周二發了Spring Security 系列第一篇文章,有妹子留言說看了很多文章,始終沒明白OAuth2.0,這次陳某花了兩天時間,整理了OAuth2.0相關的知識,結合認證授權服務+資源服務,一次性給大家唠明白! 這是《Spring Security 進階》第2篇文章,往期文章如下: 實戰!Spring Boot Security+JWT前後端分離架構登錄認證! 本篇

SpringCloud升級之路2020.0.x版-45. 實現公共日志記錄-編程思維

本系列代碼地址:https://github.com/JoJoTec/spring-cloud-parent 我們這一節在前面實現的帶有鍊路信息的 Publisher 的工廠的基礎上,實現公共日志記錄的 GlobalFilter。回顧下我們的需求: 我們需要在網關記錄每個請求的: HTTP 相關元素: URL 相關信息 請求信息,例如 HTTP HEADER,請求時間等等 某些類型的請求體

SpringCloud升級之路2020.0.x版-44.避免鍊路信息丢失做的設計(2)-編程思維

本系列代碼地址:https://github.com/JoJoTec/spring-cloud-parent 我們在這一節我們将繼續講解避免鍊路信息丢失做的設計,主要針對獲取到現有 Span 之後,如何保證每個 GlobalFilter 都能保持鍊路信息。首先,我們自定義 Reactor 的核心 Publisher 即 Mono 和 Flux 的工廠,将鍊路信息封裝進去,保證由這個工廠生成

SpringCloud升級之路2020.0.x版-44.避免鍊路信息丢失做的設計(1)-編程思維

本系列代碼地址:https://github.com/JoJoTec/spring-cloud-parent 我們在這一節首先分析下 Spring Cloud Gateway 一些其他可能丢失鍊路信息的點,之後來做一些可以避免鍊路信息丢失的設計,之後基于這個設計去實現我們需要的一些定制化的 GlobalFilter Spring Cloud Gateway 其他的可能丢失鍊路信息的點 經過