国庆长假,老外在热烈的讨论这个话题,
原文地址: http://natishalom.typepad.com/nati_shaloms_blog/2007/10/why-most-scalab.html
我摘录部分观点如下:
Most of these sites are using LAMP as the core runtime stack
Some develop their own file system (Google, GFS)
Some are using caching to solve the database bottleneck (memcached and the like)
--
introducing similar solutions for addressing the scalability challenges: 在解决伸缩性方面的尝试:
On the Data Tier we see the following:
1. Adding a caching layer to take advantage of memory resources
availability and reduce I/O overhead
2. Moving from a database-centric approach to partitioning, aka shards
注:shards是google贡献给hibernate的一个项目,他是hibernate的一个扩展,可以
透明的实现数据的分布存储。至于如何分布存储由你自己定义策略,例如典型的
RoundRobinShardSelectionStrategy
On the Business Logic Tier:
3. Adding parallelization semantics to the application tier (e.g.,
MapReduce)
注:MapReduce是Google开发的C++编程工具,用于大规模数据集(大于1TB)的并行运算。MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性的把完成的工作和状态的更新报告回来。MapReduce会生成大量的临时文件,为了提高效率,它利用Google文件系统来管理和访问这些文件。
4. Moving to scale-out application models to achieve linear scalability
注:
scaling:the ability of an application to address growth in throughput,
usage, and capacity
有两种策略:scale out 和 scale up
scale up vs scale out 的区别在于:
1 Reliance on hardware versus reliance on software
2 Equation with "first-class" hardware versus "commodity" hardware
3 Massive versus incremental capacity increases
4 Centralized versus partitioned application architectures
简单的说就是一个靠提升单个硬件的配置,另一个靠用低端配置实现集群
5. Moving away from the classic two-phase commit and XA for transaction
processing (See: Lessons from Pat Helland: Life Beyond Distributed
Transactions)
注: 不使用传统的分布式事务处理,例如EJB的事务,使用新的基于space的中间件平台 Space Based Architecture (SBA) and GigaSpaces XAP
分享到:
相关推荐
尽管Java是一种功能强大、广泛使用的编程语言,但事实是,很多大型网站并没有选择Java作为主要开发语言。这个问题涉及到多种因素,包括性能、可扩展性、开发效率、生态系统、成本以及特定业务需求等。下面我们将详细...
Java作为一种广泛使用的编程语言,其生态系统中有许多工具支持代码生成,但本项目强调的是“纯手写”实现,意味着开发者自定义了代码生成的逻辑,而不是依赖第三方库。 【描述】"运行:com/main/test/main.java ...
JAXB提供了一种将Java对象与XML文档相互转换的机制,使得Java对象可以自动转换为XML表示形式,反之亦然。 ##### JAXB特点: - **优点**: - 大大简化了XML文档的创建和解析过程。 - 支持双向绑定。 - 代码简洁,...
Java 的大多数应用都是用在Web上的,现在只要稍微大型一点的Web应用,都一定是一个分布式系统,那么一个分布式系统用到了哪些技术?一个大型网站是如何从 一个小型网站成长起来的?如何保证你的网站安全?分布式系统...
JavaGuide 是一个面向Java程序员的开源项目,它涵盖了大多数Java开发者在职业生涯中需要掌握的核心知识。这个项目旨在为初学者和有一定经验的开发者提供一个全面的学习资源,帮助他们巩固基础,提升技能,以便在实际...
Java的特点包括垃圾回收机制、丰富的类库、强大的异常处理和多线程支持,这使得它非常适合于开发大型、分布式系统,如网络应用、移动应用和服务器端应用。 【订票软件】 订票软件是用于帮助用户在线预订各类票务,...
Java BBS源码意味着我们可以深入研究其内部机制,学习如何用Java构建类似的应用。 在Java BBS源码中,你可能会遇到以下关键知识点: 1. **MVC架构**:大多数Java Web应用采用Model-View-Controller架构,将业务...
【Java源代码(添加、删除、查询)】 ...这些基本操作构成了大多数数据驱动应用程序的基础,无论是在小型项目还是大型企业系统中都具有普遍性。理解并熟练掌握这些技能对于任何Java开发者来说都是非常重要的。
在Java编程领域,读取和操作Office文档,特别是Word文件,通常需要依赖第三方库,如Apache POI或OpenOffice API。然而,根据标题和描述,这里介绍的是一个独特的实现方式,它声称可以“纯Java”读取docx文件,无需...
jieba分词是中文处理领域的一个著名...综上所述,jieba分词Java版项目提供了一种在Java环境下进行中文分词的解决方案,通过Eclipse导入并运行测试,你可以快速了解和使用这个工具,为你的中文信息处理任务带来便利。
Gson 是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。Gson 可以处理任意 Java 对象,包括您没有源代码的现有对象。 有一些开源项目可以将 Java 对象...
5. **J2EE**(151次):虽然现在更多地使用Spring等轻量级框架,但了解J2EE标准仍然很有价值,它为Java Web应用程序提供了一套完整的规范和指南。 6. **设计模式**(148次):设计模式是指在特定场景下解决常见问题...
这意味着Java封装的FFmpeg库可以处理大多数现代多媒体文件。 5. **跨平台兼容性**:由于FFmpeg本身是跨平台的,Java封装的库也具备相同特性。无论是Windows还是Linux环境,只要正确配置了FFmpeg库,Java程序就可以...
- **编译与运行**:通过`javac`命令编译源代码成字节码,然后用`java`命令运行已编译的类。 - **调试**:JDK1.8的`jdb`调试器允许开发者对程序进行单步调试、设置断点、查看变量值等操作。 4. **性能优化:** ...
这款超精简版的Java模拟器,仅有520KB的大小,却能兼容并运行大多数手机Java游戏,这在一定程度上体现了其高效的代码优化和资源管理能力。 Java技术,特别是Java ME(Micro Edition),是专为移动设备和嵌入式系统...
J2EE 用于构建大型企业系统,J2SE 是大多数桌面和服务器应用的基础,而 J2ME 则服务于移动和嵌入式领域。开发者可以根据项目的具体需求选择合适的平台,并通过阅读这些文档来深化对 Java 语言的理解,提高编程效率。...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它的设计目标是简洁、通用、高效、安全,并且可以在各种平台上运行,实现了“一次编写,到处运行”的理念。...
至于【标签】中的"JAVA",表明整个系统是用Java语言开发的,Java以其跨平台性和稳定性成为开发大型系统的首选语言。"swing"则表示GUI是用Swing库构建的,Swing是Java的标准GUI工具包,提供了丰富的组件和强大的功能...
《Java入门到精通》是一本面向初学者的Java编程教程,旨在帮助零基础的读者掌握Java语言,并逐步提升为熟练的Java开发者。本教程通过深入浅出的方式,讲解了Java的核心概念和技术,覆盖了从基础知识到高级特性的全...
总的来说,自动Java环境变量设置是一个提高开发效率的重要步骤,尤其对于初学者和大型团队来说,统一的环境配置能避免很多不必要的问题。理解并正确配置这些环境变量,将使你的Java开发旅程更加顺畅。