golang 微服务的负载均衡

这篇具有很好参考价值的文章主要介绍了golang 微服务的负载均衡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上次我们说了一下 微服务的容错处理,是用的 断路器

这一次我们来一起看看 微服务的负载均衡是如何做的

负载均衡

负载均衡是什么呢?

他能够将大量的请求,根据负载均衡算法,将不同的请求分发到多台服务器上进行处理,使得所有的服务器负载都维持在一个高效稳定的状态,进而可以提高系统的吞吐量,和保证系统的可用性

例如我们的访问服务器是这样的

用户 – 网络 – 服务器 – 数据库

golang 微服务的负载均衡

那么,如果这一个服务器的请求数很高,超过了服务器能能处理的极限,自身无法及时响应的时候,则会出现异常,甚至无法连接,用户就无法得到及时的期望结果

那么我们至少可以期望服务器部署是这个样子的

golang 微服务的负载均衡

就是在服务器的前面加一个负载均衡器,这样外部请求的压力就可以又 多个服务器来分担,并且请求给到任何一个服务器,得到的响应都是一样的

那么我们一起来看看负载均衡的类型都有哪些

负载均衡的类型

负载均衡的类型有 2 类:

  • 软件负载均衡

一般是独立的负载均衡软件来实现外部请求的分发,一般这样的软件配置简单,使用成本很低,并且能够满足基本的负载均衡要求,例如 haproxy

那么这就要对重点关注在软件的质量和该软件部署在所属服务器的性能上面,若软件质量不行,或者部署的服务器性能不行,都会成为系统吞吐量的瓶颈

  • 硬件负载均衡

硬件的负载均衡,必然是依赖特殊负载均衡设备来做的,部署成本相对较高,可是对于软件的负载均衡,硬件的做法能够满足更多种场景的使用

例如常见的例子,DNS 负载均衡 和 反向代理负载均衡

DNS 负载均衡

例如在 DNS服务器中,我们会给一个同一个名称配置多个 IP,那么不同的 DNS 请求就会解析到不同的 IP 地址,进而这就可以达到 不同请求去访问不同的服务器的目的,这就是咱们的 DNS 负载均衡

反向代理负载均衡

我们平时项目中使用到的服务网关就是反向代理负载均衡

作为客户端,你是不知道你访问的这个地址是不是真正的服务器的地址,你访问了网关地址之后,网关会根据路由将你的请求发送给对应服务器去处理,最终返回结果,例如这样

golang 微服务的负载均衡

负载均衡算法

如何保证能够让每一个服务器的都能够处于高效稳定的运行呢,这就需要优秀的负载均衡算法出马了

负载均衡算法定义了如何将外部请求分散到各个服务器实例中,它能够有效的提高吞吐量

一般会有这几种算法:

  • 随机法

随机从服务器集群中任选一台。这种方法确实很简单,保证了请求的分散性,可是这种方法无法做到当前的请求分配是否合理以及不同服务器自身的负载能力

  • 轮询或者加权轮询法

就是轮流的将请求分配给集群中每一个服务器,加权的话,就是按照比例轮询的方式将请求分配给集群中的每一个服务器,如:

轮询 3 个服务器

golang 微服务的负载均衡

加权轮询 3 个服务器,若 A 占比 20%,B 占比 50 % ,C 占比 30%

golang 微服务的负载均衡

  • Hash 法或者一致性 Hash 的方式

就是使用 hash 算法将请求分散到集群中每一个服务器上面

一致性 hash 指的是,在将请求分散到每个服务器时,若其中一个服务器挂掉了,这个算法能够将请求平摊到剩下的服务器上面,这样可以避免请求剧烈的变动

  • 最小连接数方法

就是将请求分配到连接数最少的服务器上面,但是负载均衡器需要如何知道呢?

因此使用这种算法,就需要负载均衡器与服务器之前产生数据交互,这样它在可以了解集群中服务器的连接数情况

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

golang 微服务的负载均衡

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~文章来源地址https://www.toymoban.com/news/detail-450152.html

到了这里,关于golang 微服务的负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ribbon 负载均衡服务调用

    想要学习完整SpringCloud架构可跳转 : SpringCloud Alibaba微服务分布式架构 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套 客户端负载均衡 的工具。 Ribbon是Netflix发布的开源项目,主要功能是提供 客户端的软件负载均衡算法和服务调用。 Ribbon客户端组件提供一系列完善的配置项如连

    2024年02月16日
    浏览(26)
  • 微服务之负载均衡

    Informal Essay By English I wish the students of the college entrance examination can win the gold toad and win the title of the gold list 参考书籍:“凤凰架构” 负载均衡(load balance) 负载平衡是指在一组后端服务器(也称为服务器场或服务器池)之间有效地分配传入的网络流量 现代高流量网站必须以快

    2024年02月10日
    浏览(34)
  • Nacos服务治理—负载均衡

    在消费方引入负载均衡机制,同时简化获取服务提供者信息的流程 Spring Cloud引入组件LoadBalance实现负载均衡 添加依赖 properties配置 主类上添加对应的注解 定义对应的控制器,需要访问服务提供者 验证测试 缓存配置 使用LB从Nacos获取服务的注册信息,可以在本地进行缓存。添

    2024年02月13日
    浏览(27)
  • 微服务负载均衡实践

    目录 概述 环境说明 步骤 改造Eureka为单节点 spring-cloud-loadbalancer 服务调用 负载均衡 OpenFeign OpenFeign的使用 OpenFeign的配置 总结   本文介绍微服务的服务调用和负载均衡,使用spring cloud的loadbalancer及openfeign两种技术来实现。 本文的操作是在微服务的初步使用的基础上进行。

    2024年02月07日
    浏览(25)
  • 微服务-Ribbon(负载均衡)

    负载均衡的面对多个相同的服务的时候,我们选择一定的策略去选择一个服务进行 RoundRobinRule:简单的轮询服务列表来选择服务器 AvailabilityFilteringRule 对两种情况服务器进行忽略: 1.在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路状态”,短路状

    2024年02月12日
    浏览(26)
  • 微服务之LoadBalancer负载均衡服务调用

    LB,既负载均衡(Load Balancer),是高并发、高可用系统必不可少的关键组件,其目标是尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。 负载均衡的主要作用 高并发 :负载均衡通过算法调整负载,尽力均匀的分配应用集群中的各结点的工作量。

    2024年04月15日
    浏览(47)
  • 微服务篇之负载均衡

            1. RoundRobinRule: 简单轮询服务列表来选择服务器。         2. WeightedResponseTimeRule: 按照权重来选择服务器,响应时间越长,权重越小。         3. RandomRule: 随机选择一个可用的服务器。         4. BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务

    2024年02月21日
    浏览(20)
  • 微服务之负载均衡使用场景

    在如见常见微服务系统中,负载均衡组件是一种将流量分配到多个服务的技术,目的是提高系统的性能和可用性。负载均衡有两种常见的模式:服务端模式和客户端模式。服务端模式使用独立的应用程序(如 Nginx)来转发请求,客户端模式使用类库(如 Ribbon、Spring Cloud Load

    2024年02月06日
    浏览(21)
  • 微服务中的负载均衡

    如图 有三处需要负载均衡 这里主要讲内部的grpc调用的 负载均衡  图中3的地方  首选第二种方式           

    2024年02月11日
    浏览(30)
  • 微服务Ribbon-负载均衡原理

    目录 一、LoadBalancerIntercepor 二、LoadBalancerClient 三、负载均衡策略IRule 四、总结 上一篇中,我们添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢? SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://user

    2024年02月13日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包