中间件核心技术与实战
丁威
中通快递资深架构师,RocketMQ 社区首席布道师
19674 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
中间件核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

期中测试答案 | 这些问题,你都答对了吗?

你好,我是丁威。
这节课我们来回答一下上节课的问题,希望通过梳理这些问题,可以进一步加深你对知识的理解。
1. MyCat 数据库中间件与 ShardingJDBC 在架构思想上有什么差异?
MyCat 数据库中间件的设计理念是代理模式,这是一种高度中心化的设计,所有的路由配置都会存储在 MyCat 数据库中间件中。具体的工作机制是,所有客户端将所有请求发送到 MyCat,然后 MyCat 根据配置的路由规则将请求发送到真实的后端数据库。
这种架构模式在数据量较少的情况下确实能提升性能,但如果请求数继续增加,就有可能出现问题,你可以先看看下面这张图片:
如果数据库需要存储的数据逐步增加,我们就要对后端数据库进行扩容,这个无可厚非。但如此一来,存储的数据会越来越多,基于代理模式,所有的请求都必须经过 MyCat 这个中心节点。一旦这个节点出现故障,将导致系统不可用。
而 ShardingJDBC 采取了去中心化的设计,系统架构如下图所示:
从这张图可以看到,ShardingJDBC 是将所有的路由信息嵌入到应用进程中,在客户端进行路由计算,然后连接后端真实的数据库。如果要对后端数据库进行扩容,只需要更新一下路由注册信息就可以了,不会带来额外的资源损耗,也不存在单点故障。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了数据库中间件和架构设计、红黑树、JUC定时调度线程池底层实现原理、线程复用和停止、多线程编程中的互斥与协作关系、锁的底层数据结构以及Object.wait方法释放锁的影响等技术内容。首先比较了MyCat数据库中间件和ShardingJDBC的架构思想,重点讨论了它们的设计差异和优劣势。接着介绍了订单中心的架构设计和红黑树的操作方法。在JUC定时调度线程池方面,详细介绍了PriorityQueue的实现原理和时间轮算法。此外,还涉及了线程复用、线程停止、多线程编程中的互斥与协作关系,以及锁的底层数据结构和Object.wait方法释放锁的影响。通过这些内容,读者可以全面了解数据库中间件、架构设计、数据结构、多线程编程等方面的技术知识。文章内容丰富,涵盖了多个技术领域,对于想要深入了解这些技术的读者来说,是一篇极具价值的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《中间件核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • 秋天
    然后开一个定时任务,拿队列中第一个元素和当前时间进行比较:如果下一次执行时间大于等于当前时间,则将队列中第一个元素(调度任务)从队列中移除,投入线程池中执行。如果下一次执行时间小于当前时间,则不处理,因为队列中最小的待执行任务都还没有到执行时间,其他任务一定也是这样。 大佬,感觉着说的有问题呢?大于当前时间不做处理,小于当前时间执行调度加入调度线程中把?
    2022-08-03归属地:北京
    1
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部