写点什么

[架构实战营] 模块八作业

作者:Geek_0ed632
  • 2022 年 2 月 04 日
  • 本文字数:450 字

    阅读完需:约 1 分钟

设计思路

生产者表

  1. 考虑每一个队列一张表;

  2. 队列只提供基础的队列写入与消费组读取;

  3. 直接基于数据库自增 id 作为消息 ID,并且添加 msg_key 标明业务属性,在消费者端保证业务的幂等;

消费者表

  1. 考虑每一个队列一张表;

  2. 写入的信息为对应消费组的 offset;

设计理由

  1. 每一个队列一张表,有利于表的大小的控制,可以减少特殊状况下锁表或者慢查询带来的性能影响;

  2. 为简化消息队列的能力;

设计方案

生产者表

CREATE TABLE `t_producer_xxx` (  `id` bigint NOT NULL AUTO_INCREMENT,  `msg_id` bigint NOT NULL,  `msg_key` varchar(255) NOT NULL,  `msg_context` text NOT NULL,  PRIMARY KEY (`id`),  KEY `idx_msg_id` (`msg_id`),  KEY `idx_msg_key` (`msg_key`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
复制代码

消费者表

CREATE TABLE `t_consumer_xxx` (  `id` bigint NOT NULL AUTO_INCREMENT,  `consumer_group` varchar(255) NOT NULL,  `offset_id` bigint NOT NULL,  PRIMARY KEY (`id`),  KEY `uk_consumer_group` (`consumer_group`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
复制代码


发布于: 刚刚阅读数: 2
用户头像

Geek_0ed632

关注

还未添加个人签名 2019.08.26 加入

还未添加个人简介

评论

发布
暂无评论
[架构实战营] 模块八作业