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

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

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

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

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

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 天天摸天天做天天爽水多 | 欧美13一18成年性 | 国产黄大片在线观看 | 午夜免费| 韩国在线看 | 日本人真淫视频一区二区三区 | 日本狠狠操 | 欧美成人激情 | 天天插天天色 | 一本大道道无香蕉综合在线 | 午夜dj免费高清在线观看影院 | 亚洲欧洲日产国码 最新 | 国产22页| 亚洲免费播放 | a国产| 亚洲阿v天堂2021在线观看 | 特级毛片视频在线 | 带肉很污的甜宠文bl | 日韩欧美卡一卡二卡新区 | 亚洲免费小视频 | 免费视频网站在线观看黄 | 久久狠狠色噜噜狠狠狠狠97 | 成人黄色一级片 | 亚洲国产成人资源在线软件 | 在线成人免费看大片 | 在线观看久草 | 日本欧美国产 | 成人观看网站a | 2017天天爽夜夜爽精品视频 | 黄色骚视频 | 美国黄色毛片一级 | 主播蜜汁丝袜 精品自拍 | 国产好片无限资源 | 日韩伦理片在线 | 成人国产第一区在线观看 | 日本a在线 | miya亚洲私人影院在线 | aaa毛片手机在线现看 | 日韩欧美一区二区在线 | 一级毛片不卡片免费观看 | 精品久久久久国产免费 |