龙空技术网

架构师白话分布式系统

从程序员到架构师 176

前言:

现时你们对“集群最重要的性能瓶颈”大体比较看重,朋友们都想要分析一些“集群最重要的性能瓶颈”的相关文章。那么小编在网摘上收集了一些关于“集群最重要的性能瓶颈””的相关内容,希望各位老铁们能喜欢,小伙伴们一起来了解一下吧!

对于分布式系统的定义,大致可以理解为如下的两个点

分布式系统从整体的体量来说,它内部是由很多的服务器、服务实例组成。所提供的用户服务是由一组相互独立运行的服务器来提供。对于用户来说,这个多服务器的系统就跟一个服务器一样,感觉不到每个单独的服务器实例的存在。

从程序的角度上可以这样理解,程序A和程序B分别运行在两台服务器上,由两个程序相互协作完成同一个功能。这样这两个程序所组成的整体就可以叫做“分布式系统”。当两个程序相同的时候就可以将其称为“集群”。

单点系统

在分布式系统出现之前,软件系统都是单点的集中式的,也就是所谓的单机部署系统软件。从软件到硬件形成一个高度耦合的系统。这种架构在很长的一段时间内,为企业级开发提供了很多方便。如下图所示。

从图中可以看出,这种集中式的应用从整体结构上来看还是比较简单的。主要是用来做一些后台的管理页面,或者是企业内部系统。例如CRM或者是OA系统等等。这种架构一个很明显的特点就是数据库、应用、文件等都在同一台服务器上。

这种集中式的项目发布相对简单,只需要使用Tomcat运行对应的War包就可以了,缺点就是如果服务器宕机之后,整个的应用都将无法访问。

应用与文件数据库单独拆分

当系统的数据库以及文件数据较多的时候,由于整个服务器的存储空间有限,会导致整个系统运行缓慢,这个时候发展出来将应用、数据库、文件等内容进行拆分,将其分别部署到不同的服务器上。

应用与文件以及数据库进行拆分之后,就是实现了三个单独的服务器部署,其中一个服务器宕机之后 ,不会影响其他服务器的运行。

但是随着用户的不断增加,对于数据的访问量也增加了,当图中的Web服务器宕机之后还是会影响整个应用的使用。

引入缓存集群、用来改善整体的应用性能

当应用业务越来越多,用户使用量也会增加,这个时候单体的Web服务器就不能支持对应的业务了。到这个时候很多的公司采用的就是增加多个Web服务器,这样的话通过前端的Nginx负载均衡技术,可以让请求分发的不同的Web服务器上。然后将用户经常访问的静态数据放入的缓存之中。如下图所示。

搭建集群的目的是为了减少单台服务器的压力。通过部署多个Tomcat的方式来减少单个机器的压力,采用的主要手段就是Nginx+LVS的方式,最终通过这种方式达到负载均衡,减少单应用访问压力的目的。还有物理解决方案F5负载均衡器。这样做需要解决的一个问题就是共享Session,也就是当请求访问到其中一台实例上的时候,用户可以不需要再次登录。缓存的引入是为了解决数据库访问压力的问题。随着请求数据的增加,对于数据库I/O操作的要求就很高了,但是有些数据并不是实时发生变化的,对于这样的数据的访问,可以将其放入到缓存中。这样可以提高用户高并发访问的压力,提升用户体验。数据库的读写分离操作,提供反向代理CDN加速访问等服务

在大多数的互联网公司的系统中,用户对于读数据的请求往往是大于写数据的请求。这个时候就会影响写请求的操作,导致数据库出现性能瓶颈。例如高并发情况下的12306系统。所以这个时候就需要对数据库进行读写分离操作,可以大大提升数据库的存储性能。

另外就是对于静态资源的请求问题,为了提升静态资源的访问速度,系统会将大量的静态资源存放到CDN中,并且通过反向代理的配置,减少通过直接访问服务器中的静态资源导致服务器网络压力问题。如下图所示。

建立分布式文件系统、分布式数据库等内容

如图所示,将文件系统、数据库系统等都可以处理成分布式的系统,这样的话即使系统中出现了问题,也不会影响到其他应用。

分布式系统的特点高内聚:建立在网络基础上,具有高内聚、低耦合的高透明的特点可扩展:可以根据自己的业务需求扩展系统组件,提升高并发处理能力高可用:能保证在一个周期内高效运行高性能:无论是单机的应用还是分布式应用,性能作为考验一个系统的关键指标,在高并发场景下能处理的业务越多,就说明系统性能越好。一致性:分布式系统的可用性和可靠性,导致了一部分的数据冗余问题,如何确保分布式系统的一致性就是我们需要解决的一个问题。在分布式系统中有强一致性和弱一致性。如何保证在同一时间内,操作或者存储的数据只有一份这就成为一个关键问题。常见问题1、网络不可靠的问题:在一个分布式系统中,最重要的连接方式就是网络连接,如果网络中断如何保证分布式系统的高可用。2、节点故障无法有效避免:如果节点出现问题,如何能从健康的节点上同步数据到异常的节点,保证数据的一致性等等。如何进行节点切换访问,保证业务正常执行。

标签: #集群最重要的性能瓶颈