共计 1081 个字符,预计需要花费 3 分钟才能阅读完成。
Ribbon 负载平衡
Ribbon 与 Nginx 的区别
-
客户端负载平衡 Ribbbon:
- Ribbon 是从 Eureka 注册核心服务器上获取注册信息列表,缓存到本地, 而后在本地实现轮询负载平衡策略. 即在客户端实现负载平衡.
-
服务端负载平衡 Nginx:
- Ngnix 是客户端所有申请对立交给 Nginx, 由 Nginx 实现负载平衡申请转发, 属于服务器端负载平衡. 即申请由 Nginx 服务器端进行转发.
-
利用场景的区别:
- Nginx实用服务器端实现负载平衡:Tomcat,Jetty
-
Ribbon实用于在微服务中 RPC 近程调用实现本地负载平衡:Dubbo,SpringCloud
Ribbon 负载平衡的底层实现
-
Ribbon 负载平衡:
- 客户端从 Eureka 注册核心获取对应的注册信息列表, 获取到注册信息列表后, 缓存到本地, 而后在本地实现负载平衡. 即负载平衡是由客户端实现的.
-
负载平衡算法:
- 接口的总申请数 取模 服务器数失去理论的服务器下标 (从 0 开始) 获取到服务器调用服务
-
实现:
-
获取对应服务器的近程调用地址:DiscoveryClient
List<ServiceInstance> instances=discoveryClient.getInstance("eureka_ticket");
-
应用 rest 形式发送申请应用近程调用
String result=restTemplate.getForObject(instanceUrl,String.class);
Feign
-
-
SpringCloud 中反对两种客户端调用工具:
- Rest(RestTemplate 模板)
- Feign
-
Feign 是 申明式 Http 客户端调用工具, 采纳 接口 + 注解 形式实现, 易读性强.
Feign 客户端书写是以 SpringMVC 接口模式书写的 @FeignClient(name="服务别名") @FeignClient 调用服务接口(name: 服务名称) 在主类上标注 @EnableFeignClients 注解开启 Feign 权限
微服务项目目录构造: parent: 寄存独特的依赖信息 api-service: 所有服务的接口 ticket-service: 特定服务的接口 ticket-serviceImpl: 特定服务的实现 实体类和定义接口信息寄存在接口包里 在特定服务中的参数后面要标注 @RequestParam("xx"), 这样参数才会被接管
Feign 客户端超时工夫设置
设置 Feign 客户端超时工夫 ribbon.connectTime=5000 # 建设连贯所用工夫, 两端连贯所用工夫 ribbon.ReadTimeout=5000 # 建设连贯后, 从服务器读取可用资源所用工夫
正文完