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

專注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 采購訂單,當請求超時,庫存不足,或者金額不足時,全局事務回滾。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 免费看羞羞视频的网站 | 刺激花蒂抽搐视频在线看 | 欧美日韩国产伦理 | 天天看天天射天天视频 | 一本到高清 | 麻豆精品国产剧情在线观看 | 午夜爽爽爽男女免费观看影院 | 激情五月网站 | 久久久综合视频 | 欧美日韩亚洲综合在线一区二区 | 色羞羞 | 乳欲性高清在线 | 国产成人精品综合 | 夜夜嗨视频网 | 在线视频日韩 | 天堂五月天 | 在线中文字幕观看 | 天天色综合图片 | 日本黄色免费在线 | 国产高清自产拍av在线 | 韩国成人在线视频 | 久久综合色婷婷 | 全部免费国产潢色一级 | 14一15sexvideo日本 | 青青青国产依人精品视频 | 国产自在自线午夜精品视频在 | 日韩精品一区二区三区 在线观看 | 亚洲一区二区三区不卡视频 | 91精品在线国产 | 播放一级黄色片 | 一级特黄特色的免费大片视频 | 欧美高清在线视频在线99精品 | 成年人免费视频网站 | 日韩一区二区三区在线免费观看 | 亚洲伊人久久综合一区二区 | 日韩视频久久 | 午夜看片免费 | 欧美一级级a在线观看 | aⅴ免费视频 | 亚洲国产日韩精品 | yy3341殇情影院理论片 |