`
goodsense
  • 浏览: 31642 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

集群,分布式系统性能优化

阅读更多

性能是一个多方面综合的结果,遵循短板理论。系统中任何一个部分成为性能瓶颈,都会影响整个系统的性能表现 

对于WEB应用,首先第一步是响应HTTP请求,即使后端的性能再好,如果在这里出现瓶颈,整个系统的性能也会很差,类似于一个很大的水瓶,但是入水口很小。在这个环节,可以通过DNS分流,负载均衡等方式改善。另外,现在高性能的HTTP服务器(Nginx、node.js等)本身,由于采用了事件通知等设计方式,单个线程可以响应多个HTTP请求,减少了线程创建和切换的开销(CPU与内存),也可以显著提升响应HTTP请求的性能 

接受请求之后,则进入系统后端进行业务逻辑处理,在这里也会产生性能瓶颈。通过集群的方式,可以有效改善。因为单台服务器的硬件总是有限的,受限于CPU和内存,单台机器能够处理的负载终究是有限的,这时可以采用集群方案,将请求分摊到不同的服务器上处理。这对应用的实现本身是有要求的,基本上要求应用是“无状态”的。比如如果应用的业务逻辑依赖session,那么集群就无法简单地实现,还需要加入session同步的策略等。另外应用本身的代码也会有影响,比如在关键路径上使用了synchronized,那么就只能串行处理,对性能肯定有影响 

集群不等于分布式。当应用的规模大到一定程度,简单的集群也无法支撑,这时候往往还需要考虑分布式,对系统进行拆分,充分利用硬件的性能,达到最大的扩展性。此外,即使不考虑性能,将系统拆分,实现“服务化”,对于功能的扩展也是很有帮助的。比如说,只有单个系统时,用户管理可以和业务系统放在一起;但是当应用规模不断增大,有100个系统,那么把用户管理拆分出来,就可以在100个系统中实现这部分功能的共享 

最后到了持久层,这里往往会涉及到大量的IO读写,这是最容易产生性能瓶颈的地方。传统的RDBMS本质上是一个单机系统,并且需要遵循ACID的约束。所以传统的关系数据库的扩展性是很差的。比如说,我们用到了数据库集群,这可以解决服务可用性的问题(主备倒换),容灾的问题(数据冗余),对性能也有一定的帮助(同时响应更多的数据库连接请求)。但是仅仅这样还不够,因为前面说过RDBMS本质上是单机系统,即使用了集群亦然。什么意思呢?集群仅仅解决了多连接并发的问题,但是数据库本身插入、查询,涉及到大量的IO,就已经成为了瓶颈,尤其在数据量很大的情况就更加明显。所以仅仅是集群还不够,这时候就需要分表(水平拆分),这对系统的代码就有要求,什么样的数据,要到哪个表里查询,都需要遵循一定的规则。有一个办法是,将数据库路由的功能放在JDBC之下,数据库之上,这样应用就只需要连接到这个数据库路由层,不用关心表的实际位置。随着数据库复杂度的上升,本来很好用的ORM,也就越来越捉襟见肘了 

数据规模越来越大,遇到即使拆表也无法解决问题的时候,就需要考虑RDBMS之外的方案。比如键值数据库(Redis、Tair)、文档数据库(MongoDB)等NOSQL技术,甚至还有文件系统(GFS、TFS),当然缓存也是很常见的重要方案 

总的来说,性能是一个很大的话题。为了实现高性能,系统的架构是随着业务的发展,逐步演化的,从一开始就设计一个大规模的架构,绝非明智之举。“先实现功能,再按需优化”,才是比较好的策略。在这个过程中,既需要前瞻的眼光,也需要推倒重来的勇气 

分享到:
评论

相关推荐

    Ceph分布式存储系统性能优化技术研究综述.pdf

    在总结研究方面,Ceph分布式存储系统的性能优化技术研究将不断深化,为构建更加高效、可扩展的云计算和大数据存储平台提供技术支撑。这不仅要求对Ceph系统本身有深入的理解,还要求研究者关注存储技术、计算机网络、...

    数据库优化、集群分布式

    数据库优化和集群分布式是IT行业中两个至关重要的领域,它们直接影响着系统的性能、稳定性和可扩展性。在2012年中国数据库技术大会上,这些主题得到了深入的探讨和分享。 首先,我们来关注“数据库优化”。数据库...

    构建JAVA大型分布式电商项目实战高并发集群分布式系统架构PDF+视频.rar

    本项目实战教程涵盖了高并发、集群以及分布式系统架构等关键知识点,旨在帮助Java架构师提升技能,实现高性能、高可用和可扩展的电商系统。 1. **Java基础与高级特性** - Java的基础语法、面向对象编程、异常处理...

    基于态势感知一致性的UAV集群分布式协同性能分析.pdf

    在对给定文件内容进行详细的知识点阐述时,我们需要聚焦于无人机(UAV)集群分布式协同性能分析,特别是基于态势感知一致性的方法。以下是对标题、描述、标签和部分内容中出现的关键知识点的详细说明: 1. 无人机...

    分布式文件系统GlusterFS性能优化研究.pdf

    分布式文件系统GlusterFS性能优化研究中涉及到的关键知识点包括分布式文件系统的基本概念、GlusterFS的架构特点、性能优化策略以及优化测试和实验平台的搭建和分析方法。 首先,分布式文件系统是一种把数据存储在多...

    分布式系统原理与范型答案(第二版)答案

    6. **负载均衡**:为了优化资源使用和提高性能,分布式系统通常需要实施负载均衡策略,将请求分发到不同的计算节点。 7. **故障恢复与容错**:分布式系统必须具备故障检测、恢复和容错机制,如心跳检测、冗余备份和...

    大型电商分布式系统实践

    在当今互联网时代,大型电商企业为了应对海量的用户请求和保证业务的高可用性,往往采用分布式系统架构来构建他们的技术平台。分布式系统通过网络将物理上分散的多个服务器连接在一起,以协同完成共同的任务。在大型...

    基于HDFS的跨集群分布式文件系统研究.pdf

    在当前信息技术高速发展的背景下,分布式系统的研究愈发受到重视,特别是在大数据处理和云存储领域。Hadoop分布式文件系统(HDFS)作为分布式系统的一个重要组成部分,在可靠性、吞吐量和可扩展性方面表现出色,成为...

    1.7 Go在分布式系统的性能调试和优化.pdf

    - **配置存储与集群状态管理**:分布式系统中的核心问题之一是如何有效地进行配置存储和集群状态的管理。 - **Chubby模型**:以Google的Chubby为例,介绍了其在分布式协调方面的成功经验。 ##### 四、性能调试与...

    分布式系统课件 南京大学

    其主要特性包括透明性、可靠性、可扩展性和性能优化。 2. **一致性模型**:在分布式环境中,数据一致性是一个关键问题。常见的模型有强一致性、弱一致性、最终一致性等,它们在保证数据更新传播的时间和方式上有所...

    分布式集群dubbo+zookeeper.pdf

    集群和分布式是两种常见的分布式系统形态。 集群是指将同一业务逻辑部署在多台服务器上,这些服务器运行相同的代码,共同处理请求,以分散负载并提供高可用性。当一台服务器出现故障时,其他服务器仍能继续提供服务...

    分布式同步系统Zookeeper的优化.pdf

    由于其在分布式系统中的核心地位,Zookeeper的性能和稳定性直接影响到整个集群的效率。本文档《分布式同步系统Zookeeper的优化》主要讨论了针对Zookeeper在大规模计算机集群上运行效率低下的问题,并提出了一种基于...

    分布式系统学习教案PPT

    分布式系统是一种由多台计算机通过网络互相连接,协同工作来完成共同任务的计算模式。这个“分布式系统学习教案PPT”包含了一...在学习过程中,理解这些概念并结合实践将有助于构建和优化高可用、高性能的分布式系统。

    分布式系统工程实践.pdf

    在分布式系统中,性能估算还包括考虑数据在网络中的传输时间以及分布式处理的开销。 CAP定理: CAP定理是分布式计算领域的一个重要理论,由Eric Brewer提出。它阐述了分布式系统不可能同时满足一致性(Consistency)...

    分布式系统与并行计算文献阅读综述

    总结,分布式系统与并行计算是信息技术的重要组成部分,它们通过优化资源分配和通信机制,实现了高效的计算和数据处理。Hadoop和MPI分别是分布式计算和并行计算中的关键工具,对于理解和掌握这两个领域具有重要意义...

    大规模分布式系统架构与设计实战.完整版

    九、监控与性能优化 1. 日志收集与分析:如ELK Stack(Elasticsearch、Logstash、Kibana),用于收集和分析系统日志。 2. 监控工具:Prometheus和Grafana组合,实时监控系统性能指标。 3. 调优策略:例如缓存策略、...

    分布式系统教程rar

    它们可能会讨论分布式系统如何提高可伸缩性、容错性和性能,以及在大数据处理、云计算和互联网服务中的应用。 2. **WINZHENG.txt**: 可能是作者或教程的介绍,或者是关于Windows环境下搭建和管理分布式系统的指南...

    百度系统部分布式系统

    无论是从硬件配置、软件架构还是算法优化,百度都展现出了其在分布式系统领域的深厚积累和创新能力。随着数据量的持续增长和技术的不断进步,百度分布式系统的重要性将更加凸显,为未来的大数据时代打下了坚实的基础...

    服务器集群和分布式的区别[参照].pdf

    【服务器集群】与【分布式系统】是两种不同的技术策略,它们在提升系统性能和可用性方面各有侧重。服务器集群强调的是通过多台服务器协同工作,提供可扩展性和高可用性,而分布式系统则关注于分解大任务以缩短单个...

    分布式系统(李西宁)课件

    分布式系统是计算机科学中的一个重要领域,它涉及到多个独立计算实体通过网络进行通信和协作,以完成共同的...通过学习这本教材,读者可以全面掌握分布式系统的原理和实践,为构建和优化大规模分布式应用打下坚实基础。

Global site tag (gtag.js) - Google Analytics