前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务综合案例-01-需求分析

微服务综合案例-01-需求分析

作者头像
用户4919348
发布2019-06-17 16:19:20
1K0
发布2019-06-17 16:19:20
举报
文章被收录于专栏:波波烤鸭波波烤鸭

  前面我们分别给大家介绍了SpringBoot,SpringCloud的Eureka(注册中心),ribbon(负载均衡),Feign(声明式服务调用),Hystrix(服务容错)等内容,在介绍后续内容之前我们穿插通过一个案例来综合使用下前面介绍的内容。

一、服务号常用设计模式介绍

  首先我们来看下在微服务架构中我们经常会选用的设计模式

1.代理设计模式

  代理服务作为整个系统的入口服务。

在这里插入图片描述
在这里插入图片描述

代理服务的作用:

  1. 服务统一的入口
  2. 鉴权校验
  3. 请求过滤(服务网关)

2.聚合设计模式

  聚合设计常用在报表项目中,在报表服务中可以直接获取到其他各个系统中的数据。

在这里插入图片描述
在这里插入图片描述

3.链条设计模式

  服务于服务相互之间相互关联,比如交易系统中查看交易信息,交易信息一般会包括:1.支付信息,2.订单信息,3.上篇信息,4.用户信息等

在这里插入图片描述
在这里插入图片描述

4.聚合链条设计模式

  设计模式往往都不是单独使用的,而是相互组合来完成完整需求的

在这里插入图片描述
在这里插入图片描述

5.数据共享设计模式

  数据共享模式一般在后台管理系统中用的比较多,可以直接连接多个数据库,操作到的数据如果涉及到了缓存,那么必须通过调用接口来完成。保证数据的一致性。

在这里插入图片描述
在这里插入图片描述

6.异步设计模式

  在需要解耦或者不需要及时响应的服务中,异步设计是最恰当不过的了。

在这里插入图片描述
在这里插入图片描述

二、案例需求分析

  案例的结构为一个代理链条设计结构。具体如下

在这里插入图片描述
在这里插入图片描述

  一共五个服务,除了consumer服务外,其他每个服务都有独立的数据库来持久化数据。

三、数据库设计

  创建四个库,对于四个服务,具体如下:

在这里插入图片描述
在这里插入图片描述

1.用户服务

代码语言:javascript
复制
CREATE DATABASE;
USE `book-user`;
/*Table structure for table `user` */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
 `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `user_name` VARCHAR(50) DEFAULT NULL COMMENT '用户名',
 `password` VARCHAR(50) NOT NULL COMMENT '密码',
 `email` VARCHAR(50) NOT NULL COMMENT 'email',
 `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认 0 不删除,1 删除',
 `create_time` datetime NOT NULL  COMMENT '创建时间',
 `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
 PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 
COMMENT='用户表';
INSERT INTO 
`user`(`id`,`user_name`,`password`,`email`,`deleted`,`create_time`,`update_time`) 
VALUES (1,'admin','admin','dengpbs@163.com',0,'2019-06-16 12:56:31','2019-06-16 14:47:25');

2.商品服务

代码语言:javascript
复制
CREATE DATABASE ;
USE `book-product`;
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
 `id` INT(10) NOT NULL AUTO_INCREMENT,
 `name` VARCHAR(100) DEFAULT NULL COMMENT '产品名称',
 `status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '产品状态:0 待审,1 上架,2 下架,3 停售,4 测试',
 `price` INT(10) NOT NULL COMMENT '产品价格 单位分',
 `detail` TEXT COMMENT '产品详情',
 `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认 0 不删除,1 删除',
 `create_time` datetime NOT NULL  COMMENT '创建时间',
 `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
 PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 
COMMENT='产品信息';
INSERT INTO `product` (`id`, `name`, `status`, `price`, `detail`, `deleted`, `create_time`, `update_time`) VALUES('1','波波烤鸭 java 程序设计','1','100','波波烤鸭 java 程序设计','0','2017-12-03 09:08:12','2017-12-17 16:44:39');
INSERT INTO `product` (`id`, `name`, `status`, `price`, `detail`, `deleted`, `create_time`, `update_time`) VALUES('2','波波烤鸭 程序员经典案例','1','200','波波烤鸭 百战程序员经典案例','0','2017-12-03 09:08:12','2017-12-17 16:44:41');
INSERT INTO `product` (`id`, `name`, `status`, `price`, `detail`, `deleted`, `create_time`, `update_time`) VALUES('3','波波烤鸭-人工智能基础教程','1','300','波波烤鸭 人工智能基础教程','0','2017-12-17 16:44:35','2017-12-17 16:45:15');

3.订单服务

代码语言:javascript
复制
CREATE DATABASE  `book-order`;
USE `book-order`;
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
 `id` INT(10) NOT NULL AUTO_INCREMENT,
 `product_id` INT(10) NOT NULL DEFAULT '0' COMMENT '产品 ID',
 `price` INT(10) DEFAULT '0' COMMENT '价格',
 `user_id` INT(10) DEFAULT '0' COMMENT '用户账号 ID',
 `trade_id` INT(10) DEFAULT '0' COMMENT '交易号 ID',
 `trade_status` TINYINT(1) DEFAULT '0' COMMENT '支付状态 0=未支付 1=已支付',
 `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认 0 不删除,1 删除',
 `create_time` datetime NOT NULL  COMMENT '创建时间',
 `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

4.支付服务

代码语言:javascript
复制
CREATE DATABASE;
USE `book-trade`;
DROP TABLE IF EXISTS `trade`;
CREATE TABLE `trade` (
 `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT 'IID',
 `order_id` INT(10) NOT NULL COMMENT '订单 ID',
 `user_id` INT(10) NOT NULL COMMENT '用户 ID',
 `price` INT(10) NOT NULL COMMENT '支付价',
 `pay_status` TINYINT(4) NOT NULL COMMENT '1 未付款 2 付款中 3 付款失败 4 付款完成',
 `pay_type` TINYINT(4) NOT NULL COMMENT '支付类型:1-支付宝支付,2-网银在线,3-银联,4-微信支付',
 `gateway_pay_num` VARCHAR(30) DEFAULT NULL COMMENT '网关支付流水号',
 `gateway_pay_time` DATETIME DEFAULT NULL COMMENT '网关支付时间',
 `gateway_pay_price` INT(10) NOT NULL DEFAULT '0' COMMENT '网关实际支付金额',
 `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认 0 不删除,1 删除',
 `create_time` datetime NOT NULL  COMMENT '创建时间',
 `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
 PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='交易';

下篇文章开始具体介绍服务设计

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、服务号常用设计模式介绍
    • 1.代理设计模式
      • 2.聚合设计模式
        • 3.链条设计模式
          • 4.聚合链条设计模式
            • 5.数据共享设计模式
              • 6.异步设计模式
              • 二、案例需求分析
              • 三、数据库设计
                • 1.用户服务
                  • 2.商品服务
                    • 3.订单服务
                      • 4.支付服务
                      相关产品与服务
                      数据库
                      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档