黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 NACOSeata集成SpringCloud分布式事務解決方案

NACOSeata集成SpringCloud分布式事務解決方案

更新時間:2022-03-28 10:09:34 來源:動力節點 瀏覽2348次

前言:分布式系統架構,最難的是分布式事務,分布式事務解決方案大致可以分為兩種

1.消息一致性

2.基于TCC分布式事務

不管是基于哪種解決方案,都是侵入式代碼植入,以大量代碼或消息為代價,來實現分布式事務。

有沒有非侵入式的分布式事務解決方案,答案是肯定的。阿里·西塔

Seata是一個開源的分布式事務解決方案,致力于提供高性能和易用的分布式事務服務。Seata將為用戶提供AT、TCC、SAGA和XA事務模式,為用戶打造一站式分布式解決方案。

最重要的是非侵入性。不碰原代碼邏輯,直接在方法體@GlobalTransactional添加注釋,即可實現。

zipkin的依賴圖如下

業務系統同時調用

訂單服務 添加訂單

客服 用戶自有賬戶扣款

庫存服務 庫存減少

例子來自Seata官網下載,修改了inter服務調用,集成了Naco和鏈接追蹤zipkin。

更重要的代碼,先解釋一下。

@GlobalTransactional 是 Seata 注釋
orderFeignClient 訂單微服務
accountFeignClient 客戶微服務
storageFeignClient 庫存微服務
@GlobalTransactional 
    public void purchase(String userId, String goodsCode, int orderCount) {  
        // 創建訂單
        orderFeignClient.create(userId,commodityCode, orderCount); 
        // 金額減少
        accountFeignClient.debit(userId, orderCount); 
        // 庫存服務減少庫存
        storageFeignClient.deduct(commodityCode, orderCount); 
    }
@FeignClient(name = "account-service") 
public interface AccountFeignClient {  
    @GetMapping("/test/debit") 
    Boolean debit(@RequestParam("userId") String userId, @RequestParam("count") int count); 
}
 @Transactional(rollbackFor = Exception.class) 
    public void debit(String userId, BigDecimal num) { 
        Account account = accountDAO.findByUserId(userId); 
        account.setMoney(account.getMoney().subtract(num)); 
        if(account.getMoney().intValue()< BigDecimal.ZERO.intValue()){ 
            throw new RuntimeException("缺乏余額"); 
        }  
        accountDAO.save(account);  
        if (ERROR_USER_ID.equals(userId)) { 
            throw new RuntimeException("賬戶分支異常"); 
        } 
    }

配置的時候注意下面的說明,很重要

application.properties 文件

文件.conf 文件

紅色區域 business-service 必須相同。

這是一個解釋。:

- file.conf 的 service.vgroup_mapping 配置必須和`spring.application.name`協議
在`org.springframework.cloud:spring-cloud-starter-alibaba-seata`的`org.springframework.cloud.alibaba.seata。 GlobalTransactionAutoConfiguration`類,默認`${spring.application.name}-fescar-service-group`注冊為服務名到Seata Server上,如果和`file.conf`中的配置不一致,會提示`no available server to connect`報錯
你也可以配置`spring.cloud.alibaba.seata.tx-service-group`修改后綴,但是必須和`file.conf`中的配置一致

代碼如下

https://gitee.com/yaobo2816/springcloud-AlibabaNaco/tree/master/seata-samples-master/springcloud-jpa-seata

springcloud-jpa-seata 這是代碼根路徑。

代碼集成 Naco Seata OpenFeign zipkin 鏈接分析

相關截圖

測試

http://localhost:8084/test/purchase/commit 采購訂單,模擬全局事務提交

http://localhost:8084/test/purchase/rollback 采購訂單,當請求超時,庫存不足,或者金額不足時,全局事務回滾。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日日爱影院 | 欧美日韩在线精品成人综合网 | 色综合久久六月婷婷中文字幕 | 久久88香港三级 | 羞羞的视频在线免费观看 | 久久久精品成人免费看 | 免费看一毛一级毛片视频 | 天堂亚洲欧美日韩一区二区 | 一区二区三区四区亚洲 | 精品在线视频播放 | 久久精品国产亚洲综合色 | 高清色黄毛片一级毛片 | 中国女与老外在线精品 | 欧美 日韩 中文字幕 | 深爱激情成人 | 久久制服丝袜 | 日本爽p大片免费观看 | www天天操 | 日韩高清特级特黄毛片 | 韩国午夜理伦三级在线观看仙踪林 | 一本大道高清香蕉中文大在线 | 欧美在线观看免费一区视频 | 久久免费精品视频 | 丁香激情小说 | 中文字幕国产日韩 | 国产特黄特色的大片观看免费视频 | 久久影视一区 | 亚洲黄色影院 | 国产亚洲精品国产福利在线观看 | 欧美午夜视频一区二区三区 | 国产一区a | 黄色亚洲视频 | 午夜精品久久久久久久久 | 一级毛片免费不卡夜夜欢 | 北条麻妃中文字幕在线观看 | 在线天堂中文字幕 | 欧美一区2区三区3区公司 | 日韩小片 | 高清中文字幕 | 国精产品一区一区三区 | jk制服喷水 |