- 博客(6)
- 问答 (1)
- 收藏
- 关注

原创 面试精讲:RabbitMQ高可用
RabbitMQ是基于主从做高可用性的,有两种模式1. 普通集群模式这种方案没有高可用性,主要是提高吞吐量,让集群中多个节点来服务某个queue的读写操作。每个机器启动一个rabbitmq,使用多台机器,但是创建的消息队列只会在一个rabbitmq上,其他rabbitmq实例每次同步消息队列的数据。当连到其他rabbitmq实例消费时,会从消息队列实例拉取数据过来。如果那个消息队列的实例宕机了,会导致其他实例无法从消息队列实例拉取数据,如果开启了消息持久化,让rabbitmq落地
2022-01-25 18:37:10
1560

原创 面试精讲:负载均衡算法
服务消费者从服务配置中心获取到服务的地址列表后,需要选取其中一台来发起RPC调用。如何选择,则取决于具体的负载均衡算法,对应于不同的场景,选择的负载均衡算法也不同。常见的负载均衡算法包括轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接法。轮询法轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。使用轮询策略的目的是,希望做到请求转移的绝对均衡,但付出的代价性能也是相当大的。为了保证pos变量的并发互斥,引入了重量级悲
2022-01-04 17:15:03
750
1
原创 面试精讲:为什么使用消息队列
其实就是问你消息队列都有哪些使用场景,然后你项目里具体是什么场景MQ应用场景1. 异步用户调用一个接口的时候,可能该接口调用了别的方法。例如:用户注册的时候,后台可能需要调用:查询数据库,插入数据库,发送邮件,积分增加等...但是用户可能并不需要后台将所有的任务执行完毕,那么此时加入mq队列,用户就能很快得到注册成功的响应而去做一些别的事情。mq的机制又能保证最终的一致性,所以使用起来很安全很稳定。2. 解耦系统A要发送一个消息到多个系统,如果此时每增加一个系统,系统A都需要通过
2022-01-27 13:47:26
1410
原创 面试精讲:索引使用原则
Java系统里写的sql,都必须符合最左前缀匹配原则,确保你所有的sql都可以使用上这个联合索引,通过索引来查询create index(shop_id, product_id, gmt_create)全列匹配sql里,where条件里用了这3个字段,那么就一定够可以用到联合索引。select * from product where shop_id=1 and product_id=1 and gmt_create = ‘2019-01-01 10:00:00’最左前缀匹配
2022-01-26 15:23:09
894
原创 面试精讲:Java垃圾回收机制原理
垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连接,网络IO等资源)。如果希望垃圾回收机制回收某个对象,只需要将对象的引用赋值为null即可。强制系统垃圾回收有两个方法:调用System类的gc()静态方法:System.gc();调用Runtime对象的gc()实例方法:Runtime.getRuntime().gc();注意:这种强制仅仅只是建议系统垃圾回收,系统完全有可能并不立即进行垃圾回收,但垃圾回收机制也不会对程序的建议完全置之不理:垃圾回收...
2022-01-26 15:03:53
400
原创 面试精讲:如何保证消息不被重复消费
rabbitmq、rocketmq、kafka都有可能出现重复消费的问题其实重复消费不可怕,可怕的是你没考虑到重复消费之后,怎么保证幂等性。假设你有个系统,消费一条往数据库里插入一条,要是你一个消息重复两次,不就插入了两条,这数据就错了。但是你要是消费到第二次的时候,自己判断一下已经消费过了,直接扔了,不就只保留了一条数据。幂等性,通俗点说,就一个数据,或一个请求,给你重复来多次,你得确保对应的数据不会改变,不能出错。怎么保证消息队列消费的幂等性生产者发送每条数据的时候,里面添加
2022-01-25 18:25:21
2155
空空如也
golang调用dll传递数组参数问题
2016-08-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人