可扩展性介绍

  可扩展性的定义是在增加资源以处理负载和增加容量时系统能够获得的投资产出率。

  所谓的可扩展性并不是线性的可扩展性,而是受多种因素影响的曲线性可扩展。受影响的因素包括:1、无法并行执行的部分工作和需要交互的另外一部分工作。2、内部节点或进程间的通信。

负载均衡有两种基本的工作方式:一种是基于查询方式请求服务器的应用。2、另一种是基于中间层分析查询并分发到指定的服务器。

代理分发

java配置mysql负载均衡 mysql负载均衡原理_java配置mysql负载均衡

中间层分析和分布查询的不足:

  1、分析查询需要耗费一定的资源,因为在客户端发出请求后,需要进行解析,将解析后的请求分发到指定的数据库服务器。

  2、无法实现非常准确的查询分析。

按功能拆分

  为了能够比较准确的查询出数据所在的服务器,并实现快速查询,现在需要一个中心数据存储,该中心保存着数据库服务器与所能够查询类型的对应关系,在进行真正查询之前,通过这个共享中心获取所查询服务器的ip和端口号。如下图:

  

java配置mysql负载均衡 mysql负载均衡原理_服务器_02

  在数据中心中的数据库表的具体格式如下:

  

create table nodes(
  host char(28) not null,
  port int usinged not null,
  sock char(64) not null,
  type set ('read','write') not null default '',
  primary key (host,pport)
  );

  在进行数据库的更新数据时,通过查询nodes表中type为write的服务器ip和port来连接指定数据库进行数据更新。当进行数据查询时,可以随机的查询type类型为read的一台记录,获取到服务器的ip和port进行数据查询。