# redpacketraincode **Repository Path**: code-record/redpacketraincode ## Basic Information - **Project Name**: redpacketraincode - **Description**: 企业年会红包雨场景。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-09-22 - **Last Updated**: 2023-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业年会之红包雨场景代码说明 ## 文件结构说明 ### 后端java项目源代码 backend : 管理后台源码 frontend : 接口微服务源码 ### 前端h5页面 h5 : 用户抽奖页面 部署的目录在 /opt/data/nginx/html ## 项目启动说明 ### 中间件 本地服务器地址:192.168.56.100 使用docker搭建开发环境 ![img.png](mdimg/dockerinfo.png) ### zookeeper可视化管理工具启动 启动命令:`java -jar zkui.jar &` ```bash D:\Code\study_code\Java\project\RedEnvelopeRain\redpacketraincode\frontend\zkui>java -jar zkui.jar & 2022-09-22 18:19:42 DEBUG Main:53 - Starting ZKUI! 九月 22, 2022 6:19:42 下午 com.googlecode.flyway.core.command.DbMigrate migrate 信息: Current version of schema "PUBLIC": 1 九月 22, 2022 6:19:42 下午 com.googlecode.flyway.core.command.DbMigrate logSummary 信息: Schema "PUBLIC" is up to date. No migration necessary. log4j:WARN No appenders could be found for logger (org.eclipse.jetty.util.log). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 2022-09-22 18:19:49 INFO SessionListener:37 - Session created 2022-09-22 18:19:49 INFO SessionListener:37 - Session created 2022-09-22 18:19:49 DEBUG Login:55 - Login Action! 2022-09-22 18:19:49 DEBUG Login:55 - Login Action! 2022-09-22 18:19:50 DEBUG Login:71 - Login Post Action! ``` ### backend : 管理后台源码 配置tomcat ![img.png](mdimg/backend-start.png) ### frontend : 接口微服务源码 先启动eureka,其他再依次启动 ![img.png](mdimg/frontend-strat.png) 参数: `--server.port=9001 --spring.profiles.active=dev ` 端口设置: eureka:9001 job:9002 msg:9003 api:9004 ### 后端启动完成 ![img.png](mdimg/endstart.png) ### 开发环境访问入口 RabbitMQ控制台:http://192.168.56.100:15672/ eureka:http://127.0.0.1:9001/ zookeeper可视化管理工具(zkui):http://127.0.0.1:9090/ swagger2增强UI:http://127.0.0.1:9004/doc.html 后台管理系统:http://localhost:8080/backend_war/main ## 架构 ### 业务架构 ![img.png](mdimg/business-architecture.png) ### 软件架构 ![img.png](mdimg/software-architecture.png) ## 学习目标 1. 了解系统的功能、背景、场景及项目要求 2. 在架构角度思索系统可能面临的问题以及解决方案 3. 学习本项目所涉及的中间件等基础知识 4. 能够从0搭建springcloud微服务系统框架 5. 能够完成编码,使用中间件完成系统的业务代码 6. 学会部署上线,学会基于jenkins+docker swarm实现微服务的持续集成与动态扩容 ## 课程亮点 课程亮点 1. 高并发性:借助redis高性能及存储结构的多样性,实现活动信息的预热,为前端接口提供高并发支撑。抽奖奖池采用令牌桶设计,保障奖品库存的准确性。 2. 异步处理:应用消息队列,将抽奖中奖流程异步处理,不影响抽奖主流程对前端用户请求的响应。 3. 微服务化:基于springcloud构建系统,实现微服务化,各个子模块灵活部署,解除耦合。 4. 持续集成:基于jenkins shell脚本及docker-swarm构建持续集成。打包发布一键完成,swarm可以轻松做到资源的弹性伸缩及滚动更新。 ## 大纲章节 ### 01 业务场景介绍 电商活动、红包雨、企业年会等实战场景分析;系统要求分析:并发性、库存控制、投放策略、边界控制、活动自由配置、中奖策略 ### 02 功能展示 系统功能与需求分析;管理后台基本功能展示;前台抽奖展示 ### 03 系统所用中间件介绍 redis介绍与数据类型;redis在项目的实战应用;zookeeper节点分析;配置中心及集群高可用介绍;rabbitmq的实战与控制台;nginx动静分离及负载均衡应用 ### 04 数据库建模 ER图展示与业务建模分析;数据库表设计;报表统计逻辑分析;使用辅助工具快速创建视图 ### 05 系统概要设计 业务分析与功能模块拓扑;软件架构与微服务体系;软件设计原则讲解;缓存结构设计;主业务交互UML序列图 ### 06 管理后台框架选型 基于docker实现中间件快速搭建启动;管理后台框架选型;快速开发平台介绍与基本使用;角色用户及功能权限配置 ### 07 微服务拆分与搭建 前端模块分析与拆分;maven基本结构搭建;微服务框架集成;中间件集成与搭建:zookeeper,redis,rabbitmq,elastic-job,连接池,mybatis ### 08 辅助开发工具集成与使用 代码机mybatis-generator,分页工具PageHelper,zookeeper管理工具zkui,api文档集成swagger2 ### 09 活动预热主业务实现 缓存结构设计回顾;预热与缓存加载实现;过期时间控制;调度策略;elastic-job实战 ### 10 抽奖业务实现与技巧 中奖次数与redis原子性控制;redis+Lua脚本实现原子性;奖池令牌桶设计与中奖验证;rabbitmq的实战应用;中奖信息的异步处理 ### 11 微服务部署与Devops 服务器部署拓扑分析;jenkins持续集成与shell脚本;nginx动静分离配置;springboot镜像打包;docker-swarm实现服务的弹性扩容 ### 12 课程总结与引申 jmeter压测工具使用;发散思维之活动暂停功能;业务引申之如何实现其他发放算法;抽奖类课程设计总结