骨干架构
1、组件架构
对于需要经常复用的模块进行抽象封装,抽象成一个单独的项目,通过Maven导入的方式进行使用。如Redis分布式锁的定制、线程池的定制、分布式id的定制、异常的处理等。
验证码组件的封装
分布式id生成器的封装
redis相关组件的封装
redission组件的封装
布隆过滤器、防重复幂等、分布式锁
延迟队列
线程池的封装
2、核心业务
支付服务、订单服务、用户服务、演出节目服务四个核心服务模块。
此外,还包括网关服务、监听服务等。
业务服务
网关服务
订单服务(核心业务)
支付服务(核心业务)
节目服务(核心业务)
用户服务(核心业务)
基础数据服务
业务服务的调用
订单服务的Feign调用
支付服务的Feign调用
节目服务的Feign调用
用户服务的Feign调用
基础数据服务的Feign调用
微服务组件封装
服务公共包
微服务公共包
灰度功能组件
Hystrix熔断插件
服务初始化插件
技术架构
核心业务
核心业务围绕四个方面进行设计
支付服务、订单服务、用户服务、节目服务
用户服务包括用户注册登录、购票人选择等功能
采用图形验证码+布隆过滤器、高效计数器的方式有效防刷,避免注册的缓存穿透。
采用分库分表的方式管理用户表和购票人表。
订单服务包括订单查询、订单生成、订单支付、支付成功回调、订单延迟关闭
订单生成进行防重复幂等验证
订单查询采用基因法避免读扩散。
支付成功采用MQ中间件进行同步
订单延迟关闭采用延迟队列和Lua + Redis原子扣除
采用分库分表的方式管理订单表和购票人订单表
支付服务包括支付后回调、结果查询、账单对账等
演出节目服务包括节目显示、节目类型查询、用户购票等
节目显示采用ES提供分词器智能搜索、采用ES和MySQL按类型进行查询
节目查询时采用Redis+双重判定锁避免缓存穿透
用户购票包括选择节目、选择座位、参数校验、扣减库存、生成订单号、延迟订单关闭等
参数校验采用组合模式和树形结构验证模式
锁进行本地锁盒分布式锁的优化
采用Redis+Lua扣减节目数据
......