本文概述
- Netflix功能区
- 色带功能
- 模组
- 负载均衡的类型
- 使用功能区运行客户端负载平衡
功能区主要提供客户端负载平衡算法。它是客户端负载平衡器, 可控制HTTP和TCP客户端的行为。重要的一点是, 当我们使用Feign时, Ribbon也适用。
色带功能
- 负载均衡
- 容错能力
- 异步模型中的多协议支持
- 缓存和批处理
- 功能区:这是一个API, 集成了负载平衡, 容错, 缓存和
- ribbon-loadbalancer:这是一个负载均衡器API, 可以单独使用或与其他模块一起使用。
- 功能区eureka:它使用Eureka客户端, 该客户端为Spring Cloud提供动态服务器列表。
- Ribbon-transport:它是支持HTTP, TCP和UDP的传输客户端。这些协议使用具有负载平衡功能的RxNetty。
- Ribbon-httpclient:这是一个与负载平衡器集成在Apache HttpClient之上的REST客户端。
- ribbon-core:这是一个客户端配置API。
- 服务器端负载平衡:服务器端负载平衡是一个整体, 适用于客户端和服务器之间。它接受传入的网络, 应用程序流量, 并使用各种方法在多个后端服务器之间分配流量。中间组件负责将客户端请求分发到服务器。
- 客户端负载平衡:客户端保留服务器IP列表, 以便它可以传递请求。客户端从列表中随机选择一个IP, 然后将请求转发到服务器。
步骤1:转到项目” 货币转换服务” 。
步骤2:打开pom.xml文件并添加功能区依赖项。
<
dependency>
<
groupId>
org.springframework.cloud<
/groupId>
<
artifactId>
spring-cloud-starter-netflix-ribbon<
/artifactId>
<
/dependency>
添加依赖项后, 我们需要在代理上启用功能区。
步骤3:打开CurrencyExchangeServiceProxy.java文件。通过添加注释@RibbonClient来启用Ribbon, 并指定我们要与之交谈的服务的名称。功能区客户端为客户端提供声明式配置。
@RibbonClient(name="currency-exchange-service")
【Spring Cloud使用Ribbon实现客户端负载平衡】CurrencyExchangeServiceProxy.java
package com.srcmini.microservices.currencyconversionservice;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
//@FeignClient(name="currency-exchange-service", url="localhost:8000")//Enabling feign@FeignClient(name="currency-exchange-service")//enabling ribbon@RibbonClient(name="currency-exchange-service")public interface CurrencyExchangeServiceProxy {@GetMapping("/currency-exchange/from/{from}/to/{to}")//where {from} and {to} are path variablepublic CurrencyConversionBean retrieveExchangeValue(@PathVariable("from") String from, @PathVariable("to") String to);
//from map to USD and to map to INR}
步骤4:在注释@FeignClient中, 删除属性URL。因为我们不需要与一种特定的服务进行交谈。我们将在application.properties文件中配置该URL。
步骤5:打开项目currency-conversion-service的application.properties文件并配置服务器。我们必须配置的属性是:
name-of-the-application.ribbon.listOfServers=URLs
我们已经配置了我们要调用的两个currency-exchange-service实例。
currency-exchange-service.ribbon.listOfServers=http://localhost:8000, http://localhost:8001
application.properties
spring.application.name=currency-conversion-serviceserver.port=8100currency-exchange-service.ribbon.listOfServers=http://localhost:8000, http://localhost:8001
使用功能区运行客户端负载平衡 我们有两个CurrentExchangeExchangeApplication.java实例, 如下图所示:
文章图片
首先, 在端口8000上运行CurrencyExchangeServiceApplication, 然后在端口8001上运行CurrencyExchangeServiceApplication。
在两个端口上运行CurrencyExchangeServiceApplication之后, 通过发送请求http:// localhost:8100 / currency-converter-feign / from / EUR / to / INR / quantity / 10000, 运行CurrencyConversionServiceApplication.java。它返回以下响应。
文章图片
在上图中, 端口8000表示货币兑换服务正在端口8000上运行并正在处理当前请求。
现在, 刷新页面。除了端口号和数量外, 我们得到了相同的响应, 因为我们已更改了请求中的数量。
文章图片
在上图中, 端口8001表示货币兑换服务正在端口8001上运行并正在处理当前请求。
让我们通过一个图来了解负载均衡:
文章图片
在上图中, Ribbon在三个活动的CurrencyExchangeServices之间分配负载。 CurrencyExchangeService1在端口8000上运行, CurrencyExchangeService2在端口8001上运行, 依此类推。因此, 使用Ribbon通过CurrencyCalculationService进行的任何调用都将分配给这三个服务。
点击这里下载货币兑换服务
点击这里下载货币兑换服务
推荐阅读
- Spring Cloud Config Server连接到本地Git存储库
- Spring Cloud微服务的优势是什么()
- 微服务架构有什么挑战()
- Spring、Spring Boot与Spring MVC之间有什么区别()
- Spring Boot使用模板引擎Thymeleaf实例
- Android 寮€婧愭鏋?( 涓?) 浜嬩欢鎬荤嚎---EventBus
- POJ - 3321 Apple Tree(树状数组)
- spring boot 无法读取application.properties问题
- Android padding 和margin