`

为什么大多数大型网站不是用Java写的

 
阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

国庆长假,老外在热烈的讨论这个话题,

原文地址: 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

Somedevelop 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



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1814706


分享到:
评论

相关推荐

    为什么大多数大型网站不是用Java写的.rar

    为什么大多数大型网站不是用Java写的.rar

    大型网站技术架构:核心原理与案例分析

    Java 的大多数应用都是用在Web上的,现在只要稍微大型一点的Web应用,都一定是一个分布式系统,那么一个分布式系统用到了哪些技术?一个大型网站是如何从 一个小型网站成长起来的?如何保证你的网站安全?分布式系统...

    Java访问c#开发的webservice

    在大型项目开发中,避免不了分布式的应用,分布式应用的业务逻辑一般分别部署到若干个服务器上,供各个客户端程序调用。而部署到服务器上的业务逻辑一般用webservice实现。开发webservice可以使用java、也可以使用c#...

    bbs 论坛源码 java

    Java BBS源码意味着我们可以深入研究其内部机制,学习如何用Java构建类似的应用。 在Java BBS源码中,你可能会遇到以下关键知识点: 1. **MVC架构**:大多数Java Web应用采用Model-View-Controller架构,将业务...

    Java源代码(添加、删除、查询)

    【Java源代码(添加、删除、查询)】 ...这些基本操作构成了大多数数据驱动应用程序的基础,无论是在小型项目还是大型企业系统中都具有普遍性。理解并熟练掌握这些技能对于任何Java开发者来说都是非常重要的。

    免费开源!!一个 Java 序列化/反序列化库,用于将 Java 对象转换为 JSON 并返回

    Gson 是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。Gson 可以处理任意 Java 对象,包括您没有源代码的现有对象。 有一些开源项目可以将 Java 对象...

    手机JAVA模拟器超精简版(520k)

    这款超精简版的Java模拟器,仅有520KB的大小,却能兼容并运行大多数手机Java游戏,这在一定程度上体现了其高效的代码优化和资源管理能力。 Java技术,特别是Java ME(Micro Edition),是专为移动设备和嵌入式系统...

    制作Java程序的小软件

    2. **Eclipse**: 虽然Eclipse本身并不是一个小巧的软件,但其社区提供了许多轻量级的版本,如Eclipse Neon或Eclipse IDE for Java Developers,这些版本专注于Java开发,去除了不必要的插件和功能,降低了对系统资源...

    Java联想(中文)

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它的设计目标是简洁、通用、高效、安全,并且可以在各种平台上运行,实现了“一次编写,到处运行”的理念。...

    自动Java环境变量设置

    总的来说,自动Java环境变量设置是一个提高开发效率的重要步骤,尤其对于初学者和大型团队来说,统一的环境配置能避免很多不必要的问题。理解并正确配置这些环境变量,将使你的Java开发旅程更加顺畅。

    java考试系统源码

    1. **MVC设计模式**:在大多数Web应用中,Java考试系统会采用Model-View-Controller(MVC)架构,将业务逻辑、数据模型和用户界面分离。Model处理数据,Controller处理用户请求,View负责显示结果。 2. **Servlet与...

    淘天下电商网站源码【java版】

    淘天下网站源码商城,java版本,符合国内大多数电商网站需求,包含数据库基本数据和数据结构,可以作为大型电商网站参考

    Java 简介,详细教程

    Oracle开发的关系数据库产品因性能卓越而闻名,许多大型网站也选用了Oracle系统,是世界最好的数据库产品。 三、Java平台体系 JavaSE(J2SE)(Platform Standard Edition,平台标准版) JavaEE(J2EE)(Platform ...

    Java 编程规范.doc

    Java 编程规范是开发高质量、可维护代码的基础,它为开发者提供了一套共同遵循的规则和约定,有助于团队协作和代码一致性。本规范由Java社区的专家们制定,包括了命名规范、代码布局、注释规则等多个方面,旨在提高...

    java版everything+纯java不用任何包读取office中word文件

    在Java编程领域,读取和操作Office文档,特别是Word文件,通常需要依赖第三方库,如Apache POI或OpenOffice API。然而,根据标题和描述,这里介绍的是一个独特的实现方式,它声称可以“纯Java”读取docx文件,无需...

    java 图书馆管理系统

    Java 图书馆管理系统是一个基于Java编程语言开发的应用程序,它旨在为图书馆提供高效、便捷的图书管理服务。这个系统能够帮助管理员进行图书的录入、查询、借阅、归还等日常管理工作,同时也能方便读者查找和预约...

    java封装ffmpeg截取视频图片

    这意味着Java封装的FFmpeg库可以处理大多数现代多媒体文件。 5. **跨平台兼容性**:由于FFmpeg本身是跨平台的,Java封装的库也具备相同特性。无论是Windows还是Linux环境,只要正确配置了FFmpeg库,Java程序就可以...

    【文献综述】基于JAVA的俄罗斯方块游戏设计与实现.pdf

    实现跨平 台性的方法是大多数编译器在进行 Java 语言程序的编码时候会生成一个用字节码 (Bytecode)写成的"半成品" ,这个"半成品"会在 Java 虚拟机[7](解释层)的帮助下运 行,虚拟机会把它转换成当前所处硬件...

    java毕业实习总结.doc

    Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用 Java。Java 语言丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,...

    java打包成EXE文件过程详解(图解)、exe4j工具

    exe4j是一款专为Java应用程序设计的打包工具,它允许开发者将Java应用转换为Windows平台上的独立可执行文件。exe4j不仅能够创建单个EXE文件,还支持创建自解压程序和安装程序,以满足不同需求。 **二、打包步骤** ...

Global site tag (gtag.js) - Google Analytics