前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​dubbo 负载均衡

​dubbo 负载均衡

原创
作者头像
mySoul
修改2020-06-17 10:12:00
6180
修改2020-06-17 10:12:00
举报
文章被收录于专栏:mySoul

这一节开始负载均衡

首先是思维导图

image.png
image.png

前置知识

学习负载均衡需要一些前置知识,这里进行前置知识的学习

一些概念

负载均衡

负载均衡是一种计算机的技术,用来在多个计算机集群、网络连接、CPU、磁碟驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载平衡的多个伺服器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。 主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发高可用的问题。

通俗的解释就是将一台服务器,变成多台服务器,进行流量的分发。

集群容错

对于分布式系统而言,当一台服务器出现故障,其他服务器可以得到通知,并对这台服务器进行容错处理,防着整个集群的塌陷。

服务路由

因特网在传送信息过程中,需要一台信息传送到目的地,中间经历的过程称为路由,对服务的客户端和服务端进行路由化处理,为以后的负载均衡做准备,这里称为服务路由。

健康检查

通过每隔一段时间,对后方的服务器发起访问请求,此称为健康检查。如出现挂掉的问题,直接抛出。

计算机知识体系

这里对应于计算机的知识体系,首先对应于网络的基础知识。

七层模型

OSI七层模型分为,物理层,数据链路层,网络层,传输层,会话层,表达层,应用层。

这里传输数据的时候,传输的顺序为应用层,表达层,会话层,传输层,网络层,数据链路层,物理层,物理层,数据链路层,网络层,传输层,会话层,表达层,应用层。

网络中的负载均衡

这里体现在路由上,通过配置路由器,实现一台路由接入多个WLAN。即利用多个网络设备通道均衡分担流量

image.png
image.png

上图为通过路由器实现负载均衡。

F5,Nginx 等负载均衡

Nginx,分为四层负载均衡,通过,四层负载均衡,即Nginx Proxy 实现负载均衡的处理。

image.png
image.png

通过F5硬件设备,实现VIP,通过VIP实现动态的负载均衡。

image.png
image.png

流程如下:

1.客户发出服务请求到VIP 

2.BIGIP接收到请求,将数据包中目的IP地址改为选中的后台服务器IP地址,然后将数据包发出到后台选定的服务器 

3.后台服务器收到后,将应答包按照其路由发回到BIGIP 

4.BIGIP收到应答包后将其中的源地址改回成VIP的地址,发回客户端,由此就完成了一个标准的服务器负载平衡的流程。

详解负载均衡

负载均衡为高可用架构的核心组件,用来提高性能,和高可用性,通过负载均衡流量分发到多台服务器,多台服务器消除单点故障。

对于单体网站架构如图所示

image.png
image.png

在这个例子里面,用户直接通过XXXXX.com连接Web Server,如果这一个Web Server挂了那么整个系统都无法使用,也就是我们常说的系统中的单点故障,同样如果大量的用户同时访问这一台服务器,那么这些用户很可能会遇到加载时间缓慢或者根本无法连接的问题。

这部分的单点故障可以通过引入负载均衡器和至少另一个Web Server来缓解。一般来说所有后端服务器会提供相同的内容,以便用户无论访问哪个服务器都会收到一致的内容。同时由于有多台服务器同时提供服务,也加大了系统的负载能力提高了性能。

负债均衡算法

负载均衡算法用于确定流量应该被分发到哪一个健康的服务器上,常见的几个算法如下:

Round Robin — 轮转(Round Robin)意味着服务器会被按顺序地选择,比如负载均衡器会将第一个请求分配给第一个服务器,然后下一个请求分配给第二个服务器,这样分配下去分配完一轮之后回到开头分配给第一个服务器(操作系统调度算法复习一下)。这种方式比较适合各服务器处理能力相同而且每个业务处理量差不多的时候。

Least Connections — 最少连接(Least Connections)这个算法意味着负载均衡器会选择当前连接最少的服务器。

IP hash — 在这个算法下,负载均衡器根据请求源的IP来决定分发给哪个服务器。这个方法保证了一个特定的用户会一直访问相同的服务器。

其他还有一些不算太常见的算法,比如Url hash、Random等。

双机热备

负债均衡器本身就是一个隐患,使用双机热备的方式进行解决。提高其冗余性。

image.png
image.png

例如上图中的Gif,采用VIP + 双机热备的方式实现负载均衡器。

实践操作

这里讲解XML配置方式,YML配置,注解配置以及dubbo-admin配置。

上一篇,HelloWorld已经创建一个服务端,和客户端。使用的是yml配置。这里三种都说明一下。

这里配置统统以轮询为例。

服务端

XML配置

代码语言:txt
复制
<dubbo:service interface="..." loadbalance="roundrobin" />

yml 配置

代码语言:txt
复制
dubbo:
  provider:
    loadbalance: roundrobin

基于注解

代码语言:txt
复制
@Service(version = "${product.service.version}",loadbalance="roundrobin")
public class ProductServiceImpl implements ProductService {
    @Override
    public String helloDubbo() {
        return "hello,spring-boot dubbo";
    }
}

客户端

这里进行客户端的配置

XML配置

代码语言:txt
复制
<dubbo:reference interface="..." loadbalance="roundrobin" />

yml配置

代码语言:txt
复制
dubbo:
  consumer:
    loadbalance: roundrobin

基于注解

代码语言:txt
复制
@RestController
public class ProductController {
 
    @Reference(version = "${product.service.version}",loadbalance="roundrobin")
    private ProductService productService;
 
    @RequestMapping(value = "test")
    public String test() {
        return productService.helloDubbo();
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前置知识
    • 一些概念
      • 负载均衡
      • 集群容错
      • 服务路由
      • 健康检查
    • 计算机知识体系
      • 七层模型
      • 网络中的负载均衡
      • F5,Nginx 等负载均衡
  • 详解负载均衡
    • 负债均衡算法
      • 双机热备
      • 实践操作
        • 服务端
          • XML配置
          • yml 配置
          • 基于注解
        • 客户端
          • XML配置
          • yml配置
          • 基于注解
      相关产品与服务
      负载均衡
      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档