记住一句名言:出来混总是要还的。
我们设计一个系统希望用户用起非常的爽快,这操作界面多友好,这响应速度多快,这多么安全和稳定,目标达到了,钱也赚了,用户量越来越大,我们发现系统处理不了了,怎么办?
系统的性能度量按照科学的角度是需要用工具认真测试的,它有很多个切面来衡量,性能度量有两个大的方面:第一个是有多块,第二个是有多少?所以关注系统的性能我们要仔细度量,我们到底是要求速度呢?还是说工作量,但是所有这一切在用户眼中是浮云,他们只关心:操作友好吗?速度够快吗?安全可用和稳定吗?我们人多了你还能抗得住吗?
一个机器的性能是有限的,我们应该投资我们的架构可以跑在多个机器上,这样我们才能够达到用户的那个需求:我们人多了你要抗得住。一个程序如果在单机上运行得非常好但是未必在多个机器上运行得好。
性能和伸缩性有时候是对立的,但是伸缩性又非常重要,所以我们应该做这个选择题:伸缩性 > 性能。程序的设计理念应该是:正确和安全,然后考虑跑得更快,程序如果只追求快速,那么可能会带来复杂性和低维护性,比如破坏OO的封装,使用了难以看懂的算法,代码优化在系统总体性能优化上占的比重很低,我们应该把中心放在设计上和整个体系的把握,避免不成熟的代码优化。
现在说说多线程:
多线程可以提高性能,同时还提供可伸缩性,好了,要在性能和可伸缩性这个矛盾对立的两个关注点上使用好线程不是很简单的,线程带来了协调开销(比如加锁,信号,内存同步),上下文切换,生命周期管理,调度等等开销,如果使用不当,多线程程序将比顺序化程序还慢。在Java的多线程编程中,锁是必然遇到的,锁带来了串行化和性能开销,系统中如果减少锁的竞争可以提高伸缩性和性能,所以我们要尽量减少锁被持有的时间,锁被请求的频率,或者用协调机制取代独占锁从而允许更好的并发性。
分享到:
相关推荐
资源名称:数据访问宝典-实现最优性能可伸缩性的数据库应用程序内容简介:在当今的企业数据库应用程序中,性能和可伸缩性比过去任何时候更为关键,传统的数据库调整对于解决可能在这些应用程序中遇到的性能问题有些...
本文将深入探讨MySQL与Oracle在性能、可伸缩性以及最佳实践方面的比较,并通过代码示例来展示它们在实际应用中的表现。 MySQL和Oracle在性能和可伸缩性方面各有优势。Oracle适合大型企业和数据密集型应用,而MySQL...
分布式系统的可伸缩性可以通过物理资源的增加来实现,比如通过增加更多的服务器来分摊不断增长的工作负载。这种通过硬件扩张来提升系统处理能力的方式直观且易于理解。然而,硬件资源的增加并非是无限的,随之而来的...
VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB...
综上所述,Windows可伸缩性范例涵盖了从基础的资源管理到高级的虚拟化技术等多个层面,旨在帮助用户和开发者构建高效、稳定且易于扩展的系统环境。通过理解和应用这些范例,无论是个人用户还是企业都能更好地应对日...
在计算机处理器发展为包含越来越多的核心的时期,多线程是创建可伸缩性、高效的、高响应性应用程序的关键因素。如果你没有正确地使用多线程,它会导致难以捉摸的问题,需要你花费大量时间去解决。因此,现代应用程序...
高性能服务器网络可伸缩性.doc
在信息技术领域,数据库的可伸缩性是衡量系统性能的关键指标之一,它关乎到系统能否在工作量增加时保持稳定的服务水平。本文将深入探讨如何利用Universal Scalability Law(USL,通用可伸缩性定律)来预测MySQL...
在Linux环境下进行多线程编程时,选择适合的模型至关重要,因为这直接影响到程序的性能、可扩展性和资源利用率。本文主要探讨了四种常见的服务执行模式,并重点分析了多线程和多进程在服务器开发中的优缺点。 1. **...
提供有关在整个.NET应用程序生命周期中管理性能和可伸缩性的端到端指南,以降低风险并降低总体拥有成本。
高性能服务器网络可伸缩性.doc
可伸缩性是衡量分布式系统是否能随着需求和资源的变化而持续满足性能需求的能力。在计算机科学中,特别是在分布式系统领域,可伸缩性的概念至关重要。由于业务需求和技术环境的变化,分布式系统必须能够扩展其处理...
`java.util.concurrent`包是Java提供的一个强大的并发工具库,它为开发者提供了多种线程安全的工具,旨在提高并发程序的性能、可伸缩性、可读性和可靠性。 在JDK 5.0中,引入了大量并发改进,包括JVM级别的变化,如...
Cardinal是一个设计精良的模块化CSS框架,其核心理念在于提供一个移动优先的解决方案,以优化现代网页的性能和可伸缩性。在当前快速发展的互联网环境中,开发者需要高效且灵活的工具来构建响应式网站,而Cardinal...
在IT领域,多线程和高并发是两个关键概念,特别是在Java编程中,它们对于构建高效、可扩展的系统至关...通过合理利用Java提供的多线程机制和并发工具,可以设计出高性能、可扩展的应用,满足大规模用户并发访问的需求。