`
ww2
  • 浏览: 418359 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

原文地址: 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写的.rar

    尽管Java是一种功能强大、广泛使用的编程语言,但事实是,很多大型网站并没有选择Java作为主要开发语言。这个问题涉及到多种因素,包括性能、可扩展性、开发效率、生态系统、成本以及特定业务需求等。下面我们将详细...

    纯手写自动生成java代码autoCreateJavaDemo

    Java作为一种广泛使用的编程语言,其生态系统中有许多工具支持代码生成,但本项目强调的是“纯手写”实现,意味着开发者自定义了代码生成的逻辑,而不是依赖第三方库。 【描述】"运行:com/main/test/main.java ...

    java读写xml文件的方法

    JAXB提供了一种将Java对象与XML文档相互转换的机制,使得Java对象可以自动转换为XML表示形式,反之亦然。 ##### JAXB特点: - **优点**: - 大大简化了XML文档的创建和解析过程。 - 支持双向绑定。 - 代码简洁,...

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

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

    JavaGuide,大多数Java程序员需要掌握的核心知识.zip

    JavaGuide 是一个面向Java程序员的开源项目,它涵盖了大多数Java开发者在职业生涯中需要掌握的核心知识。这个项目旨在为初学者和有一定经验的开发者提供一个全面的学习资源,帮助他们巩固基础,提升技能,以便在实际...

    Java写的订票软件

    Java的特点包括垃圾回收机制、丰富的类库、强大的异常处理和多线程支持,这使得它非常适合于开发大型、分布式系统,如网络应用、移动应用和服务器端应用。 【订票软件】 订票软件是用于帮助用户在线预订各类票务,...

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

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

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

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

    jieba分词java版项目

    jieba分词是中文处理领域的一个著名...综上所述,jieba分词Java版项目提供了一种在Java环境下进行中文分词的解决方案,通过Eclipse导入并运行测试,你可以快速了解和使用这个工具,为你的中文信息处理任务带来便利。

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

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

    Java工程师技能表

    5. **J2EE**(151次):虽然现在更多地使用Spring等轻量级框架,但了解J2EE标准仍然很有价值,它为Java Web应用程序提供了一套完整的规范和指南。 6. **设计模式**(148次):设计模式是指在特定场景下解决常见问题...

    java封装ffmpeg截取视频图片

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

    java环境变量jdk1.8

    - **编译与运行**:通过`javac`命令编译源代码成字节码,然后用`java`命令运行已编译的类。 - **调试**:JDK1.8的`jdb`调试器允许开发者对程序进行单步调试、设置断点、查看变量值等操作。 4. **性能优化:** ...

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

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

    java多款中英文技术文档

    J2EE 用于构建大型企业系统,J2SE 是大多数桌面和服务器应用的基础,而 J2ME 则服务于移动和嵌入式领域。开发者可以根据项目的具体需求选择合适的平台,并通过阅读这些文档来深化对 Java 语言的理解,提高编程效率。...

    Java联想(中文)

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

    JAVA在线考试系统

    至于【标签】中的"JAVA",表明整个系统是用Java语言开发的,Java以其跨平台性和稳定性成为开发大型系统的首选语言。"swing"则表示GUI是用Swing库构建的,Swing是Java的标准GUI工具包,提供了丰富的组件和强大的功能...

    Java入门到精通(零基础也能搞JAVA开发)

    《Java入门到精通》是一本面向初学者的Java编程教程,旨在帮助零基础的读者掌握Java语言,并逐步提升为熟练的Java开发者。本教程通过深入浅出的方式,讲解了Java的核心概念和技术,覆盖了从基础知识到高级特性的全...

    自动Java环境变量设置

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

    java考试系统源码

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

Global site tag (gtag.js) - Google Analytics