加入收藏 | 设为首页 | 会员中心 | 我要投稿 阳江站长网 (https://www.0662zz.cn/)- 办公协同、云通信、区块链、物联平台、高性能计算!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

5个优秀的Github开源替代品

发布时间:2021-02-03 13:04:34 所属栏目:外闻 来源:互联网
导读:结果为16384,即16kb 在InnoDB存储引擎中,是以主键为索引来组织数据的。记录在页中按照主键从小到大的顺序以单链表的形式连接在一起。 可能有小伙伴会问,如果建表的时候,没有指定主键呢? 如果在创建表时没有显示的定义主键,则InnoDB存储引擎会按如下方式

结果为16384,即16kb

在InnoDB存储引擎中,是以主键为索引来组织数据的。记录在页中按照主键从小到大的顺序以单链表的形式连接在一起。

可能有小伙伴会问,如果建表的时候,没有指定主键呢?

如果在创建表时没有显示的定义主键,则InnoDB存储引擎会按如下方式选择或创建主键。

  1. 首先判断表中是否有非空的唯一索引,如果有,则该列即为主键。如果有多个非空唯一索引时,InnoDB存储引擎将选择建表时第一个定义的非空唯一索引作为主键
  2. 如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的指针作为索引

页和页之间以双链表的形式连接在一起。并且下一个数据页中用户记录的主键值必须大于上一个数据页中用户记录的主键值

假设一个页只能存放3条数据,则数据存储结构如下。
 

这种方式,只要任务一的定时任务准时启动,任务一完成之后发送 MQ 消息,任务二收到之后就会启动任务,结束之后再发送消息给 MQ。任务三流程同任务二

使用这种方式存在优点为:

  • 下游任务只要收到消息就能立刻执行,不需要额外等待,整体任务执行时间变短
  • 上游任务时间变动,无需修改下游任务时间。我们这个例子,只需要任务一的实际即可

总结

对于上游需要关注下游返回结果的场景,不适合使用 MQ。

适合使用 MQ 的场景有:

上游不关心下游结果的场景

数据驱动的定时任务依赖
 

上图中三个任务,任务二需要依赖任务一完成,而任务三又需要依赖任务二完成。

我们之前使用这种模式,通常会碰到几个问题:

  • 通常 06:00 就能下载到对账文件,但是有时候渠道端对账文件延迟,就会导致任务一执行失败,这样就会后续两个定时任务也会执行失败
  • 假设任务二数据过多,执行时间过长,任务三执行时还没结束,这就导致任务三无法拿到全量数据,导致对账异常
  • 整体任务执行时间过长
  • 任务一若调整时间,可能导致任务二,任务三都需要调整时间

使用 MQ解耦

使用 MQ 解耦之后架构图如下

(编辑:阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读