淘宝底层技术框架,如何实现网站的分布式负载均衡?

淘宝底层技术框架,如何实现网站的分布式负载均衡?,第1张

对于大型网站而言,随着流量的暴增,单一服务器是无法抗住高并发的,所以大型网站都是从最初的单一架构演变为集群分布式架构。淘宝网作为数一数二的电商平台,它开发了很多底层技术框架以适应日益发展的需要。

什么是分布式与负载均衡?

1、分布式

分布式是将一个完整业务拆分为多个子业务(或者本身就是不同的业务)部署在不同服务器之上,比如用户系统、订单系统、商城系统分布部署在不同服务器上。

还有一个概念容易和分布式混淆,那就是集群。集群强调的是同一个业务部署在多台服务器之上。

集群模式下,多个节点中的某个节点挂了是不会影响整体业务的;而分布式环境下若某个节点挂了则可能会影响某个业务(实际上不会,因为业务分布式部署后也会做集群)。

2、负载均衡

负载均衡充当的角色就是“裁判”,它将大量并发流量分摊至多台节点服务器(集群)上进行处理,这样减少了用户等待响应时间。

所以说负载均衡离不开服务集群。

淘宝如何是如何实现分布式、集群和负载均衡的?

1、动静分离

将动态请求与静态请求分别部署在不同服务器上,以便针对性进行优化。

2、分布式服务框架HSF

HSF是阿里的分布式服务框架,经过拆分,各系统间的耦合度大大降低了,更有利于分布式部署。

3、分布式NoSQL框架Tair

Tair是淘宝开源的分布式K/V数据库。

4、高性能Web服务器Tengine

Tengine是基于Nginx二次开发的,性能上比Nginx更好,而且支持更多特性,如:请求合并、限速模块、内置Lua等。可以借助它来做反向代理和负载均衡。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流~我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

ES集群中各节点角色功能简介

本博客根据ES 715 ,介绍ES中各节点角色功能。集群节点角色可以在配置文件elasticsearchyml中通过noderoles配置,如果配置了节点角色,那么该节点将只会执行配置的角色功能;如果不配置,该节点将会执行以下角色功能:
1、如果私自配置节点信息,请确保集群配置有master角色的节点和data角色的节点

2、如果有较大的机器学习(machine learning)任务或转换(transform)任务,建议将候选的主节点(Master-eligible node)与数据节点(data node)、机器学习节点(machine learning node)和转换节点(transforming node)分开是很有必要的。

3、每个节点都默认为协调节点(Coordinating node),如果noderoles设置为[]那么该节点将只执行协调节点功能
ES集群

(1)Cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

(2)Shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

(3)replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

(4)Recovery:代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

(5)ES为什么要实现集群:在单台ES服务器节点上,随着业务量的发展索引文件慢慢增多,会影响到效率和内存存储问题等。ES集群,可以将单个索引的分片到多个不同分布式物理机器上存储,从而可以实现高可用、容错性等。ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。

(6)es如何解决高并发:ES是一个分布式全文检索框架,隐藏了复杂的处理机制,内部使用 分片机制、集群发现、分片负载均衡请求路由。 Shards 分片:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。Replicas分片:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
5、ES集群脑裂
6、ES集群的分布式存储

·  如新增一个文档流程 文档-->协调节点(hash运算)-->mater-->决策路由到对应主分片如node3节点-->同步副本分片到node2节点上-->返回结构到

协调节点coordinating node-->再传至matster

6、故障转移
·  停掉master

·  cerebro界面集群状态瞬间变黄了

·  这是之前master节点的分片开始转移至剩余的两个节点,集群剩余两个节点,且保证主副分片不在同一个几点

·  重新启动故障节点,集群再次恢复三个节点,分片自动转移过去,但是此时它已不是master节点

服务器的集群系统是比较复杂的功能,这个得根据你业务的需求来确定使用什么架构。

如果是做mysql的集群,可以使用mycat中间件做读写分离,也可以使用MHA,来实现MySQL的集群。

如果要是做web项目的话,则可以使用LVS+Keepalived来实现。也可以使用Nginx做反向代理。

现在比较火的可能是虚拟化,就是配置一台高配服务器,在其中运行docker或者openstack等虚拟化技术也可以实现集群的功能,有个弊端就是宿主机一旦故障,整个业务全部瘫痪,当然,这样是比较节省开销的。

关于Windows Server 2003的企业版和Datacenter版都可以支持最大达8个节点的集群配置;其典型的特征是可为数据库、消息系统、文件与打印服务这些关键业务应用,提供高可用性和可扩展性,在集群中的多个服务器(节点)保持不间断的联系。即是说如果在集群中的某一节点因出错或维护不可用时,另一节点会立刻提供服务,以实现容错。正在访问服务的用户可以继续访问,而不会察觉到服务已经由另一台服务器(节点)提供。
T、SDM


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/13031551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存