Spring-cloud-bus 原理

作者: 黄大海 | 来源:发表于2018-09-13 16:27 被阅读136次

事件发布/接收流程

  • new RemoteApplicationEvent() 创建事件
  • applicationContext#publishEvent 本地发布事件
  • BusAutoConfiguration#acceptLocal 监听、接收Remote事件
  • serviceMatcher#isFromSelf 判断是否是自己发出的事件
  • cloudBusOutboundChannel#send 如果是自己发出的,广播给MQ
  • MQ收发(Rabbit/Kafka)
  • BusAutoConfiguration#acceptRemote 接收MQ发来的事件
  • serviceMatcher#isForSelf 判断是否是发给自己的
  • applicationEventPublisher#publishEvent 本地广播事件
  • 本地注册的ApplicationEventListener<?>调用

事件如何路由?判断是本地还是远程?

  • ServiceMatcher#isFromSelf,ServiceMatcher#isForSelf来路由事件
  • 判断的字段是RemoteApplicationEvent.originService和RemoteApplicationEvent.destinationService
  • 判断方式是带:分号分割的Ant路径, BusAutoConfiguration#MatcherConfiguration
  • BUS对originService的赋值来源于ApplicationContext#getId
  • contextid在启动时确定,name + index
    • ContextIdApplicationContextInitializer#getApplicationId
    • NAME_PATTERN = "{spring.application.name:{vcap.application.name:${spring.config.name:application}}}";
    • INDEX_PATTERN = "{vcap.application.instance_index:{spring.application.index:{server.port:{PORT:null}}}}";
  • 在集群部署下,每个实例可能在不同机器但是同一个端口。这时index会重复。导致EventBus判断错误。
  • 这时可以定义一个随机值 spring.application.index=${random.uuid}

技术栈

  • BUS背后是使用MQ(Rabbitmq/Kafka)来实现的,不过技术栈/概念非常多,这大致介绍下层级关系。以Rabbitmq为例
    • spring-cloud-bus
    • spring-cloud-stream
    • spring-integration
    • spring-messageing
    • spring-amqp
    • spring-rabbit
    • http-client(RabbitMq)

Refresh/Env构建于Bus基本流程之上,参考之前的文章@RefreshScope那些事

相关文章

  • Spring-cloud-bus 原理

    事件发布/接收流程 new RemoteApplicationEvent() 创建事件 applicationCo...

  • 4.《kafka》spring-cloud-bus

    一。spring-cloud-bus是什么? 回答这个问题之前,我们先回顾先前的分布式配置,当配置中心发生变化后,...

  • 华与华方法(8)传播第一原理

    传播三大原理: 第一原理:刺激反射原理 第二原理:播传原理 第三原理:信号能量原理。 一、刺激反射原理 所有传播都...

  • 大数据相关

    hadoop原理 spark原理 kafka原理 数据仓库部分 Hadoop原理 MapReduce的原理默认根据...

  • js call apply instanceof 实现原理

    call原理 apply原理 instanceof原理

  • 《影响力》读后感

    全书主要围绕六大原理开展,分别是互惠原理,承诺和一致原理,社会认同原理,喜好原理,权威原理,以及稀缺原理。全文结构...

  • Today面试

    Runloop 底层原理Kvo 底层原理ARC 底层原理 如何实现GCD 底层原理Block 底层原理Aut...

  • iOS底层原理:weak的实现原理

    iOS底层原理:weak的实现原理iOS底层原理:weak的实现原理

  • 原理原理原理

    忙碌的一天,英语还有一个小题,明天完善,明天加油背诵英语对话 ,今天个人简历也有了大体框架,明天完善一下,加油。 ...

  • uv平板打印机三种原理

    uv平板打印机原理主要包括三个方面原理,分别是打印原理、色彩原理、成像原理。其中打印原理影响了其印刷范围,...

网友评论

    本文标题:Spring-cloud-bus 原理

    本文链接:https://www.haomeiwen.com/subject/xmzwgftx.html