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

常州网站建设服务二百块做网站

常州网站建设服务,二百块做网站,wordpress apache配置,wordpress中文论坛服务负载均衡Ribbon Ribbon 介绍Ribbon 案例Ribbon 负载均衡策略Ribbon 负载均衡算法设置自定义负载均衡算法 Ribbon 介绍 Ribbon 是一个的客服端负载均衡工具#xff0c;它是基于 Netflix Ribbon 实现的。它不像 Spring Cloud 服务注册中心、配置中心、API 网关那样独立部署… 服务负载均衡Ribbon Ribbon 介绍Ribbon 案例Ribbon 负载均衡策略Ribbon 负载均衡算法设置自定义负载均衡算法 Ribbon 介绍 Ribbon 是一个的客服端负载均衡工具它是基于 Netflix Ribbon 实现的。它不像 Spring Cloud 服务注册中心、配置中心、API 网关那样独立部署但是它几乎存在于每个 Spring Cloud 微服务中。它内部提供了一个叫做ILoadBalance的接口代表负载均衡器的操作比如有添加服务器操作、选择服务器操作、获取所有的服务器列表、获取可用的服务器列表等。 客户端的负载均衡在客户端发起远程调用的时候进行负载均衡客户端会有一个服务器地址列表在发送请求前通过负载均衡算法选择一个服务器然后进行访问这就是客户端负载均衡即在客户端就进行负载均衡算法分配。Ribbon就是一个客户端的负载均衡工具。 服务端的负载均衡客户端发起远程调用到服务器服务器根据服务列表使用负载均衡算法选择一个远程服务进行调用。nginx 就可以实现服务器负载均衡客户端所有请求都会交给nginx然后由nginx实现转发请求。即负载均衡是由服务端实现的需要在nginx配置所有的服务提供者信息。 Ribbon 负载均衡流程 客户端发起请求请求会被Ribbon拦截Ribbon会去注册中心读取请求的服务列表会将获取注册信息服务列表之后缓存到本地根据返回的服务列表进行负载均衡选择一个服务去进行调用。 Ribbon 案例 在服务消费者添加 Ribbon 依赖如果已经引入了 spring-cloud-starter-netflix-eureka-client 依赖就不需要添加Ribbon的依赖了在eureka-client已经添加了Ribbon的依赖。 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-ribbon/artifactId /dependency微服务之间的通信方式常见的方式有两种RPCdubboHTTPSpringCloud 在SpringCloud中默认是使用 http 来进行微服务的通信最常用的实现形式有两种RestTemplate和OpenFeign。这里使用RestTemplate进行远程调用。 RestTemplate 需要手动创建 RestTemplate bean并且使用该bean进行http请求。 在使用 RestTemplate 进行 Eureka Client 之间的通信为 RestTemplate 配置类添加LoadBalanced注解即可开启Ribbon的负载均衡 Bean LoadBalanced public RestTemplate restTemplate() {return new RestTemplate(); }服务提供者配置需要向注册中心注册多个相同的服务使用Ribbon进行负载均衡进行选择。 服务提供者1配置 添加依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId /dependency配置文件 server:port: 8001 spring:application:#该名称在集群模式下应该保持一致name: provider eureka:client:#设置服务注册中心地址service-url:defaultZone: http://localhost:1000/eureka/ #定义服务中心的地址服务提供者2配置 添加依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId /dependency配置文件 server:port: 8002 spring:application:#该名称在集群模式下应该保持一致name: provider eureka:client:#设置服务注册中心地址service-url:defaultZone: http://localhost:1000/eureka/ #定义服务中心的地址服务提供者1和服务提供者2服务名称必须相同。不同会当作两个不同的服务。 服务消费者进行调用在调用的时候使用服务提供者的服务名称会根据名称到 Eureka 中获取服务列表当有多个相同的服务时使用Ribbon做负载均衡选择其中一个进行调用。 Autowired private RestTemplate restTemplate; public Order queryOrderById(Long orderId) {// 1.查询订单Order order orderMapper.findById(orderId);// 2.利用RestTemplate发起http请求查询用户// 2.1.url路径String url http://provider/user/ order.getUserId();// 2.2.发送http请求实现远程调用User user restTemplate.getForObject(url, User.class);// 3.封装user到Orderorder.setUser(user);// 4.返回return order; }Ribbon 负载均衡策略 RoundRobinRule默认使用简单轮询。 WeightedResponseTimeRule设置权重权重越大越容易被访问越小越不容易被访问。 RandomRule随机选择一个可用的服务。 RetryRule轮询的增强版轮询策略服务不可用时不做处理重试策略服务不可用时会重新尝试集群中的其他节点。 BestAvailableRule选择正在请求中的并发数最小的服务除非这个服务在熔断中。 AvailabilityFilteringRule忽略高并发和短路。过滤掉并发数高的过滤掉连接失败的。 ZoneAvoidanceRule以一个区域为单位考察可用性对于不可用的区域整个丢弃从剩下区域中选可用的 provider。如果这个 ip 区域内有一个或多个实例不可达或响应变慢都会降低该 ip 区域内其他 ip 被选中的权重。 Ribbon 负载均衡算法设置 全局替换在启动类或配置类注入策略类对象在所有的服务请求中均使用该策略。 注入随机策略类在所有的服务进行远程调用的时候将会采用随机的负载均衡策略。 Bean public IRule randomRule() {return new RandomRule(); }局部替换为每一个服务定义不同的负载均衡策略。修改配置文件。 对 userservice 服务设置负载均衡策略。 # 负载均衡策略 # userservice 为调用的服务的名称 userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule# 负载均衡规则 自定义负载均衡算法 Ribbon的负载均衡规则是一个叫做IRule的接口来定义的每一个子接口都是一种规则。 想要实现自定义负载均衡规则只需要编写一个类继承AbstractLoadBalancerRule。 IRule 接口 AbstractLoadBalancerRule对setLoadBalaner 方法和getLoadBalancer 方法进行了实现。把获取到的值进行赋值保存方便的子类的使用这两个方法可以看作是获取服务中心的服务信息。 自定义负载均衡算法需要继承IRule的抽象实现类AbstractLoadBalancerRule可以写一个类去实现它然后在 Server choose(Object key) 里面设置规则。 自定义一个轮询的策略类。 public class MyRoundRobinRule extends AbstractLoadBalancerRule {//定义一个原子类以保证原子性private AtomicInteger atomicInteger new AtomicInteger(0);Overridepublic void initWithNiwsConfig(IClientConfig iClientConfig) {}// lb 服务列表public Server choose(ILoadBalancer lb, Object key) {if (lb null){return null;}//用于统计获取次数当达到一定数量就不再去尝试int count 0;Server server null;//当服务还没获取到并且尝试没有超过8次while (server null count 8){//获取服务ListServer allServers lb.getAllServers();ListServer reachableServers lb.getReachableServers();int allServersSize allServers.size();int reachableServersSize reachableServers.size();//如果获取的服务list都为0就返回nullif(allServersSize 0 || reachableServersSize 0){return null;}//获取服务下标int next getServerIndex(allServersSize);//获取服务server reachableServers.get(next);//如果服务为空直接跳过下面的if (server null){continue;}//如果获取到的这个服务是活着的就返回if (server.isAlive()){return server;}//如果获取到的服务不是空但是不是存活状态需要重新获取server null;}//最后这里可能会返回nullreturn server;}//获取服务下标为了保证原子性使用了CASpublic int getServerIndex(int allServersSize){//自旋锁for (;;) {//获取当前值int current this.atomicInteger.get();//设置期望值int next (current 1) % allServersSize;//调用Native方法compareAndSet执行CAS操作if (this.atomicInteger.compareAndSet(current, next))//成功后才会返回期望值否则无线循环return next;}}Overridepublic Server choose(Object key) {return choose(getLoadBalancer(),key);} }在配置类中注入写好的自定义策略类注意使用这种方式为全局替换。 Bean public IRule randomRule() {return new MyRoundRobinRule(); }也可以使用局部替换在配置文件中进行设置。 # 负载均衡策略 # userservice 为调用的服务的名称 userservice:ribbon:NFLoadBalancerRuleClassName: com.springcloud.rule.MyRoundRobinRule #负载均衡规则
http://www.dnsts.com.cn/news/109935.html

相关文章:

  • 免费网站加速器网站如何添加代码
  • 林业厅网站建设方案山西省住房建设厅网站
  • 云南建设网站澜沧项目forceful wordpress
  • 跨境电商网站建设流程图网站建设团队定制
  • 网站怎么做数据分析做网站用什么压缩代码和图片
  • 电子商务网站 备案网站建设的流程范文1500字
  • 可视化网站后台seo 百度网盘
  • 畜牧养殖企业网站源码上海恒鑫网站建设
  • 国外开源 企业网站吉林哪里做网站
  • 一家网站建设公司需要什么资质wordpress加一个字段
  • 沧州企业网站沈阳高端网站制作公司
  • 网站建设市场行情分析传奇小程序代理
  • 上海微信网站建设兼容网站做英文网站怎么赚钱
  • 加强人社网站建设阿里云 企业网站选哪种
  • 泉州网站建设设计电商网站建设与运营实训
  • 宝安中心站wordpress导出主题
  • 软件公司网站素材网站建设国外拂去其
  • 做个网站多少钱找谁做怎么在悉尼做网站
  • 邵阳竞价网站建设设计网络推广项目代理
  • 贵阳企业网站建设百度地图关键词排名优化
  • 图书馆网站建设情况说明模板网站多钱
  • 长安响应式网站建设互动网站的核心技术
  • 网站后台组成网站建设发布教程视频
  • 开发大型网站的流程做网站做什么公司好
  • vs做网站应该新建什么编程入门先学什么好
  • 农业网站建设方案 ppt模板快站app官网下载
  • 中国网站建设排名许昌网页制作
  • 文献综述 php网站开发怎么推广自己的网站?
  • 杂志网站建设响应式网站建设案例
  • 专业做视频的网站注册城乡规划师成绩查询2022