前言 接上一篇偏向锁的十连问,继续升级到重量级锁的进阶版,检验一下自己离精通重量级锁还有多远。建议在读之前了解下Java中重量级锁的实现原理。 重量级锁的ObjectMoni...
前言 接上一篇偏向锁的十连问,继续升级到重量级锁的进阶版,检验一下自己离精通重量级锁还有多远。建议在读之前了解下Java中重量级锁的实现原理。 重量级锁的ObjectMoni...
前言 对于Hotpot JVM中的偏向锁,大部分开发者都比较熟悉或者至少听说过。那我们用下面10个关于偏向锁的进阶问题,检验一下自己离精通还有多远。 如何判断当前锁对象为偏向...
前言 Etcd集群通过Raft协议的选举机制产生一个Leader,这样客户端在对etcd存储的数据进行更新时,就可以直接将请求发给Leader。一旦回复客户端成功,则表示数据...
前言 选举是Raft实现数据一致性的安全保证,一个raft集群能够正常运行,必须有且仅有一个Leader存在,一次成功选举是集群能够正常运行的前提。Raft协议对选举的定义和...
你把daoAuthenticationProvider()方法中的daoProvider.setUserDetailsService(userDetailsService());改成daoProvider.setUserDetailsService(jwtUserService());试一下,好像是Bean定义的问题
Spring Security做JWT认证和授权上一篇博客讲了如何使用Shiro和JWT做认证和授权(传送门:https://www.jianshu.com/p/0b1131be7ace),总的来说shiro是一个比较早期...
前言 之前解析过Raft协议基本原理(传送门)[https://www.jianshu.com/p/7a313173b56a],一直想找个具体实现来看一下。Etcd是一款开源...
不知道你指的是client端还是broker端
RocketMQ源码解析(八)-Broker#消息发送从这篇文章开始,主要看一下Broker处理一条消息的完整过程:接收Producer发来的消息->存储消息->将消息推给Consumer。这一篇主要看下接收Producer消息...
中间是按协议封包然后网络发送,收到broker回复后回调this.pullAPIWrapper.pullKernelImpl()这一步传入的pullCallback。
RocketMQ通信层用的netty,因为这里主要讲mq所以netty的部分没提,你可以看下NettyRemotingClient这个类,在初始化时传入了NettyClientHandler
RocketMQ源码解析(四)-Consumer消息消费方式 Consumer分为两种,PullConsumer和PushConsumer。从名字就可以看出一种是拉取的方式,一种是主动Push的方式。具体实现如下: Pul...
可以把日志贴一下看看
RocketMQ源码解析(八)-Broker#消息发送从这篇文章开始,主要看一下Broker处理一条消息的完整过程:接收Producer发来的消息->存储消息->将消息推给Consumer。这一篇主要看下接收Producer消息...
前言 前面用了十几篇文章讲了Dubbo的基本原理和代码实现,基本的调用过程覆盖的差不多了。后续文章讲讲在面试中经常被问到的Dubbo原理。大部分Dubbo源码解读文章都把SP...
前言 异步编程中,callback是经常用到的结果获取方式,做为一个负责任的框架,Dubbo自然也要提供对Callback的支持。相对于进程内的异步结果返回,RPC中对异步的...
前言 接上一篇中的服务暴露逻辑,当接口使用Dubbo协议暴露服务时,会启动一个DubboServer来监听消费端的请求,端口的绑定和监听都是通过Exchanger层来实现的。...
前言 在一次完整的Dubbo RPC调用过程中,需要用到两次代理。一次是在服务的调用方,代理面向的是用户代码,用户在调用接口的时候,实际调用的是接口的代理,代理实现中将用户调...
前言 在一次正常的RPC调用发起之前,做为服务提供方必须先保证自己的服务已经启动,并且监听某个端口来接收Consumer发来的请求,Dubbo中称这个暴露服务的动作为expo...
@小坐38 broker下线,这里面涉及到两个逻辑,一个是broker的上下线也会导致consumer重新做一次负载均衡。另一个是broker是master+slave的集群部署,如果master挂了,当前开源版本的rocketmq没有自动选举功能重新选一个master,不过如果集群设置了可以从slave读取消息,consumer就会从slave消费剩余的消息。
RocketMQ源码解析(四)-Consumer消息消费方式 Consumer分为两种,PullConsumer和PushConsumer。从名字就可以看出一种是拉取的方式,一种是主动Push的方式。具体实现如下: Pul...
前言 上一篇中Exchange层根据服务提供方的协议类型来初始化一个Client负责和Server端的通信。Client将负责和Server端建立连接,并定时发送心跳来维护连...
前言 前两篇文章讲了消费端代理的生成,最终到请求发送操作由Invoker来完成。Invoker同时集成了集群服务发现和路由功能,还集成了调用过程中的自定义扩展Filter。I...
前言 上一篇讲Proxy的文章中看到,构建Proxy需要传入Invoker参数。除基本方法外,其它接口方法的调用最终都是调用的invoker.invoke()方法。从rpc调...
@写的一手好代码 producer在发送的时候会指定queueId
RocketMQ源码解析(九)-Broker#消息存储ConsumeQueueConsumeQueue的作用 上一篇文章讲到Broker在收到消息后,通过MessageStore将消息存储到commitLog中,但是consumer在消费消息的时候是按...
前言 上一篇讲了Dubbo消费端初始化的过程,在应用启动时,Dubbo会扫描classpath下的类,找到@Reference注解后注入生成的远程服务代理。这里面主要涉及到I...