Spring Cloud Alibaba(2)---RestTemplate微服務項目


RestTemplate微服務項目

前言

因為要運用 Spring Cloud Alibaba 開源組件到分布式項目中,所以這里先搭建一個不通過 Spring Cloud只通過 RestTemplate 來讓SpringBoot和Mybatis進行模塊之間

通訊,之后會在此基礎上再添加Spring Cloud Alibaba框架及各個組件。

一、項目整體概述

這里整理了一張圖,代表接下來這個項目的模塊划分,同時用到的一些組件

從這幅圖可以看出整個項目所需要用到的組件有:

 GateWay(網關),
 Feign(服務調用),
 Nacos(注冊中心+配置中心),
 Zipkin(鏈路追蹤組件),
 Sentinel(流量控制組件)

一共創建了三個服務

商品微服務
訂單微服務
用戶微服務

這篇博客的目的就是搭建上面三個服務,而不添加任何微服務的組件。


二、項目環境和數據庫設計

上面已經說過,一共有三個微服務(商品微服務,訂單微服務,用戶微服務),所以這里也一共有三個數據庫。

1、商品微服務

1).創建商品微服務的數據庫

CREATE DATABASE mall_goods

2).創建商品表

CREATE TABLE `goods` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `goods_name` varchar(524) DEFAULT NULL COMMENT '商品名稱',
  `price` int DEFAULT NULL COMMENT '商品價格(分)',
  `goods_img` varchar(524) DEFAULT NULL COMMENT '商品封⾯圖',
  `summary` varchar(1026) DEFAULT NULL COMMENT '概述',
  `create_time` datetime DEFAULT NULL COMMENT '創建時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

3).表里插入幾條模擬商品數據

INSERT INTO `goods` (`id`, `goods_name`, `price`, `goods_img`, `summary`, `create_time`)
VALUES
	(1,'男士純棉短袖T恤',1800,'www.txun.com','很休閑的一款T恤','2021-04-03 11:48:46'),
	(2,'2021秋季風衣女裝',7200,'www.fy.com','很好的一件風衣','2021-04-03 11:48:46'),
	(3,'2021春裝新款簡約顯瘦圓領連衣裙',3600,'www.lyq.com','很好一件連衣裙','2021-04-03 11:48:46');

2、訂單微服務

1).創建訂單微服務的數據庫

CREATE DATABASE mall_orders

2).創建訂單表

CREATE TABLE `goods_order` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `order_no` varchar(64) DEFAULT NULL COMMENT '訂單號',
  `total_fee` int DEFAULT NULL COMMENT '⽀付⾦額,單位分',
  `goods_id` int DEFAULT NULL COMMENT '商品ID',
  `goods_title` varchar(256) DEFAULT NULL COMMENT '商品標題',
  `goods_img` varchar(256) DEFAULT NULL COMMENT '商品圖⽚',
  `user_id` int DEFAULT NULL COMMENT '⽤戶id',
  `state` int DEFAULT NULL COMMENT '0表示未⽀付,1表示已⽀付',
  `create_time` datetime DEFAULT NULL COMMENT '訂單⽣成時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

3).表里插入幾條模擬訂單數據

INSERT INTO `goods_order` (`id`, `order_no`, `total_fee`, `goods_id`, `goods_title`, `goods_img`, `user_id`, `state`, `create_time`)
VALUES
	(1,'2021033000001-1',1800,1,'男士純棉短袖T恤','www.txun.com',1,1,'2021-04-03 11:48:46'),
	(2,'2021033000001-2',7200,2,'2021秋季風衣女裝','www.fy.com',2,1,'2021-04-03 11:48:46');

3、用戶微服務

1).創建用戶微服務的數據庫

CREATE DATABASE mall_user

2).創建用戶表

CREATE TABLE `user` (
	`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`phone` varchar(32) DEFAULT NULL  COMMENT '手機號',
	`pwd` varchar(128) DEFAULT NULL  COMMENT '密碼',
	`sex` int(2) DEFAULT NULL  COMMENT '性別',
	`img` varchar(128) DEFAULT NULL  COMMENT '頭像',
	`username` varchar(128) DEFAULT NULL  COMMENT '用戶名',
    `create_time` datetime DEFAULT NULL   COMMENT '創建時間',
	PRIMARY KEY (`id`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARSET = utf8mb4;

3).表里插入幾條用戶數據

INSERT INTO `user` (`id`, `phone`, `pwd`, `sex`, `img`, `username`, `create_time`)
VALUES
	(1,'18812345678','123456',1,'www.touxiang.com','小小','2021-04-03 11:48:46'),
	(2,'18887654321','654321',2,'www.touxiang.com','張三','2021-04-03 11:48:46');

三、項目搭建

1、技術架構

項目總體技術選型

SpringBoot2.3.3 + Maven3.5.4 +JDK8 

2、項目整體結構

mall-parent  #父工程
 |
  ---mall-common #公共模塊
 |
  ---mall-goods  #商品服務(端口:6001)
 |
  ---mall-order  #訂單服務(端口:7001)
 |
  ---mall-user   #用戶服務(端口:8001)

說明 有關項目具體的代碼我這邊就不放上去了,文章最下面會附上GitHub地址。


四、測試

這里主要測試兩點

1)各模塊連接數據庫是否成功
2)訂單服務調商品服務接口能否成功

1、訂單接口代碼

@RestController
@RequestMapping("api/v1/goods_order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("getGoods")
    public Object getGoods(int goodsId) {
        Goods goods = restTemplate.getForObject("http://localhost:6001/api/v1/goods/findByGoodsId?goodsId=" + goodsId, Goods.class);
        return goods;
    }
}

2、測試

通過postMan測試

通過圖片可以說明

1)商品服務連接數據庫成功
2)訂單服務調商品服務成功

說明 這只是一個學習的項目,所以比較簡單,下面就是一步一步添加spring cloud alibaba 框架及相應組件。

github地址RestTemplateStudy



少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(3)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM