<sub id="gqw76"><listing id="gqw76"></listing></sub>
      <sub id="gqw76"><listing id="gqw76"></listing></sub>

    1. <form id="gqw76"><legend id="gqw76"></legend></form>
    2. SpringCloud Alibaba實戰(3:存儲設計與基礎架構設計)

      1、存儲設計

      在上一章中,我們已經完成了基本業務流程的梳理和服務模塊的劃分,接下來,開始設計數據存儲。

      雖然在微服務的理論中,沒有對數據庫定強制性的規范,但一般,服務拆分之后,數據庫也會對應的拆分。

      這種結合業務來進行拆分的方式是數據庫拆分中的垂直拆分。

      數據庫設計偷個懶,就不再用比較重的Power Designer,直接拿Navicat開干。

      navicat建模

      根據服務的拆分,分別建立數據庫如下:

      • 用戶庫(shop_user):

      用戶庫

      建表語句:

      SET NAMES utf8mb4;
      SET FOREIGN_KEY_CHECKS = 0;
      
      -- ----------------------------
      -- Table structure for shop_user
      -- ----------------------------
      DROP TABLE IF EXISTS `shop_user`;
      CREATE TABLE `shop_user`  (
        `user_id` int(16) NOT NULL AUTO_INCREMENT,
        `user_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用戶名',
        `sex` tinyint(4) NULL DEFAULT 2 COMMENT '用戶性別:0:女 1:男  2:未知',
        `phone` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手機號',
        `email` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '郵箱',
        `address` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
        `count` int(64) NULL DEFAULT NULL COMMENT '積分',
        `level` int(32) NULL DEFAULT 0 COMMENT '等級',
        `create_user` int(16) NULL DEFAULT NULL COMMENT '創建用戶',
        `create_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '創建時間',
        `update_user` int(16) NULL DEFAULT NULL COMMENT '更新用戶',
        `update_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新時間',
        `status` tinyint(4) NULL DEFAULT 1 COMMENT '狀態',
        PRIMARY KEY (`user_id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用戶表' ROW_FORMAT = Dynamic;
      
      SET FOREIGN_KEY_CHECKS = 1;
      
      
      • 商品庫(shop_goods):

      商品庫

      建表語句:

      SET NAMES utf8mb4;
      SET FOREIGN_KEY_CHECKS = 0;
      
      -- ----------------------------
      -- Table structure for shop_goods
      -- ----------------------------
      DROP TABLE IF EXISTS `shop_goods`;
      CREATE TABLE `shop_goods`  (
        `goods_id` int(16) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
        `goods_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品名稱',
        `price` decimal(10, 2) NULL DEFAULT NULL COMMENT '價格',
        `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品介紹',
        `create_user` int(16) NULL DEFAULT NULL COMMENT '創建用戶',
        `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
        `update_user` int(16) NULL DEFAULT NULL COMMENT '更新用戶',
        `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
        `status` tinyint(4) NULL DEFAULT 0 COMMENT '狀態',
        PRIMARY KEY (`goods_id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
      
      SET FOREIGN_KEY_CHECKS = 1;
      
      • 訂單庫(shop_order):

      訂單庫

      建表語句:

      SET NAMES utf8mb4;
      SET FOREIGN_KEY_CHECKS = 0;
      
      -- ----------------------------
      -- Table structure for shop_order
      -- ----------------------------
      DROP TABLE IF EXISTS `shop_order`;
      CREATE TABLE `shop_order`  (
        `order_id` int(16) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
        `order_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '訂單金額',
        `user_id` int(16) NULL DEFAULT NULL COMMENT '用戶id',
        `order_status` tinyint(4) NULL DEFAULT NULL COMMENT '訂單狀態: 1:待付款  2:已支付 3:已發貨 4:已完成 5:已關閉',
        `comment` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '評價',
        `create_user` int(16) NULL DEFAULT NULL COMMENT '創建用戶',
        `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
        `update_user` int(16) NULL DEFAULT NULL COMMENT '更新用戶',
        `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
        `status` tinyint(4) NULL DEFAULT NULL COMMENT '狀態',
        PRIMARY KEY (`order_id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
      
      -- ----------------------------
      -- Table structure for shop_order_detail
      -- ----------------------------
      DROP TABLE IF EXISTS `shop_order_detail`;
      CREATE TABLE `shop_order_detail`  (
        `order_detail_id` int(16) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
        `order_id` int(16) NULL DEFAULT NULL COMMENT '訂單表主鍵',
        `goods_id` int(16) NULL DEFAULT NULL COMMENT '商品表主鍵',
        `goods_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品名稱',
        `price` decimal(10, 2) NULL DEFAULT NULL COMMENT '商品價格',
        `goods_count` int(32) NULL DEFAULT NULL COMMENT '商品數量',
        `create_user` int(16) NULL DEFAULT NULL COMMENT '創建用戶',
        `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
        `update_user` int(16) NULL DEFAULT NULL COMMENT '更新用戶',
        `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
        `status` tinyint(4) NULL DEFAULT 0 COMMENT '狀態',
        PRIMARY KEY (`order_detail_id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
      
      SET FOREIGN_KEY_CHECKS = 1;
      
      
      

      庫存庫(shop_stock):

      庫存庫

      建表語句:

      SET NAMES utf8mb4;
      SET FOREIGN_KEY_CHECKS = 0;
      
      -- ----------------------------
      -- Table structure for shop_stock
      -- ----------------------------
      DROP TABLE IF EXISTS `shop_stock`;
      CREATE TABLE `shop_stock`  (
        `stock_id` int(16) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
        `goods_id` int(16) NULL DEFAULT NULL COMMENT '商品表主鍵',
        `inventory` int(64) NULL DEFAULT NULL COMMENT '庫存量',
        `create_user` int(16) NULL DEFAULT NULL COMMENT '創建用戶',
        `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
        `update_user` int(11) NULL DEFAULT NULL COMMENT '更新用戶',
        `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
        `status` tinyint(4) NULL DEFAULT 0,
        PRIMARY KEY (`stock_id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
      
      SET FOREIGN_KEY_CHECKS = 1;
      

      支付庫(shop_finance):

      image-20210414225945884

      建表語句:

      SET NAMES utf8mb4;
      SET FOREIGN_KEY_CHECKS = 0;
      
      -- ----------------------------
      -- Table structure for shop_payment_record
      -- ----------------------------
      DROP TABLE IF EXISTS `shop_payment_record`;
      CREATE TABLE `shop_payment_record`  (
        `payment_record_id` int(16) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
        `order_id` int(16) NULL DEFAULT NULL COMMENT '訂單表主鍵',
        `user_id` int(16) NULL DEFAULT NULL COMMENT '支付人',
        `fee` decimal(16, 2) NULL DEFAULT NULL COMMENT '支付金額',
        `pay_type` tinyint(4) NULL DEFAULT NULL COMMENT '支付方式 1:支付寶 2:微信支付',
        `create_user` int(16) NULL DEFAULT NULL COMMENT '創建用戶',
        `create_time` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
        `update_user` int(11) NULL DEFAULT NULL COMMENT '更新用戶',
        `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新時間',
        `status` tinyint(4) NULL DEFAULT 0 COMMENT '狀態',
        PRIMARY KEY (`payment_record_id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
      
      SET FOREIGN_KEY_CHECKS = 1;
      

      2、基礎架構設計

      我們首先看一下SpringCloud 官方的一些組件,有些組件不再維護升級,有些新的組件重新承擔起相應的責任。zuul之后推出了gateway組件,eureka之后推出了zookeeper兼容。

      SpringCloud主要組件

      我們接著看一下SpringCloud Alibaba的主要組件。

      Dubbo是在國內應用非常廣泛的一款高性能 Java RPC 框架。

      nacos作為易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。

      hystrix停止開發后,交由官方Resilience4j替代來完成使命,而sentinel以更簡單輕便的方式實現類比hystrix的功能,與dubbo生態更契合。

      分布式事務一直是個非常令人頭疼的問題,seata是比較易用的高性能微服務分布式事務解決方案。

      SpringCloud Alibaba架構

      我們要做的實例的一個粗略的架構圖如下,接下來,我們會圍繞SpringCloud/SpringCloud Alibaba的體系來進行我們的項目實戰。

      SpringCloud Alibaba實戰技術架構


      "簡單的事情重復做,重復的事情認真做,認真的事情有創造性地做!"——

      我是三分惡,可以叫我老三/三分/三哥/三子,一個能文能武的全棧開發,咱們下期見!



      參考:

      【1】:小專欄 SpringCloudAlibaba微服務實戰

      【2】:電商系統之訂單設計篇

      【3】:Spring Cloud Alibaba 新一代微服務解決方案

      posted @ 2021-06-08 13:57  三分惡  閱讀(302)  評論(0編輯  收藏  舉報
      最新chease0ldman老人|无码亚洲人妻下载|大香蕉在线看好吊妞视频这里有精品www|亚洲色情综合网

        <sub id="gqw76"><listing id="gqw76"></listing></sub>
        <sub id="gqw76"><listing id="gqw76"></listing></sub>

      1. <form id="gqw76"><legend id="gqw76"></legend></form>