`

为什么大多数大型网站不是用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#...

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

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

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

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

    Java 简介,详细教程

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

    Java 编程规范.doc

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

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

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

    java毕业实习总结.doc

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

    Java与脚本语言的整合与应用.pdf

    这个时候就需要整合Java和脚本语言来开发程序,Java和脚本语言并不是相互排斥的。相反,它们是相辅相成的并且在许多情况下可以共存。 Java和脚本语言的整合可以为程序开发者提供一个机会来平衡利用这两种环境能力。...

    java外文翻译.pdf

    这些程序可以用大多数语言编写,Perl是一种常见选择,因为它设计用于文本处理,并且是解释型的,因此可以安装在任何处理器或操作系统下的服务器上。 许多强大的现代网站完全基于CGI构建,事实上,你可以用它做几乎...

    sourceafis-java

    它可以比较两个指纹1:1或搜索大型数据库1:N以匹配指纹。它在输入上获取指纹图像并在输出上产生相似性得分。然后将相似度得分与可定制的匹配阈值进行比较。 SourceAFIS算法在纯Java和纯.NET中有两个几乎相同的开源...

    JAVA工作5年的经验

    例如,许多大型网站如新浪(Sina)的后端服务可能就采用了Java技术,因为它能提供高并发处理能力,并且运行在稳定的Unix或Linux系统上,确保了服务的高可用性和安全性。 对于初学者,理解Java的基础概念,如类、...

    1000道互联网Java架构师面试题

    Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql? MyBatis 的动态 SQL 可以根据需要生成不同的 SQL 语句: * 动态 SQL 可以使用 `&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;` 等标签来定义条件语句。 * MyBatis 的动态 ...

    java一些基本概念区分

    它包含了 Java 核心库,是大多数 Java 开发的基础。J2SE 提供了运行 Java 应用程序所需的环境,包括 JVM(Java Virtual Machine)和标准库。 J2ME(Java 2 Micro Edition)则是针对嵌入式设备和消费电子产品的微型...

    JAVA XML 數據.doc

    在Java编程中,XML(可扩展标记语言)是一种用于存储和传输数据的格式,它具有结构化和易于解析的特点。DTD(文档类型定义)是XML的一个组成部分,用于定义XML文档的结构和规则。在给定的例子中,我们有一个关于订购...

    利用JAVA操作EXCEL文件

    总的来说,Java Excel API为Java开发者提供了一种简单而有效的方式来操作Excel文件,它在很多Web应用中用于数据导入导出,报表生成,以及数据处理等场景。尽管有一些限制,但对于大多数基础的Excel操作,它是完全...

    Java游戏编程初步

    Java 游戏编程是利用Java语言来开发游戏的技艺,虽然在早期,大多数大型游戏主要由C或C++编写,但随着Java技术的发展,Java在游戏编程领域展现出强大的潜力。本文旨在引导初学者掌握如何使用Java编写Applet游戏,这...

    大型网站系统架构分析归纳.pdf

    大多数大型网站倾向于使用开源的Linux或FreeBSD,因为它们提供了良好的性能,并且拥有庞大的开发者社区支持。Apache是最常见的Web服务器选择,但对于Java应用,可能会使用Tomcat或Jetty。Google和Facebook等公司则...

    大型WEB网站架构深入分析

    8. **软件四层交换**:相比硬件设备,软件四层交换(如Nginx、HAProxy)成本更低,灵活性更高,适用于大多数中大型网站的负载均衡需求。 综上所述,大型WEB网站架构的深入分析涵盖了从静态化处理、服务器分离、...

Global site tag (gtag.js) - Google Analytics