加入收藏 | 设为首页 | 会员中心 | 我要投稿 阳江站长网 (https://www.0662zz.cn/)- 办公协同、云通信、区块链、物联平台、高性能计算!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

这12个关于软件测试的误解

发布时间:2021-01-27 13:06:08 所属栏目:传媒 来源:互联网
导读:如上图,从一个大的数据中分出多个小的数据库,每个服务都对应一个数据库,这就是系统发展到一定阶段必要要做的分库操作。 现在非常火的微服务架构也是一样的,如果只拆分应用不拆分数据库,不能解决根本问题,整个系统也很容易达到瓶颈。 分表 说完了分库,

如上图,从一个大的数据中分出多个小的数据库,每个服务都对应一个数据库,这就是系统发展到一定阶段必要要做的“分库”操作。

现在非常火的微服务架构也是一样的,如果只拆分应用不拆分数据库,不能解决根本问题,整个系统也很容易达到瓶颈。

分表

说完了分库,那什么时候分表呢?

如果系统处于高速发展阶段,拿商城系统来说,一天下单量可能几十万,那数据库中的订单表增长就特别快,增长到一定阶段数据库查询效率就会出现明显下降。

因此,当单表数据增量过快,业界流传是超过500万的数据量就要考虑分表了。当然500万只是一个经验值,大家可以根据实际情况做出决策。

那如何分表呢?

分表有几个维度,一是水平切分和垂直切分,二是单库内分表和多库内分表。

水平拆分和垂直拆分

就拿用户表(user)来说,表中有7个字段:id,name,age,sex,nickname,description,如果 nickname 和 description 不常用,我们可以将其拆分为另外一张表:用户详细信息表,这样就由一张用户表拆分为了用户基本信息表+用户详细信息表,两张表结构不一样相互独立。但是从这个角度来看垂直拆分并没有从根本上解决单表数据量过大的问题,因此我们还是需要做一次水平拆分。
 

在此方案中,没有真正的负载平衡器,只有任务队列和服务器。每个服务器承担它能够处理的负载。如果服务器掉出群集,则其任务将在任务队列上保持未处理状态,并在以后由其他服务器处理。因此,每个服务器都可以独立于其他服务器和任务队列运行。负载均衡器不需要知道哪些服务器是集群等的一部分。任务队列不需要知道服务器。每个服务器只需要知道任务队列。

队列负载平衡还隐式考虑了每个服务器的工作负载和容量。服务器仅从队列中获取任务,然后它们才有能力对其进行处理。

五、自身高可用-负载均衡双机热备

负载均衡器本身就是一个单点故障隐患,其中一个解决方案就是双机热备(提高可用性的一大基本方法就是冗余)。

双机热备方案为了解决负载均衡器的单点故障问题,引入了第二个负载均衡器,当主节点挂了之后切换到备用节点。

这里的双机热备、故障转移,一般都是使用KeepAlive实现。
 

IP哈希

根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

最小连接数

最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态地选取其中当前

积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。

一致性 Hash

相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。

算法参见:http://en.wikipedia.org/wiki/Consistent_hashing

四、其他负载平衡方案

基于队列方案

所有任务都存储在任务队列中。服务器群集中的服务器连接到此队列,并接受它们可以处理的任务数。

(编辑:阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读