消息中间件


在这里插入图片描述
在这里插入图片描述

1. 消息不丢失

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 消息重复消费

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 死信交换机实现延时队列

延时队列 = 死信交换机 + TTL
延时队列用在有时间限制的消息的消费问题,可以对消息设置超时时间,当消息超时后就会转发到死信交换机,它也绑定了队列,比如说一个订单,时间到了之后就会由死信交换机路由到队列,拿到这个消息后判断是不是已经支付成功,没有支付成功的话就取消订单。
在这里插入图片描述

4. 消息堆积问题

在这里插入图片描述
在这里插入图片描述

5. rabbitMQ高可用机制

镜像队列和仲裁队列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. Kafka是如何保证消息不丢失的

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7. 消息的顺序消费

在这里插入图片描述

在这里插入图片描述

8. Kafka高可用机制

kafka的高可用其实是基于分区备份机制实现的,一个分区的消息会保存在不同的broker中,当这个分区的leader对应的broker宕机后,其他的broker中也会有这个分区的备份数据,分区的leader是负责读写数据的,那从这个分区的副本中可以选择一个作为分区的leader,也就实现的高可用。
在这里插入图片描述

在这里插入图片描述

9. kafka数据清理机制

kafka文件存储机制:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10. kafka中实现高性能的设计

口述:高性能的设计无非是从两个维度来进行考虑,计算和IO,其实像kafka啊MQ啊,还是说其他的消息队列,都是一个 IO 密集型应用,从IO的角度来看,其实它涉及都两种IO磁盘IO与网络IO,对于网络IO,Kafka采用了批量消息的发送方式减少了网络的开销,包括像消息压缩啊,就减少了数据量,提高了网络的传输率,并且kafka也采用了IO多路复用技术,它采用的是典型的Reactor 网络通信模型, 1个 Acceptor 线程,负责监听新的连接,然后将新连接交给 Processor 线程处理,N 个 Processor 线程,每个 Processor 都有自己的 selector,负责从 socket 中读写数据, M 个 业务处理线程负责业务处理,它可以复用一个线程去处理大量的 Socket 连接,从而保证高性能。对于磁盘IO的话,kafka采用了顺序IO的方式,将消息追加到文件中,所以性能也比较高,并且kafka还使用了页缓存技术,磁盘顺序写加上页缓存更好地解决了日志文件的高性能读写问题,为了同时去读写这些文件,kafka使用了分区分段的设计,将一个topic数据分区存储,那分区在不同的borker上不同的服务器上,那就提高了并发度。
这些都是kafka高性能的体现,其实kafka中也有线程池的这种思想,它采用了内存池的复用机制,其实和线程池的本质是一样的都是为了提高复用,减少频繁的创建和释放,只不过kafka其实它复用的是内存,是batch为单位的内存,其实就是当这个batch中数据发送完了,那这块内存就要释放了,其实JVM在GC的过程是会STW的,kafka采用了内存的复用技术,当需要用的时候直接从内存池中去取,不用了就放回内存池等待复用,不会涉及到GC,这其实也是高性能的体现吧。

redis为什么这么快
无非就是两个方面,计算和IO,那针对计算的话,redis它是内存级别的,本身计算就很快,而且redis还采用了非常高效的存储结构,像hash表啊跳表啊,非常高效,所以计算问题不是redis的性能瓶颈,IO才是redis的性能瓶颈,针对IO来说的话,IO其实也分为了磁盘IO和网络IO,像磁盘IO的话,其实就比较中规中矩了,比如说生成RDB快照,也是为了提高性能它会fork子进程去完成,以及AOF刷盘策略啊,redis也是提供了不同的策略吧,可以去选择,也是为了能尽可能提高性能吧,当然性能好的话安全性也就下降了,这个的话可以去衡量选择的,这些都是涉及磁盘的IO,redis这么快其实取决于它的网络IO模型,Redis采用epoll的多路复用模型,epoll其实底层是用红黑树加链表实现的,redis服务端启动时,就会创建epoll实例,其实就是创建了红黑树和链表,服务端的socket会注册到红黑树上,当事件准备就绪后就会触发回调将红黑树上的文件描述符记录到链表中,链表中记录的就是所有准备就绪的事件,根据不同的事件再进行处理,其实也就三种事件,服务端读事件、客户端读事件和客户端写事件,在redis中它会根据不同的事件去不同的处理器去执行,像连接应答处理器它处理的就是服务端的读事件,也就是处理连接请求,以及像命令请求处理器它处理的就是客户端的读事件其实就是redis命令读进来,命令回复处理器的话它处理的就是客户端的写事件将命令结果返回给客户端,对于命令请求处理器与命令回复处理器在redis6.0采用了多线程的方式,也提高了命令的处理速度。总结下来的话,redis这么快就是因为它采用了epoll这样的io多路复用模型,虽然说它是单线程的,但是它只有当对应的文件描述符有准备就绪的事件时,才会去处理它,处理的都是有用的,非常高效,并且在命令请求和命令回复处理器上,也是开了多线程来加速处理,所有redis非常的高效快。
在这里插入图片描述

下图是epoll模型在Linux上的示意图,把我两个重点:1.数据结构(红黑图和队列)2.三个函数(create、ctl、wait)
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值