一、为什么选择使用rabbitmq作为消息中间件?
- 社区活跃度高,遇到问题容易解决
- 支持消息的持久化,Activemq也支持。
- 综合技术实现强,可靠性高、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统。
- 支持高并发,rabbitmq实现语言是天生具备高并发高可用的
erlang
语言
参考:https://blog.csdn.net/water_21215/article/details/80089663
二、为什么哈希表、完全平衡二叉树、B树、B+树都可以优化查询,为何Mysql独独喜欢B+树?
- 哈希表的特点:可以快速的精确查询,但是不支持范围查询。
- 完全平衡二叉树:与B树相比,B树的一个节点可以存储多个元素,从而减少了从磁盘中读取数据的次数,提高了IO效率。
- B树:与B+树相比,B+树中的非叶子节点会冗余一份在叶子节点中,并且叶子节点之间用指针相连。提高了范围查询的效率
三种树的结构:
参考:https://mp.weixin.qq.com/s/Qq2i0cAqkbSXm4fWg2oAaQ
三、分布式、高并发及多线程的区别?
三者相辅相成,但是侧重点不同
- 分布式:是从物理资源的角度去将不同的机器组成一个整体对外服务,技术范围非常广且难度非常大;
- 高并发:是从业务角度去描述系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如缓存、CDN等,当然也包括多线程;
- 多线程:聚焦于如何使用编程语言将CPU调度能力最大化。