周一福利:微服务核心技术实现原理

本文详细剖析了Spring Cloud的配置管理、服务发现和负载均衡的实现原理,包括配置管理如何利用RabbitMQ进行在线更新,服务发现通过Eureka进行服务注册和获取,以及Ribbon的负载均衡机制。此外,还通过实例演示了RabbitMQ的分布式消息分发。Spring Cloud简化了微服务的复杂性,提供了强大的功能。
摘要由CSDN通过智能技术生成

Spring Cloud是基于对Netflix开源组件进一步封装的一套云应用开发工具,可以用来开发各种微服务应用,它包含很多组件(或子项目),表12-1列出了一些主要组件及其功能说明。

 

 

在第8章的实例工程中已经使用了其中的配置管理、发现服务、监控服务、动态路由、断路器、负载均衡等功能。本章将从实现的角度探索配置管理、发现服务和负载均衡服务等的实现原理。

1配置管理实现原理

在第8章的实例中,我们知道,配置管理的在线更新功能使用事件总线,即spring-cloud-bus来发布状态变化,并且使用分布式消息来发布更新事件,而分布式消息最终使用了RabbitMQ来实现消息收发。

1.1在线更新流程

使用配置管理,实现在线更新一般遵循下列步骤:

1)更新Git仓库的配置文件。

2)以POST指令触发更新请求

3)配置管理服务器从Git仓库中读取配置文件,并将配置文件分发给各个客户端,同时在RabbitMQ中发布一个更新消息。

4)客户端订阅RabbitMQ消息,收到消息后执行更新。

在使用配置管理的演示实例中,使用如下POST指令来触发在线更新:curl -x POST http:l/localhost :8888/ bus/refresh

接收这个更新指令的实现方法如代码清单12-1所示,其中的publish将会发布一个更新事件,调用RabbitMQ进行消息发布,然后由客户端收到消息后执行更新。代码中定义了请求更新的链接refresh,并可使用destination来指定更新目标。

 

1.2更新消息的分发原理

配置管理服务器中的消息分发是从spring-cloud-bus 中调用spring-cloud-stream组件来实现的,而spring-cloud-stream使用RabbitMQ实现了分布式消息的分发。

RabbitMQ的消息服务一般需要创建一个交换机Exchange和一个队列Queue,然后将交换机和队列进行绑定。而在设计配置服务器时并没有做这方面的工作,所做的工作仅仅是配置引用spring-cloud-bus 的依赖和设置连接RabbitMQ服务器的参数而已。这个工作其实已经由spring-cloud-stream帮我们实现了。

从RabbitMessageChannelBinder 的源代码中可以看到这部分的实现原理,代码清单12-2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值