精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot與ShardingSphere整合,重構高并發(fā)庫存扣減場景的分布式事務模型

開發(fā) 前端
訂單創(chuàng)建和庫存扣減操作必須保證原子性,避免出現(xiàn)超賣或欠賣的情況,利用 ShardingSphere 的分布式事務管理功能,確保跨多個數(shù)據(jù)庫的操作具有一致性。

訂單創(chuàng)建和庫存扣減操作必須保證原子性,避免出現(xiàn)超賣或欠賣的情況,利用 ShardingSphere 的分布式事務管理功能,確保跨多個數(shù)據(jù)庫的操作具有一致性。

為什么選擇ShardingSphere?

  • XA 事務支持:ShardingSphere 提供了 XA 協(xié)議的支持,確保跨多個數(shù)據(jù)庫的操作具有強一致性,即使在分布式環(huán)境下也能保持數(shù)據(jù)的一致性。
  • 柔性事務:除了 XA 事務外,ShardingSphere 還支持柔性事務解決方案,如 Saga 和 BASE 模型,以適應不同的業(yè)務場景。
  • 動態(tài)添加/刪除數(shù)據(jù)源:可以在運行時動態(tài)地添加或刪除數(shù)據(jù)源,而無需重啟應用程序,提高了系統(tǒng)的靈活性和可維護性。
  • SQL 解析引擎:ShardingSphere 內置了強大的 SQL 解析引擎,能夠解析和改寫 SQL 語句,使其適用于分片后的數(shù)據(jù)庫結構。
  • 透明化訪問:通過標準的 JDBC 接口訪問分片后的數(shù)據(jù)庫,無需關心底層的數(shù)據(jù)分布情況。
  • 多種部署模式:ShardingSphere 支持多種部署模式,包括代理模式和嵌入式模式。
  • 容器化支持:支持 Docker 和 Kubernetes 等容器化平臺,便于自動化部署和管理。
  • 簡化開發(fā):通過 Spring 的事務注解(如 @Transactional),開發(fā)者可以輕松地進行事務管理,無需手動編寫復雜的事務邏輯。
  • 集成 Atomikos:Atomikos 是一個成熟的事務管理器,與 ShardingSphere 結合使用可以提供可靠的分布式事務管理能力。
  • 靈活的分片策略:可以根據(jù)不同的業(yè)務需求選擇合適的分片算法(如 INLINERANGE 等),確保數(shù)據(jù)均勻分布并優(yōu)化查詢性能。
  • 支持水平分片:ShardingSphere 支持將數(shù)據(jù)按一定的規(guī)則分散到多個數(shù)據(jù)庫實例中,從而實現(xiàn)水平擴展。這對于處理大規(guī)模訂單和產(chǎn)品數(shù)據(jù)非常有效。

代碼實操

<!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Starter Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!-- Lombok (optional) -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <!-- ShardingSphere JDBC Core -->
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
        <version>5.1.2</version>
    </dependency>

    <!-- Atomikos Transaction Manager -->
    <dependency>
        <groupId>com.atomikos</groupId>
        <artifactId>transactions-jta</artifactId>
        <version>5.0.13</version>
    </dependency>

application.yml

server:
  port:8080

spring:
application:
    name:sharding-demo

# 數(shù)據(jù)庫配置
spring:
shardingsphere:
    datasource:
      names:ds0,ds1
      ds0:
        type:com.zaxxer.hikari.HikariDataSource
        driver-class-name:com.mysql.cj.jdbc.Driver
        jdbc-url:jdbc:mysql://localhost:3306/db0?useSSL=false&serverTimezone=UTC
        username:root
        password:root
      ds1:
        type:com.zaxxer.hikari.HikariDataSource
        driver-class-name:com.mysql.cj.jdbc.Driver
        jdbc-url:jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC
        username:root
        password:root
    rules:
      sharding:
        tables:
          t_product:
            actual-data-nodes:ds$->{0..1}.t_product_$->{0..1}
            table-strategy:
              standard:
                sharding-column:product_id
                sharding-algorithm-name:t_product_inline
            key-generate-strategy:
              column:product_id
              key-generator-name:snowflake
          t_order:
            actual-data-nodes:ds$->{0..1}.t_order_$->{0..1}
            table-strategy:
              standard:
                sharding-column:order_id
                sharding-algorithm-name:t_order_inline
            key-generate-strategy:
              column:order_id
              key-generator-name:snowflake
        binding-tables:
          -t_product,t_order
        sharding-algorithms:
          t_product_inline:
            type:INLINE
            props:
              algorithm-expression:t_product_$->{product_id%2}
          t_order_inline:
            type:INLINE
            props:
              algorithm-expression:t_order_$->{order_id%2}
        key-generators:
          snowflake:
            type:SNOWFLAKE
    props:
      sql-show:true

Product

package com.example.demo.entity;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Data
@Entity(name = "t_product")
publicclass Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long productId;
    private String productName;
    private Integer stock;
}

Order

package com.example.demo.entity;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Data
@Entity(name = "t_order")
publicclass Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long orderId;
    private Long productId;
    private Integer quantity;
}

Repository

package com.example.demo.repository;

import com.example.demo.entity.Product;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

OrderRepository

package com.example.demo.repository;

import com.example.demo.entity.Order;
import org.springframework.data.jpa.repository.JpaRepository;

public interface OrderRepository extends JpaRepository<Order, Long> {
}

Service

package com.example.demo.service;

import com.example.demo.entity.Product;
import com.example.demo.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
publicclass ProductService {

    @Autowired
    private ProductRepository productRepository;

    public Product getProductById(Long productId) {
        return productRepository.findById(productId).orElseThrow(() -> new RuntimeException("Product not found"));
    }

    public void updateStock(Long productId, int quantity) {
        Product product = getProductById(productId);
        product.setStock(product.getStock() - quantity);
        productRepository.save(product);
    }
}

OrderService

package com.example.demo.service;

import com.example.demo.entity.Order;
import com.example.demo.repository.OrderRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
publicclass OrderService {

    @Autowired
    private OrderRepository orderRepository;

    @Autowired
    private ProductService productService;

    @Transactional
    public void placeOrder(Long productId, int quantity) {
        // 檢查庫存
        if (!productService.getProductById(productId).getStock().equals(quantity)) {
            thrownew RuntimeException("Insufficient stock");
        }

        // 創(chuàng)建訂單
        Order order = new Order();
        order.setProductId(productId);
        order.setQuantity(quantity);
        orderRepository.save(order);

        // 扣減庫存
        productService.updateStock(productId, quantity);
    }
}

Controller

package com.example.demo.controller;

import com.example.demo.entity.Product;
import com.example.demo.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/products")
publicclass ProductController {

    @Autowired
    private ProductService productService;

    @GetMapping("/{productId}")
    public Product getProduct(@PathVariable Long productId) {
        return productService.getProductById(productId);
    }

    @PostMapping("/")
    public Product createProduct(@RequestBody Product product) {
        return productService.createProduct(product);
    }
}

OrderController

package com.example.demo.controller;

import com.example.demo.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/orders")
publicclass OrderController {

    @Autowired
    private OrderService orderService;

    @PostMapping("/place-order")
    public String placeOrder(@RequestParam Long productId, @RequestParam int quantity) {
        try {
            orderService.placeOrder(productId, quantity);
            return"Order placed successfully";
        } catch (Exception e) {
            return"Failed to place order: " + e.getMessage();
        }
    }
}

Application

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

測試

curl -X POST http://localhost:8080/orders/place-order \
     -d "productId=1&quantity=5"

Respons

Order placed successfully


責任編輯:武曉燕 來源: Java知識日歷
相關推薦

2022-06-27 08:21:05

Seata分布式事務微服務

2023-12-26 08:59:52

分布式場景事務機制

2024-09-10 10:42:27

2020-09-23 22:36:27

分布式架構系統(tǒng)

2022-06-21 08:27:22

Seata分布式事務

2021-02-01 09:35:53

關系型數(shù)據(jù)庫模型

2025-03-11 08:36:52

高并發(fā)場景性能

2022-01-10 11:58:51

SpringBootPulsar分布式

2017-12-12 14:51:15

分布式緩存設計

2021-08-26 08:24:33

高并發(fā)秒殺系統(tǒng)

2023-01-13 07:39:07

2020-12-09 09:14:57

SpringCloudSeata 分布式

2020-09-03 06:33:35

高并發(fā)場景分布式鎖

2021-04-16 16:02:13

SpringBoot分布式最大努力通知

2020-10-13 07:44:45

理解分布式

2017-07-26 15:08:05

大數(shù)據(jù)分布式事務

2024-11-27 00:20:32

2024-01-05 07:28:50

分布式事務框架
點贊
收藏

51CTO技術棧公眾號

久久精品99无色码中文字幕| 粉嫩老牛aⅴ一区二区三区 | 久久一级免费视频| 国产亚洲亚洲国产一二区| 亚洲在线视频网站| 日本成人看片网址| av中文字幕第一页| 国产精品日韩| 久久久国产精品一区| 少妇一级淫片免费放播放| 看片一区二区| 一区二区久久久久久| 青青草原成人| 亚洲精品国产av| 日本美女视频一区二区| 欧美国产日韩xxxxx| 久久av无码精品人妻系列试探| 美女视频一区| 欧美日韩精品二区| 日本xxxxx18| 黄色影院在线播放| 不卡大黄网站免费看| 国产欧亚日韩视频| 亚洲精品男人的天堂| 亚洲欧美一区在线| 一区二区欧美久久| 天堂久久久久久| 亚洲视频一起| 9191国产精品| 少妇一级淫免费放| 亚洲国产福利| 亚洲成av人**亚洲成av**| 制服丝袜综合日韩欧美| 三级黄视频在线观看| 国产成人午夜精品影院观看视频| 国产精品美女在线观看| 日韩精品久久久久久免费| 伊人久久成人| 欧美高跟鞋交xxxxxhd| 夫妻性生活毛片| 欧美偷拍综合| 亚洲欧洲黄色网| 日韩 中文字幕| 激情av综合| 欧美成人精品3d动漫h| 色婷婷激情视频| 欧美天堂一区| 欧美日韩国产一级二级| 成人免费视频久久| 巨胸喷奶水www久久久| 一本久道久久综合中文字幕| 久久综合九色综合88i| 国产第一页在线| 亚洲一区二区精品久久av| 国产a级黄色大片| 性欧美高清come| 亚洲黄色尤物视频| 久久久久久久久久久久久国产| 91ph在线| 日韩毛片精品高清免费| 2021狠狠干| 三级网站视频在在线播放| 亚洲一区二区在线观看视频| 日本中文字幕在线视频观看| 国产美女精品写真福利视频| 精品国产老师黑色丝袜高跟鞋| 全黄性性激高免费视频| 日韩伦理在线| 91黄视频在线| 一女二男3p波多野结衣| 日韩专区视频网站| 日韩欧美中文字幕一区| 国产51自产区| 蜜臀91精品国产高清在线观看| 亚洲区免费影片| 日韩av毛片在线观看| 中文字幕日韩欧美精品高清在线| 欧美精品一区在线播放| 97免费在线观看视频| 久久九九国产| 成人h片在线播放免费网站| av男人天堂av| 99久久99久久综合| 青娱乐国产91| 成人在线app| 天天做天天摸天天爽国产一区 | 欧美日韩经典丝袜| 婷婷亚洲久悠悠色悠在线播放| 国产午夜福利视频在线观看| 成人国产精品一区二区免费麻豆 | 99草在线视频| av中文字幕不卡| 亚洲成人蜜桃| 久草在线资源站资源站| 色婷婷国产精品综合在线观看| 亚洲欧美在线精品| 96sao在线精品免费视频| 亚洲免费伊人电影在线观看av| 91动漫免费网站| 在线欧美不卡| 国产欧美一区二区三区视频| 天堂在线中文网| 国产精品美女久久久久久2018 | 免费视频一区| 96国产粉嫩美女| 欧美偷拍视频| 亚洲精品免费一二三区| 国产又大又硬又粗| 日韩三级久久| 在线性视频日韩欧美| 国产一级片网址| 免费看黄色91| 久久爱av电影| 欧美1234区| 欧美日韩视频在线一区二区| 日本黄色录像片| 永久91嫩草亚洲精品人人| 国产成人av在线| 成人毛片视频免费看| 国产精品久久久久久久久图文区| 黄色大片中文字幕| 久久综合给合| 91精品国产综合久久香蕉麻豆 | 日韩美女在线视频| 99久久精品免费视频| 激情久久婷婷| 亚洲aaaaaa| 一广人看www在线观看免费视频| 欧美性xxxxx极品娇小| 国产精久久久久| 亚洲91中文字幕无线码三区| 国产精品69久久| 亚洲日本在线播放| 午夜伦理一区二区| 国产乱国产乱老熟300部视频| 99久久婷婷这里只有精品| 国产成人免费91av在线| 三级视频在线| 欧美日韩一区二区在线播放| 久久久老熟女一区二区三区91| 欧美在线亚洲综合一区| 成人精品在线视频| 在线日本中文字幕| 欧美中文字幕亚洲一区二区va在线| xfplay5566色资源网站| 在线高清一区| 国产乱码一区| 俺来也官网欧美久久精品| 精品国精品国产尤物美女| 激情五月婷婷小说| 高清不卡一区二区| 欧美中日韩在线| 成人福利一区| 午夜精品一区二区三区视频免费看 | 91短视频版在线观看www免费| 色就色 综合激情| 免费网站在线高清观看| 蜜桃传媒麻豆第一区在线观看| 日韩精品久久一区二区三区| 国产精品久久久久77777丨| 色七七影院综合| 国产精品久久影视| 一个色在线综合| 在线看黄色的网站| 欧美亚洲视频| 亚洲日本理论电影| 免费观看性欧美大片无片| 久久99国产综合精品女同| 性一交一乱一乱一视频| 精品久久久久久久久国产字幕 | 中文字幕五月欧美| 污污视频在线免费| 亚洲黄色成人| 区一区二区三区中文字幕| 91综合国产| 久久久黄色av| 男人天堂一区二区| 91久久精品日日躁夜夜躁欧美| 国产视频123区| 国产福利91精品一区二区三区| aa视频在线播放| 国产99久久精品一区二区300| 国产免费一区二区三区香蕉精| 伊人春色在线观看| 国产手机视频精品| 97人妻精品一区二区三区动漫| 亚洲综合在线免费观看| 久久美女免费视频| 精品一区二区三区免费观看| 东北少妇不带套对白| 欧美日韩国产在线观看网站| 91亚洲精品久久久久久久久久久久 | 久久久av毛片精品| 91视频福利网| 校园春色综合网| 最近免费观看高清韩国日本大全| 女同久久另类99精品国产| 国产精品久久久久久久天堂 | 青青草原成人在线视频| 日本亚洲精品| 亚洲成人久久一区| 国产精品久久综合青草亚洲AV| 精品二区三区线观看| 亚洲欧美综合7777色婷婷| 成人免费视频视频| 九九热免费在线观看| 亚洲在线视频| 日韩精品第1页| 精品国产91乱码一区二区三区四区| 亚洲a在线观看| 在线一区视频观看| 97福利一区二区| av免费网站在线| 深夜成人在线观看| 日韩精品福利| 亚洲成人a**站| 国产手机精品视频| 欧美日韩综合不卡| 99久久久久久久久| 亚洲.国产.中文慕字在线| 中文字幕乱码av| 久久久久久久网| 亚洲成av人片在线观看无| 激情丁香综合五月| wwwwxxxx日韩| 久久精品毛片| 国产一区二区在线视频播放| 欧美日韩综合| 黄色网址在线免费看| 欧美jizz| 涩涩涩999| 国产亚洲一卡2卡3卡4卡新区| 成人片在线免费看| 亚洲一区二区三区中文字幕在线观看| 成人a免费视频| 亚洲国产天堂| 国产欧美日韩丝袜精品一区| 亚洲爱爱视频| 国产91色在线| 都市激情综合| 欧美中文字幕在线播放| 最近高清中文在线字幕在线观看1| 国外成人在线视频| а√天堂中文资源在线bt| 欧美极品少妇与黑人| 青青在线视频| 欧美激情一级欧美精品| 男女羞羞视频在线观看| 欧美激情乱人伦一区| 黄网站在线观| 2019中文字幕在线观看| 人在线成免费视频| 日本视频久久久| av在线日韩| 国产美女被下药99| 国产精品一区二区三区四区在线观看| 91热福利电影| 亚洲福利合集| 精品日本一区二区三区在线观看| 加勒比视频一区| 久久av一区二区| 欧美日韩有码| 好色先生视频污| 亚洲国产日本| 男人亚洲天堂网| 秋霞成人午夜伦在线观看| 夜夜夜夜夜夜操| 顶级嫩模精品视频在线看| 国产在线不卡av| 国产午夜亚洲精品午夜鲁丝片 | 国产成人精品久久久| 99精品国自产在线| 91久久在线视频| 成人自拍在线| 欧美在线播放一区| 亚洲午夜精品一区二区国产| 国产手机免费视频| 久久久久看片| 中文 日韩 欧美| www.亚洲免费av| 国产午夜精品福利视频| 亚洲免费视频中文字幕| 精品一区在线视频| 91激情五月电影| 午夜精品久久久久久久91蜜桃| 日韩av在线网站| 色三级在线观看| 97色在线观看| 四虎影视精品永久在线观看| 国产一区二区三区四区五区在线| 精品久久久久中文字幕小说 | 国产精品美女黄网| 精品国产欧美日韩| 欧美久久在线观看| 日韩电影网1区2区| 久久久久亚洲无码| 国产精品夫妻自拍| 免费在线不卡视频| 欧美一区二区视频在线观看2022| 天堂网www中文在线| x99av成人免费| 在线免费av资源| 91免费在线视频| 国产一区国产二区国产三区| 91网站在线观看免费| 日韩av电影免费观看高清完整版| 扒开伸进免费视频| 亚洲欧洲日韩在线| youjizz在线视频| 精品国产一区二区三区忘忧草 | 欧美激情15p| 国产手机视频在线观看| 石原莉奈在线亚洲二区| 亚洲啪av永久无码精品放毛片| 国产精品欧美一级免费| 国产欧美一区二区三区在线看蜜臂| 欧美一区二区成人| 色开心亚洲综合| 日韩免费精品视频| 农村少妇一区二区三区四区五区| 4444亚洲人成无码网在线观看 | 少妇献身老头系列| 国产精品天美传媒沈樵| 99超碰在线观看| 日韩电影中文字幕av| 黑人精品视频| 亚洲一区二区三区四区视频| 成人av动漫在线观看| 欧美牲交a欧美牲交aⅴ免费真| 懂色一区二区三区免费观看| 性欧美videos| 91精品在线观看入口| av在线之家电影网站| 国产精品www网站| 伊人久久大香线蕉无限次| www.浪潮av.com| 99re在线精品| 中文字幕第15页| 亚洲国产精品yw在线观看| 国产黄色大片在线观看| 电影午夜精品一区二区三区 | 欧美成人亚洲成人| 久久久91麻豆精品国产一区| 伊人久久大香线蕉午夜av| 麻豆专区一区二区三区四区五区| 丁香花五月婷婷| 欧美伊人久久大香线蕉综合69| 韩国中文免费在线视频| 国产成人亚洲综合91精品| 亚洲人成精品久久久| 日韩精品视频久久| 国产日韩欧美综合一区| 中文字幕乱码人妻二区三区| 永久免费毛片在线播放不卡| 精品69视频一区二区三区| 亚洲图片有声小说| 免费视频91蜜桃| 欧美日韩一区二区三区四区| 一级毛片视频在线观看| 91亚洲精品在线| 欧美日韩a区| av鲁丝一区鲁丝二区鲁丝三区| 欧美性xxxxhd| 在线免费观看的av网站| 91在线高清视频| 激情婷婷欧美| 国产美女免费无遮挡| 欧美午夜精品理论片a级按摩| 麻豆网站视频在线观看| 97se亚洲综合| 亚洲在线观看| 天海翼在线视频| 亚洲成人久久久久| 日韩色淫视频| 青青视频免费在线| 91麻豆蜜桃一区二区三区| 中文天堂在线资源| 欧美伦理91i| 要久久爱电视剧全集完整观看| 中文字幕国产传媒| 一区二区三区小说| 丝袜视频国产在线播放| 成人福利网站在线观看| 在线日韩av| 国产亚洲精品精品精品| 精品日韩在线观看| 日韩中文在线播放| 久久久久福利视频| 久久久久久久久免费| 国产sm主人调教女m视频| 18一19gay欧美视频网站| 99久久九九| 精品无码人妻一区| 制服丝袜av成人在线看| 亚洲美女尤物影院| 日韩亚洲欧美一区二区| 国产欧美视频在线观看| 欧美一区,二区| 成人精品视频99在线观看免费 | 国产欧美日韩成人|