成就系统实现(三)-架构设计

1.技术选型

之前上网找过一些关于成就系统设计的文档,推荐的都是事件驱动模型,因此底层设计也基于这个模型来做,由业务方产生可能触发成就的事件,统一放到一个队列里面,由线程去取队列里面的事件,进行分发处理。

技术点:

1.1 事件驱动模型

1.2 disruptor 号称百万流量的一个高并发处理框架

2.数据库设计

2.1 成就包配置表
CREATE TABLE `achievement_package` (
  `achievement_package_id` varchar(32) NOT NULL COMMENT '主键id',
  `name` varchar(32) NOT NULL COMMENT '包名称',
  `start_time` bigint(20) NOT NULL COMMENT '开始时间',
  `end_time` bigint(20) NOT NULL COMMENT '结束时间',
  `create_time` bigint(20) NOT NULL COMMENT '创建时间',
  `op_time` bigint(20) NOT NULL COMMENT '更新时间',
  `last_ver` int(11) NOT NULL COMMENT '版本号',
  `is_valid` tinyint(4) NOT NULL COMMENT '是否有效 0-失效 1-有效 ',
  `name_code` varchar(32) NOT NULL DEFAULT '' COMMENT '成就包名国际化编码',
  PRIMARY KEY (`achievement_package_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成就包配置表'

2.2 成就模板表
CREATE TABLE `achievement_template` (
  `achievement_template_id` varchar(32) NOT NULL COMMENT '主键id',
  `name` varchar(32) NOT NULL COMMENT '成就名称',
  `name_code` varchar(32) NOT NULL COMMENT '成就名称国际化编码',
  `context` varchar(64) DEFAULT NULL COMMENT '描述',
  `context_code` varchar(64) DEFAULT NULL COMMENT '描述国际化编码',
  `reward` varchar(64) NOT NULL COMMENT '奖励 json',
  `pic_url` varchar(255) DEFAULT NULL COMMENT '成就图片 status-url',
  `conditions` text NOT NULL COMMENT '达成条件 json',
  `achievement_package_id` varchar(32) NOT NULL COMMENT '所属成就包',
  `start_time` bigint(20) NOT NULL COMMENT '成就开始时间',
  `end_time` bigint(20) NOT NULL COMMENT '成就结束时间',
  `create_time`
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值