当前位置: 首页 > news >正文

求合伙人做网站/下载百度到桌面上

求合伙人做网站,下载百度到桌面上,最新获取网站访客qq接口,电脑网站设计公司一、什么是Spring Cloud Ribbon? Spring Cloud Ribbon 是Spring Cloud Netflix 子项目的核心组件之一,主要给服务间调用及API网关转发提供负载均衡的功能。在微服务架构中,很多服务都会部署多个,其他服务去调用该服务的时候&…

一、什么是Spring Cloud Ribbon?

  • Spring Cloud Ribbon 是Spring Cloud Netflix 子项目的核心组件之一,主要给服务间调用及API网关转发提供负载均衡的功能。
  • 在微服务架构中,很多服务都会部署多个,其他服务去调用该服务的时候,如何保证负载均衡是个不得不去考虑的问题。负载均衡可以增加系统的可用性和扩展性,当我们使用RestTemplate来调用其他服务时,Ribbon可以很方便的实现负载均衡功能。
  • Ribbon 的客户端组件提供一系列完整的配置项如:连接超时、重试等等。简单的说,就是在配置文件中列出LoadBalancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算。
  • 负载均衡简单分类:
    • 集中式LB:即在服务的消费方和提供方之间使用独立的LB设施,如反向代理服务器,由该设施负责把访问请求通过某种策略转发至服务的提供方。
    • 进程式LB:将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选出一个合适的服务器。
  • Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

二、案例演示

  • 添加依赖

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>2.2.0.RELEASE</version>
    </dependency>
    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId><version>2.2.0.RELEASE</version>
    </dependency>
    
  • 添加配置

    启动类

    @SpringBootApplication
    @EnableEurekaClient
    public class RibbonClientApplication {public static void main(String[] args) {SpringApplication.run(RibbonClientApplication.class, args);}
    }
    

    自定义配置类

    @Configuration
    public class MyConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
    }
    

    application.yml文件

    server:port: 8080servlet:context-path: /spring:application:name: ribbon-clienteureka:client:register-with-eureka: falsefetch-registry: trueservice-url:defaultZone: http://localhost:8010/eureka# 服务访问地址
    user-service-url: http://ribbon-service/
    
  • 测试使用

    • 编写控制器类

      @RestController
      public class UserController {@Autowiredprivate RestTemplate restTemplate;@Value("${user-service-url}")private static String SERVICE_URL;@GetMapping("/get/{id}")public Map<String, Object> getUser(@PathVariable Long id){Map result = restTemplate.getForObject(SERVICE_URL + "get/" + id, Map.class);return result;}@GetMapping("/add")public Map<String, Object> addUser(User user){Map result = restTemplate.postForObject(SERVICE_URL + "add", user, Map.class);return result;}
      }
      
    • 访问

      访问:http://localhost:8010/
      

      在这里插入图片描述

      访问:http://localhost:8080/get/1
      

      发现Ribbon默认采用轮询算法依次在每一个服务方进行访问

三、负载均衡策略

  • 已定义的策略

    Ribbon默认使用的是轮询算法

    • com.netflix.loadbalancer.RandomRule

      从提供服务的实例中以随机的方式;

    • com.netflix.loadbalancer.RoundRobinRule

      以线性轮询的方式,就是维护一个计数器,从提供服务的实例中按顺序选取,第一次选第一个,第二次选第二个,以此类推,到最后一个以后再从头来过;

    • com.netflix.loadbalancer.RetryRule

      在RoundRobinRule的基础上添加重试机制,即在指定的重试时间内,反复使用线性轮询策略来选择可用实例;

    • com.netflix.loadbalancer.WeightedResponseTimeRule

      对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择;

    • com.netflix.loadbalancer.BestAvailableRule

      选择并发较小的实例;

    • com.netflix.loadbalancer.AvailabilityFilteringRule

      先过滤掉故障实例,再选择并发较小的实例;

    • com.netflix.loadbalancer.ZoneAwareLoadBalancer

      采用双重过滤,同时过滤不是同一区域的实例和故障实例,选择并发较小的实例。

  • 自定义均衡策略

    • 启动类添加注解

      @SpringBootApplication
      @EnableEurekaClient
      @RibbonClient(name = "ribbon-service", configuration = RuleConfig.class)
      public class RibbonClientApplication {public static void main(String[] args) {SpringApplication.run(RibbonClientApplication.class, args);}
      }
      
    • 自定义配置类

      public class MyRule extends AbstractLoadBalancerRule {public MyRule() {}private int total = 1;private int current = 0;@SuppressWarnings({"RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE"})public Server choose(ILoadBalancer lb, Object key) {if (lb == null) {return null;} else {Server server = null;while(server == null) {if (Thread.interrupted()) {return null;}List<Server> upList = lb.getReachableServers();List<Server> allList = lb.getAllServers();int serverCount = allList.size();if (serverCount == 0) {return null;}//-******************************if(total <= 3){server = upList.get(current);total++;}else{total = 1;current += 1;if(current > upList.size()-1){current = 0;}server = upList.get(current);}//-******************************if (server == null) {Thread.yield();} else {if (server.isAlive()) {return server;}server = null;Thread.yield();}}return server;}}protected int chooseRandomInt(int serverCount) {return ThreadLocalRandom.current().nextInt(serverCount);}public Server choose(Object key) {return this.choose(this.getLoadBalancer(), key);}public void initWithNiwsConfig(IClientConfig clientConfig) {}
      }
      
      @Configuration
      public class RuleConfig {@Beanpublic IRule myRule(){return new MyRule();}
      }
      

五、常用配置

  • 全局配置

    ribbon:ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)ReadTimeout: 3000 #服务请求处理超时时间(毫秒)OkToRetryOnAllOperations: true #对超时请求启用重试机制MaxAutoRetriesNextServer: 1 #切换重试实例的最大个数MaxAutoRetries: 1 # 切换实例后重试最大次数NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #修改负载均衡算法
    
  • 局部配置

    user-service:ribbon:ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)ReadTimeout: 3000 #服务请求处理超时时间(毫秒)OkToRetryOnAllOperations: true #对超时请求启用重试机制MaxAutoRetriesNextServer: 1 #切换重试实例的最大个数MaxAutoRetries: 1 # 切换实例后重试最大次数NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #修改负载均衡算法
    

【源码地址】:GitHub

http://www.lbrq.cn/news/1083655.html

相关文章:

  • 网站制作公司 云南/刷钻业务推广网站
  • 做网站广告的点/网络推广公司简介
  • 网站模板下载大全/网站收录一键提交
  • 三门峡做网站/成都网站推广
  • 深圳本地网站建设/今日热点新闻
  • 网站建设煊煊网/济南seo官网优化
  • 网站型销售怎么做/新闻热点最新事件
  • 滕州网站建设培训/新闻 近期大事件
  • 开发公司副总求职简历/sem优化推广
  • 河北省建设厅网站站长/株洲今日头条新闻
  • 网上商城网站建设/深圳新闻最新事件
  • 网站如何设置默认首页/友情链接交易平台源码
  • 营销的网站/万网创始人
  • 周口网站制作/关键词有哪些
  • 做网站建设的联系电话/太原seo
  • 江门外贸网站建设/产品如何做网络推广
  • 淘宝客可以自己做网站推广吗/代发百度帖子包收录排名
  • 校园网站制作模板/nba最新消息新闻报道
  • 商学院网站建设建议/网络营销与传统营销有哪些区别
  • 网站怎么做跳转安全/公司营销网站建设
  • 新公司刚成立做网站/常用的网络营销平台有哪些
  • 杭州的网站建设公司哪家好/成都今天重大新闻事件
  • 广州网站制作技术/制作网站的最大公司
  • 做环境设计的网站/什么叫软文推广
  • 59网站一起做网店/腾讯企点app下载安装
  • 东莞做网站排名优化推广/广州网站建设正规公司
  • 苏州知名网站制作/seo综合检测
  • 西安做网站培训/企业网站快速排名
  • dreamweaver 网站导航/南京seo网站优化
  • 在centos上做网站/重庆网站制作公司
  • k8s搭建nfs共享存储
  • Apache Ignite 的分布式原子类型(Atomic Types)
  • FastGPT本地构建工作流高级编排(最新4.11.0)
  • 【Linux系统】Ext2文件系统 | 软硬链接
  • 力扣988. 从叶结点开始的最小字符串
  • logstash采集springboot微服务日志