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

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

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

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

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

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲成人一区二区 | 成人欲涩漫h漫免费动漫 | 黄漫视频网站 | 色狠狠婷婷97 | 一级毛片在播放免费 | 国产日韩欧美亚洲综合首页 | 香港三级日本三级三级人妇99 | 亚洲毛片在线看 | 嗯啊使劲用力在线观看视频 | 中文资源在线观看 | 日本精品视频一区二区三区 | 成年大片免费高清在线观看 | 日本成人免费 | 精品 日韩 国产 欧美在线观看 | 亚洲国产精品日韩高清秒播 | 亚洲日本中文字幕在线2022 | 日韩视频免费观看 | 亚洲区欧美区 | 国产午夜精品视频 | 黄色小视频免费观看 | 免费人成网ww777kkk手机 | 天天做天天爱夜夜爽毛片毛片 | 九九全国免费视频 | 在线观看国产剧情麻豆精品 | 中文字幕福利 | 成人性一级视频在线观看 | 久久精品全国免费观看国产 | 最近免费字幕中文大全视频 | 中国美女挠脚心丝袜vk | 亚洲第二页| 精品无码久久久久久久动漫 | 欧美日韩中文国产一区二区三区 | 中文字幕一区日韩在线视频 | 欧美综合区自拍亚洲综合 | 五月在线观看 | 校园春色 自拍偷拍 | 五月天天色 | 欧美成人综合在线 | 欧美老妇人与禽交 | 欧美亚洲国产成人不卡 | 大胸美女被强吻胸动态图片 |