# 话费充值_1 **Repository Path**: secaco/recharge_zhi ## Basic Information - **Project Name**: 话费充值_1 - **Description**: 分布式、高并发 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-12-08 - **Last Updated**: 2023-12-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 云金-话费充值 #### 介绍 - nginx:高并发、负载均衡 - redis:可以解决同秒大量并发请求,入库|查库慢问题 - 多线程:并发处理同一业务多个请求 - 定时任务:可以定时向mysql批量插入数据 #### 设计处理 - 获取AccessToken     每个商户获取一次AccessToken有2小时有效期,保证安全的同时,避免其他接口大量并发时占用过多资源 - 创建充值订单     1. 先返回订单号和查询订单号(订单号+时间戳组成)     2. 多线程处理具体的充值业务 - 查询充值订单     先判断查询订单号是否在有效时间内,再判断查询订单号是否有效 - 定时任务      **会产生资源竞争** ,需要用redis锁处理一下,每秒插入1万记录 #### 软件架构 软件架构说明 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0623/134614_cda4c3a4_1771065.jpeg "网络拓扑图.jpg") #### 技术栈 - SpringBoot - JPA+MySQL - Redis - 线程池+多线程 - 定时任务 #### 包结构 ``` common(通用类) config -GlobalData(全局数据初始化) entity(持久实体) repository(持久层操作) service(业务层) controller(接口层) thread(线程) scheduled(持久实体) -ExecutorConfig(线程池配置) -AsyncService(异步任务) redis -RedisConfig(redis配置) -RedisKeyUtil(redis键) -RedisLockCommon(redis锁) -RedisUtil(redis操作) ``` #### 安装教程 1. git clone 2. gradle 编译 #### 依赖说明 1. mysql:创建mysql库(JPA自动建表) 2. redis 启动 #### 运行说明 1. 根据不同的port端口启动 #### 压力测试 1. Jmeter测试 - 上万线程时会出现端口占用 解决:> https://www.cnblogs.com/blog-yuesheng521/p/12373136.html - 测试文件上传至other/Jmeter/云金数科-手机充值.jmx #### 接口流程 - 创建充值订单 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0623/150927_d114af9f_1771065.jpeg "创建充值订单.jpg")