本周 Spring 新闻:2011 年 4 月 19 日
欢迎回到本周 Spring 新闻。上周 Cloud Foundry 发布的消息引起了巨大的热情,而且似乎还在不断增强!世界各地的人们涌入了 SpringSource 和 CloudFoundry 论坛、下载页面和源代码仓库。这是史无前例的活跃!
SpringSource 近期推出的许多强大技术都为 Cloud Foundry 的发布做铺垫,所以我邀请您回顾过去几个月发布的一些令人兴奋的技术,这些技术在云和 Cloud Foundry 方面变得更加有趣:Spring Gemfire、Spring AMQP、Spring 3.1 profiles、Spring 3.1 caching abstraction、Spring Data、Spring Integration 对 NoSQL 的支持以及 Spring Hadoop、vFabric Hyperic、vFabric RabbitMQ 和 vFabric GemFire。当然,对于所有这些技术,首选且最好的工具和开发体验仍然是 SpringSource Tool Suite 和 Spring Roo。
好的,接下来是本周回顾。精彩内容太多,时间太少!
- Christian Dupuis 刚刚写了一篇详细的博客,关于如何使用 STS 部署到 Cloud Foundry。
<li><A href="http://www.springsource.org/node/3103">Spring Roo 1.1.3</a>, featuring
Cloud Foundry support, shell enhancements, and improved support for composite primary keys - among other things - has been released.
</li>
<li> DZone has published a <a href="http://refcardz.dzone.com/refcardz/spring-roo-open-source-rapid?oid=hom38521">Spring Roo RefCard</a> by the Spring Roo team's <a href="http://www.twitter.com/schmidtstefan">Stefan Schmidt.</a> This RefCard's a fantastic way to get going quickly with Spring Roo. Spring Roo, it could be argued, is ideally suited to the RefCard…
支持 Neo4j 的 Spring Data Graph 1.0 今天发布
这篇发布公告是 Neo4j 团队开发者的一篇客座文章,他们与 SpringSource 的 Spring Data 团队密切合作,提供了 Spring Data Graph 集成库。
为了友好地介绍 Spring Data Graph,我们将在 4 月 20 日与 VMware 合作举办一场免费网络研讨会,由 Neo Technology 的首席执行官 Emil Eifrem 主讲,为美洲和欧洲提供两个方便的时间选择。[更新:网络研讨会视频现已上传至 youtube 上的 SpringSourceDev 频道。]
Spring 的气息弥漫,Neo4j 和 Spring Data 团队很高兴近一年的努力成果——Spring Data Graph 库的 1.0 版本已经问世。Spring Data 项目旨在将 Spring Framework 便利的编程模型带到 NOSQL 数据库中。Spring Data Graph 支持图数据库...
从 STS 使用 Cloud Foundry
现在您可能已经听说过昨天发布的 VMware 开放 PaaS 产品 Cloud Foundry;如果还没有,请务必查看网络直播录像。您可能已经阅读了早些时候介绍 Cloud Foundry 对 Spring 的支持、Spring Roo 附加组件以及 Grails 插件的博客文章。
通过本文,我想介绍基于 Eclipse 的 Cloud Foundry 支持,它允许您管理云部署,包括服务和服务的配置、应用程序缩放、文件资源访问等等。
为 Eclipse 和 STS 安装 Cloud Foundry 插件
有三种方法可以将 Cloud Foundry 插件安装到 SpringSource Tool Suite (STS) 和纯 Eclipse 中。我将逐步介绍这些选项,以帮助您快速入门。通过 STS 扩展安装进行安装
开始使用 Cloud Foundry 插件最简单的方法可能是将其安装到预先安装好的 STS 中。您应该至少安装了 2.5.1.RELEASE 版本;2.6.1.SR1 版本更佳。适用于各种受支持操作系统的 STS 可以在下载页面上找到。在 STS 中选择“Help > Dashboard…”
推出 Cloud Foundry,业界首个开放 PaaS
今天,我们为开发者带来了令人兴奋的消息:Cloud Foundry 的发布:VMware 推出的开源“平台即服务”(PaaS),允许轻松部署使用 Spring、Rails 和其他现代框架编写的应用程序。Cloud Foundry 通过支持多种编程模型选择、VMware 和第三方提供的多种服务选择、多种部署云选择以及以开源形式交付,在 PaaS 领域开创了新局面。
自 Spring 创建以来,我们一直坚持几个核心价值观:特别是生产力和可移植性。如今,这些经过验证的价值观已超越 Spring 和 Java,延伸到VMware 更广泛的云计算战略中。Spring 通过减少开发者花费在业务逻辑之外的时间来提高他们的生产力;Cloud Foundry 消除了安装和配置应用服务器和 JVM 等基础设施所需的时间。Spring 促进了部署目的地之间的可移植性;Cloud Foundry 本身就是一个关键的部署目的地,也是一个可以...
Cloud Foundry 面向 Spring 开发者
现在,很多人可能已经看过 Cloud Foundry 网络研讨会和 Rod 今天早些时候的博客。我想做一个快速跟进,展示一个部署在云中的“hello-spring”示例应用程序。多亏了 Cloud Foundry,几乎没有学习曲线。
在开始之前,让我们回顾一下从第一天起推动 Spring 发展的三个目标
- 专注于简洁性和生产力,让开发者的生活更轻松
- 以一致的方式支持创新技术
- 确保应用程序在不同部署环境中的可移植性
然后,将这三个目标与 Cloud Foundry 相关联
- 简洁性和生产力:将 Spring 应用程序部署到云中就像在 SpringSource Tool Suite 中拖放一样简单,即使构建在云中运行的应用程序,开发者也可以像通常一样利用 Roo 和 Grails 带来的生产力提升。
- 持续创新:像 Spring Social 和 Spring Data 这样的项目拥抱 Twitter 和非关系型数据存储等创新技术,这些技术在基于云的应用中越来越受欢迎,它们以与现有 Spring 平台一致的方式做到这一点。Cloud Foundry 提供支持此类应用的服务。RabbitMQ 很快将作为云服务提供,因此通过 Spring AMQP 和 Spring Integration 依赖 RabbitMQ 进行消息传递的应用也同样适用。
- 可移植性:云首先是一个新的部署环境,而且很容易创建一个可以在云中和云外运行的应用程序,甚至无需切换配置文件。
考虑到这些目标,我们设计了一个示例应用程序,为 Spring 开发者介绍 Cloud Foundry。这是众多示例中的第一个...
Roo + Cloud Foundry = 云端生产力
今天对于开发者来说是重要的一天,Cloud Foundry(VMware 的开源平台即服务产品)的公开测试版发布了。Rod Johnson 的博客包含了很多关于这个令人兴奋的公告的背景细节,而Mark Fisher 的文章首次展示了这项服务以及应用程序如何在本地环境和云之间轻松迁移。正如 Rod 和 Mark 都强调的那样,今天的发布是为了增强和确保开发者的生产力。
为了支持这项新的服务和平台,我们很高兴地宣布,我们已将 Cloud Foundry 支持集成到 Spring Roo 中——Spring 面向 Java 开发者的高效应用开发工具。现在,您可以将 Roo 的生产力带到云端,甚至无需离开 Shell!有数十个命令可以轻松使用 Cloud Foundry,当然,您只需几分钟即可构建新应用程序并将其部署到 Cloud Foundry。登录后,只需使用新的“cloud foundry deploy”命令即可...
使用 Grails 和 Cloud Foundry 进行一键部署
几年前,一家初创公司的联合创始人在伦敦 Groovy 和 Grails 用户组发表演讲。我清楚地记得他说过他梦想着“只需点击一下”即可部署 Grails 应用程序。随着新的 Cloud Foundry 服务的发布,他的梦想对所有 Grails 用户来说几乎成为了现实。现在,您不仅可以使用 Grails 进行简单快速的开发,还可以简单快速地部署到云托管提供商。
那么 Grails 和 Cloud Foundry 如何协同工作呢?正如 Grails 的老用户所期望的那样,我们为此提供了一个插件!为了演示它是如何工作的,我将引导您部署一个示例应用程序 Pet Clinic 到 Cloud Foundry。这是一个简单的应用程序,您可以在 Cloud Foundry 上看到它的运行效果...
本周 Spring 新闻:2011 年 4 月 5 日
今年进展得非常快!
我们已经看到了 Spring 用户大量令人兴奋的新发布,而就在今天,又传来了一个也许是最令人兴奋的消息。如果您没有收到,比如因为您不是 SpringSource Tool Suite 的注册用户,那么这里是主要内容:
下周二,4 月 12 日,VMware 将举办一场网络研讨会——“Spring 拥抱云!”——并给出引人入胜的解释:“Spring 已经简化了企业 Java 开发。接下来是云开发。”
使用 RabbitMQ 实现性能和可伸缩性的路由拓扑
为高度可扩展系统设计一个良好的路由拓扑就像绘制一个图。需要考虑很多事情,例如问题本身、环境的限制、消息实现方法的限制以及性能策略。我们经常遇到的问题是路由在适应我们的需求方面缺乏灵活性和表达力。这正是 RabbitMQ 脱颖而出的地方。
基本概念
任何熟悉通用消息传递的人都知道从 A 到 B 的消息路由概念。路由可以是简单的,也可以是相当复杂的,在为可扩展的复杂系统设计路由拓扑时,它必须优雅。保持干净和解耦,组件可以在不同负载下良好地进行流量控制。这可以表示为简单的地图或复杂的图。在其最简单的形式中,路由拓扑可以表示为节点,例如层次结构节点对于 RabbitMQ 或 AMQP 的新手(请注意,Rabbit 支持多种协议,包括 STOMP、HTTP、HTTPS、XMPP 和 SMTP),这里有一些基本组件的描述- 交换机 (Exchange) 服务器内的实体,接收生产者应用程序的消息,并可选择将这些消息路由到服务器内的消息队列
- 交换机类型 (Exchange type) 特定交换机模型的算法和实现。与服务器内接收和路由消息的实体“交换机实例”相对
- 消息队列 (Message queue) 命名实体,保存消息并将其转发给消费者应用程序
- 绑定 (Binding) 在消息队列和交换机之间建立关系的实体
- 路由键 (Routing key) 交换机用于决定如何路由特定消息的虚拟地址
api.agents.agent-{id}.operations.{operationName}
在更复杂的情况下,路由键可以与基于消息头字段和/或其内容的路由结合使用。交换机检查消息的属性、头字段、正文内容以及可能来自其他来源的数据,然后决定如何路由消息。从上述路由键概念派生的绑定模式可能类似于 api.agents..operations.
,其中我们将交换机 E1
与队列 Q1
绑定,使用绑定模式 api.agents..operations.
,以便发送到 E1
的任何消息都路由到 Q1
...