# itcast-platform **Repository Path**: kedocode/itcast-platform ## Basic Information - **Project Name**: itcast-platform - **Description**: 基于秒杀场景微服务架构代码 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-24 - **Last Updated**: 2021-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 为现实秒杀场景,搭建后端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');