horysk / itcast-platform

基于秒杀场景微服务架构代码

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

为现实秒杀场景,搭建后端spring cloud微服务架构,前端可以使用vue或者其他框架。

1.后端框架包括:2个注册中心eureka,2个api网关zuul,客户端负载均衡ribbon,声明式服务调用feign,断路器hystrix,同时还包括两个后端业务服务,一个用户服务,一个订单服务。

2.流程说明:用户从浏览器或者app等终端发起http请求,通过cdn加速和dns域名解析后,请求到达Nginx后,Nginx对网关层进行负载,因为网关也需要多HA。 此时网关Gateway接收到请求后,根据请求路径进行动态路由,通过注册中心eureka服务发现是订单中的服务,则从ribbon中选择一台订单的实例进行调用,订单实例中如需要其他服务信息(例如用户服务信息), 再通过声明式服务调用feign调用其他服务接口信息,将数据业务处理后,反馈给前端,流程结束。

3.用到相关服务和技术:redis缓存,mysql数据库,rabbitMQ队列,Nginx,redisson分布式锁,Mybatis持久层框架,Mybatis的分页插件pagehelper,mybatis-generator代码自动生成工具,spring cloud微服务组件。JDK1.8,maven-3.3.9。

4.系统服务配置: 操作系统hosts文件配置内容:127.0.0.1 www.buba.com Nginx路径下conf目录下nginx.conf文件配置内容:

http {
     upstream  backServer {
    	server 127.0.0.1:7000 weight=1;
    	server 127.0.0.1:8000 weight=1;
     }         
     server {
        server_name  www.buba.com;
        location / {
            proxy_pass http://backServer;
        }
     }
}

5.post请求:请求url:http://www.buba.com/orderservice/order/pay Headers内容:Content-Type:application/json 和 userToken:zhangsan 请求入参json参数:{"userName":"zhangsan"} 如果下单成功请求出参json参数:{"code":"0","msg":"下单成功","timestamp":1557127591533,"data":{"id":"9f361c558cb340f0aa76449fa0c4a8f0","userid":"1"}}

6.运行微服务应用前必须启动redis服务,rabbitMQ服务,Nginx服务和mysql服务:业务应用按顺序启动itcast-platform-eureka,itcast-platform-zuul,itcast-platform-order和itcast-platform-user

7.架构模块介绍:从名称中即可理解每个module的作用。其中itcast-common是一个公共基础包,方便给后台服务引用。itcast-parent为各个module的父pom,统一对各子模块依赖版本进行管理。

8.itcast-platform-eureka和itcast-platform-zuul模块中application-prod.yml有两个profiles: peer1和peer2,双实例部署测试高并发高可用。两个后端业务服务根据测试和生产需求,进行多实例部署测试。

9.启动多实例多profiles指令:java -jar itcast-platform-zuul-1.0.0.jar --spring.profiles.active=prod,peer1 或 java -jar itcast-platform-zuul-1.0.0.jar --spring.profiles.active=prod,peer2

10.数据库表初始化脚本:

CREATE TABLE
    USER
    (
        ID VARCHAR(128) COLLATE utf8_general_ci NOT NULL,
        USER_NAME VARCHAR(120) COLLATE utf8_general_ci,
        PASSWORD VARCHAR(64) COLLATE utf8_general_ci,
        PRIMARY KEY (ID)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  
CREATE TABLE
    TDORDER
    (
        ID VARCHAR(128) COLLATE utf8_general_ci NOT NULL,
        USER_ID VARCHAR(128) COLLATE utf8_general_ci,
        GOODS_ID VARCHAR(128) COLLATE utf8_general_ci,
        CAMPAIGN_ID VARCHAR(128) COLLATE utf8_general_ci,
        PRIMARY KEY (ID)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 
    
INSERT INTO `user` (`ID`, `USER_NAME`, `PASSWORD`) VALUES('1','zhangsan','123456');

About

基于秒杀场景微服务架构代码


Languages

Language:Java 100.0%