"伤得起"的云计算应用——对云端应用之架构的思考
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Michael Hunger 译者 张龙 发布于 2010年2月28日
在经过几年的开发后,近日NeoTechnology发布了基于Java的图形数据库Neo4j 1.0,它遵循着属性图形数据模型。InfoQ有幸采访了NeoTechnology的COO Peter Neubauer以深入了解此次发布的Neo4j及其向开发者所提供的功能。
Neo4j的核心JAR文件大约有440k,既有基于AGPLv3的开源版本,也有商业版本。如果在闭源软件中使用Neo4j则需要商业协议。Neo4j中的信息主要通过如下3个基本的构建块表示:
相对于关系数据库来说,图形数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。Neubauer详细解释了这一点:
Neo4j重点解决了拥有大量连接的传统RDBMS在查询时出现的性能衰退问题。通过围绕图形进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图形的数据量没有任何关系。此外,Neo4j还提供了非常快的图形算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是无法实现的。
由于Neo4j是个数据库,因此对图形结构的访问——读、写及遍历都是通过ACID事务系统进行管理的。图形遍历是通过Traverser API进行管理的,此外还借助于Lucene提供了对索引的支持,与Solr的集成也仍在开发当中。大家可以查看NeoTechnology CEO Emil Eifrem的讲座以深入了解Neo4j,此外还可以观看对Peter Neubauer的采访。
在被问到关于NoSQL运动的立场时,Neubauer说到:
当然支持NoSQL运动了,因为我们正在解决RDBMS目前所没有解决的问题。这就是说,我们首先关注的是数据、深度查询和分析的复杂性以及RDBMS中需要很多连接和稀疏表才能完成的操作;此外,很多其他的NoSQL项目正在努力解决可伸缩性和分片(sharding)等问题。
Neubauer说到:虽然Neo4j 1.0最近才发布,但在某些领域的产品中已经使用7年多了,此次发布的1.0版的重点并非代码基的稳定性而是API的稳定性。Neo4j的性能也得到了极大的提升,无须修改代码就能够处理拥有数十亿对象的图形;正常来说,Neo4j每秒能够读取200万个关系,同时最短路径计算的可伸缩性要远远好于关系数据库,如MySQL等(虽然使用了相同的性能基准,但众多的因素如硬件和数据集等都会对结果产生比较大的影响)。
除了主要的Neo4j代码基以外,还有一个贡献者与用户所构成的社区和一个庞大的生态圈,这里列举出几个:
关于Neo4j的未来计划,最近一轮的资金将有助于未来的进一步开发,包括对现有的主/从复制的增强、在线的备份支持以通过最终的一致性和write-master重选来提供无缝的高可用性、更棒的全局操作支持以及完整的REST支持(包括基于JavaScript的动态遍历和用于数据发布的只读模式)等等。长远计划包括对分片(sharding)的支持(这会给Neo4j代码基带来全新的挑战),Emil Eifrem还表示用户与开发者所构成的庞大且快速增长的社区(已经创建了数百个Neo4j项目)是非常重要的。
查看英文原文:Neo4j: Java-based NoSQL Graph Database
译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。
随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。
《精通HTML5和CSS3设计模式》一书记录了目前HTML5应用程序的许多常见设计模式。InfoQ对该书作者之一Dionysios Synodinos进行了采访,谈到了该书以及HTML5应用的相关内容。
1 条回复
关注此讨论 回复