大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

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

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

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

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 伊人中文字幕在线 | 一级特黄一欧美俄罗斯毛片 | 成人免费毛片一区二区三区 | 成人免费黄网站 | 黄毛片| 亚洲三级欧美 | 久久香蕉国产线看观看8青草 | 亚洲在线播放视频 | 免费毛片a线观看 | 免费看欧美一级a毛片 | 综合久久91 | 一区二区三 | 日韩一区二区三区四区 | 国产91成人 | aaaa级片| 欧美精品久久久久久久久大尺度 | 国产网友自拍 | 91尤物在线 | 97影院在线午夜 | www欧美视频 | 看真人视频一一级毛片 | 尤物视频在线观看 | 亚洲美女啪啪 | 色中色官网 | 秋霞在线观看成人高清视频51 | 我想看一级播放片一级的 | 中文无码久久精品 | 最新国产精品久久精品 | 日本最新免费二区三区 | 中文字幕日韩一区 | 精品欧美一区二区在线观看 | 99国产精品免费视频 | 四虎2022| 国产精品视频a | 久久久窝窝午夜精品 | 色综合天天干 | 精品69久久久久久99 | 日韩精品你懂的在线播放 | 亚欧乱色视频大全 | 国产伊人网 | 色噜噜狠狠一区二区三区 |