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)

Spring Cloud Alibaba(2)---RestTemplate微服务项目的更多相关文章

  1. Spring Cloud Alibaba+Nacos搭建微服务架构

    1. Spring Cloud Alibaba 简介    Spring Cloud Alibaba是阿里巴巴为分布式应用提供的一站式解决方案,能够更方便快捷地搭建分布式平台,nacos拥有着替换eu ...

  2. 阿里巴巴开源 Spring Cloud Alibaba,加码微服务生态建设

    本周,Spring Cloud联合创始人Spencer Gibb在Spring官网的博客页面宣布:阿里巴巴开源 Spring Cloud Alibaba,并发布了首个预览版本.随后,Spring Cl ...

  3. Spring Cloud Alibaba 使用RestTemplate进行服务消费

    创建服务提供者工程 创建spring-cloud-alibaba-service-member工程,会员中心服务该服务提供用户会员信息. pom.xml <?xml version=" ...

  4. 【spring cloud】子模块module -->导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做/或者 每次导入一个新的spring boot项目,IDEA不识别子module,启动类无法启动/右下角没有蓝色图标

    如题:导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做 或者说每次导入一个新的spring boot项目,IDEA不识别,启动类无法启动,怎么解决 下面分别 ...

  5. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  6. SpringCloud(1)---基于RestTemplate微服务项目案例

    基于RestTemplate微服务项目 在写SpringCloud搭建微服务之前,我想先搭建一个不通过springcloud只通过SpringBoot和Mybatis进行模块之间额通讯.然后在此基础上 ...

  7. Spring Cloud和Docker搭建微服务平台

    用Spring Cloud和Docker搭建微服务平台 This blog series will introduce you to some of the foundational concepts ...

  8. 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)

    背景 公司去年开始使用dotnet core开发项目.公司的总体架构采用的是微服务,那时候由于对微服务的理解并不是太深,加上各种组件的不成熟,只是把项目的各个功能通过业务层面拆分,然后通过nginx代 ...

  9. spring cloud+dotnet core搭建微服务架构:服务发现(二)

    前言 上篇文章实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载均衡地址,通过负载均衡来指向到服务B的真实地址,上篇文章已经说了这 ...

随机推荐

  1. hive复杂数据类型的用法

    目录 1.简单描述 2.测试 1.简单描述 arrays: ARRAY<data_type> maps: MAP<primitive_type, data_type> stru ...

  2. TorchVision 预训练模型进行推断

    torchvision.models 里包含了许多模型,用于解决不同的视觉任务:图像分类.语义分割.物体检测.实例分割.人体关键点检测和视频分类. 本文将介绍 torchvision 中模型的入门使用 ...

  3. 在 c++ 程序中出现CtrIsValidHeapPointer问题

    在c++程序中出现CtrIsValidHeapPointer问题, 我发现的原因是申请了大量动态数组但是并没有把他们初始化 为数组赋初始值便可以很好解决这一问题.

  4. Go的切片

    目录 切片 一.切片的创建 1.先创建数组,再引用 二.切片的修改 三.切片的长度和容量 四.使用make创建切片 五.切片的修改和追加 1.修改 2.追加:append 六.切片的函数传值 七.多维 ...

  5. 用 Hugo 快速搭建博客

    用 Hugo 搭建博客 Hugo 是一个用 Go 编写的静态站点生成器,生成速度很快 下面是具体操作: 1.安装 Hugo Windows 用户 使用 Chocolatey 或者 Scoop 快速安装 ...

  6. brew安装Nginx

    目录 安装流程 常用命令记录 典型配置方式 查看启动状态是否有报错 php 启动 参考 安装流程 这里使用 brew 来安装软件. 安装 brew install nginx 查看安装信息(经常用到, ...

  7. IDEA中部署servlet

    配置和不是servlet 第一种方法:(两种方法不能混用,使用第一种方法后,尽量删除第二种方法的注解方式) 使用xml文件配置: name没有什么特别的,就是需要统一即可.url-pattern中的地 ...

  8. FreeBSD ports 多线程编译

    FreeBSD ports 多线程编译FORCE_MAKE_JOBS=yesMAKE_JOBS_NUMBER=4写入/etc/make.conf没有就新建.4是处理器核心数,不知道就别改.

  9. 前端学习 node 快速入门 系列 —— 服务端渲染

    其他章节请看: 前端学习 node 快速入门 系列 服务端渲染 在简易版 Apache一文中,我们用 node 做了一个简单的服务器,能提供静态资源访问的能力. 对于真正的网站,页面中的数据应该来自服 ...

  10. python3 虚拟环境 venv

    创建一个虚拟环境: python -m venv test            (test 为创建的虚拟环境目录) 激活虚拟环境: test\Scripts\activate            ...