SpringCloud之负载均衡
Ribbon负载均衡
Ribbon与Nginx的区别
Ribbon负载均衡的底层实现
Feign
Feign客户端超时时间设置
Ribbon负载均衡Ribbon与Nginx的区别
客户端负载均衡Ribbbon:Ribbon是从Eureka注册中心服务器上获取注册信息列表,缓存到本地, 然后在本地实现轮询负载均衡策略.即在客户端实现负载均衡.
服务端负载均衡Nginx:Ngnix是客户端所有请求统一交给Nginx,由Nginx实现负载均衡请求转发,属于服务器端负载均衡.即请求由Nginx服务器端进行转发.应用场景的区别:Nginx适用服务器端实现负载均衡:Tomcat,JettyRibbon适用于在微服务中RPC远程调用实现本地负载均衡:Dubbo,SpringCloud
Ribbon负载均衡的底层实现
Ribbon负载均衡:客户端从Eureka注册中心获取对应的注册信息列表,获取到注册信息列表后,缓存到本地,然后在本地实现负载均衡.即负载均衡是由客户端实现的.
负载均衡算法:接口的总请求数取模服务器数得到实际的服务器下标(从0开始)获取到服务器调用服务
实现:获取对应服务器的远程调用地址:DiscoveryClientList 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# 建立连接后,从服务器读取可用资源所用时间
领取专属 10元无门槛券
私享最新 技术干货