SpringOne2GX 2013 回放:构建大型应用程序的陷阱
录制于加州圣克拉拉举行的 SpringOne2GX 2013
演讲者:Jeffery Sologov, ADP
依赖网络可靠性和拓扑结构只是大多数工程师犯的少数错误之一。分布式计算的常见谬误是工程师在构建企业软件时需要牢记的最重要因素之一。我们将介绍每种谬误,同时展示大多数工程师犯的错误。然后,我们将介绍耦合的真正含义,以及如何判断当前项目是否正在走向错误的方向。最后,我们将应用至今仍然适用的面向对象方面的知识,并学习如何将其应用于新时代的架构。不要从自己的错误中学习,要从别人的错误中学习,并掌握可以立即应用于当前项目的技术。这是我年轻时希望参加的会议。
在 http://projects.spring.io/spring-framework 了解更多关于 Spring Framework 的信息
!{iframe width="560" height="315" src="//www.youtube.com/embed/REgbIZn1F5g" frameborder="0" allowfullscreen}{/iframe}
SpringOne2GX 2013 回放:如何错误地测量延迟
录制于加州圣克拉拉举行的 SpringOne2GX 2013
演讲者:Gil Tene, Azul
时间就是金钱。了解应用程序的响应性和延迟不仅对于提供良好的应用程序行为至关重要,而且对于保持盈利能力和控制风险也至关重要。但是,对不良数据进行良好的表征是无用的。当响应时间测量呈现虚假或误导性的延迟信息时,即使是最好的分析也可能导致错误的运营决策和糟糕的应用程序体验。在本演示文稿中,Gil Tene(Azul Systems 首席技术官)讨论了在测量和表征延迟时遇到的一些常见陷阱。Gil 演示并讨论了一些导致报告结果严重不正确的错误假设和测量技术,并介绍了检查和纠正这些情况的简单方法。他讨论了使用标准差测量值的谬误、延迟的强多模态性质、大多数计算平台中存在的常见不连续性,以及背压和协调数据遗漏问题如何字面上使测量结果产生数量级的偏差。Gil 介绍并演示了如何使用简单且最近开源的工具来改进延迟测量和报告,并获得更高的信心。
在 http://projects.spring.io/spring-framework 了解更多关于 Spring Framework 的信息
!{iframe width="560" height="315" src="//www.youtube.com/embed/0b3sR32m0nU" frameborder="0" allowfullscreen}{/iframe}
本周 Spring - 2014年6月3日
欢迎阅读最新一期的《本周 Spring》。本周是令人兴奋的一周!好吧,老实说,每周都很令人兴奋。但特别是,本周会让很多人开心。关注博客,下周我在这里等你回顾!:)
- 天哪!Spring Boot 1.1.0.RC1 现已发布!新版本延续了辉煌,支持 Spring Data Elasticsearch、HornetQ 和 Spring Social,以及更多内容!获取最新版本,试用一下,并在Twitter或GitHub上提供反馈。
- Mark Pollack 博士刚刚宣布,最新版本的Spring XD 1.0.0.M7 现已发布。新版本提供了许多出色的新功能。我最喜欢的是能够将数据固定到某个流——可以将其视为使用消息内容进行关联——这样您就可以保留有状态的操作。将其视为一种极好的方式,可以根据有用的业务键来路由和划分消息。发布说明中有一个很棒的示例。
- Azul 的明星人物 Gil Tene 在 SpringOne2gX 2013 上发表了一场关于减少延迟的精彩演讲,现在可以在线观看。Gil 是我们行业里的疯狂科学家之一。我还没有看过这场演讲,但我会看,并且强烈建议您也看。Azul 生产高性能、低延迟的 JVM,既有设备形式,也有可交付软件形式。因此,他的演讲源于大量的无回报的研究和开发,我宁愿通过观看和学习他的演讲来节省自己的时间和精力。加油,Gil!
- 六月网络研讨会来了!Michael Minella 将于 6 月 10 日主讲Spring Batch 3.0.0,Glenn Renfro 将于 6 月 17 日主讲Spring Integration Done Boot-ifully。
- Spring 忍者 Greg Turnquist 在他的 SpringOne2GX 2014 演讲之前,发布了一篇预告文章,介绍了如何在前端 REST 客户端中使用出色的
when.js
Promises/A+ 实现。查看这篇文章并参加他在会议上的演讲! - Ramnivas Laddad,Spring 忍者,原 AspectJ 领导者,Cloud Foundry 的架构师之一,刚刚发布了一篇关于 Spring Cloud 的精彩文章,它使得在各种平台即服务 (PaaS) 上消费来自不同中间件/基础设施服务(数据库、消息队列)的客户端服务,成为一个简单的平台解耦配置问题。
- ADP 的 Jeffery Sologov 关于构建大型应用程序的陷阱的演讲回放现已上线!快看看吧!
- ttp://twitter.com/JakubJirutka 插话告诉我们这个由 Spring Expression Language (SpEL) 提供支持的Bean Validation API (JSR 303/349) 实现是如此史诗级。GitHub 提供了一个有趣的观点,“它对于使用普通 Bean Validation 难以实现的跨字段验证特别有用。” 我也喜欢这些示例。
@SpELAssert(value = "password.equals(passwordVerify)", applyIf = "password || passwordVerify", message = "{validator.passwords_not_same}") public class User { private String password; private String passwordVerify; }
干得好!
向发现这个的杰出人物 Brian Dussault 致敬:Zuul 是一个很棒的应用程序配置管理解决方案,提供了一个简洁的 Spring 客户端 API。
- 知道昨天让我开心的是什么吗?一个
HystrixInvocationHandler
。InvocationHandler
被 JDK(以及 Spring 丰富的代理子系统)用来创建包装 Bean 的代理。这个InvocationHandler
将给定 Bean 上的方法调用包装在 Netflix 开源项目 Hystrix 的Command
对象中。HystrixCommand
包装功能并提供/支持弹性模式。我迫不及待地想看到 Spencer Gibb 的 Halfpipe 项目会发展成什么样! - 我们的朋友 David Welch 又来了,这次带来一个名为 Spring Tiered 的有趣项目,旨在进一步简化(并规范化)基于 HATEOAS 的服务开发。有意思...
- 另外,说到构建(和消费)弹性服务,请查看Chris Richardson在 SpringOne2GX 2013 上关于异步消费 Web 服务的强大抽象的精彩演讲。
- 另外,我写了一篇关于使用 Maven(及替代方案)和 Spring 入门的文章。
Spring Boot 1.1.0.RC1 现已发布
Spring Boot 1.1.0.RC1 现已在 Spring 仓库中发布。有一些新功能和一些新的文档。
-
对 Spring Data Elastic Search, HornetQ 消息传递, Spring Social 的自动配置支持
-
Groovy CLI 中对
@IntegrationTest
的支持 -
升级到 Tomcat, Spring Integration, Reactor 和 Groovy
我们计划在接下来的两周内发布 GA 版本,所以请尽快试用 RC1 并在 github 上提供反馈。
使用新的 when.js 3.2.2 为 Spring Data REST 构建前端
Spring 社区的朋友们,你们好!
Roy Clarkson 和我将在今年的 SpringOne 2014 会议上发表一个名为Spring Data REST - 数据遇到超媒体的演讲。我们将探讨如何快速弥合强大的 Spring Data 后端与启用超媒体的 RESTful 前端之间的差距。
在演讲的一个部分,我们将深入研究一个 JavaScript 前端,该前端允许用户拍照并将照片上传到网站。网站会反过来从后端获取图像。得益于 Spring Data REST 提供的功能齐全的 RESTful API,这本身并不难。
但是,直接获取多张图片效率不高,并且容易导致网页浏览器冻结。感谢我们团队的 CujoJS 成员(Brian Cavalier 和 John Hann),我能够使用最近发布的 when.js 模块…
Spring Web Flow 2.4.0 和 2.3.4 已发布
我很高兴地宣布 Spring Web Flow 2.4.0 和 2.3.4 双版本发布。
有关 2.4.0 版本的概览,请参阅参考文档的“新特性”部分。2.3.4 版本是一个次要维护版本,主要修复了 JSF 用户报告的问题。
Spring Tool Suite 和 Groovy/Grails Tool Suite 3.6.0.M1 发布
亲爱的 Spring 社区成员:
我很高兴地宣布 Spring Tool Suite (STS) 和 Groovy/Grails Tool Suite (GGTS) 的第一个里程碑版本 3.6.0.M1 已发布。
此里程碑构建的亮点包括
- 基于 Eclipse Luna 4.4
- 支持 Groovy 2.3
- 更新至 Grails 2.4
- 更新至 tc Server 2.9.6
- Gradle 工具的小幅改进
- bug 修复,包括无限构建循环和内存泄漏的修复
如需下载发行版,请访问
- Spring Tool Suite: https://springframework.org.cn/tools/sts/all
- Groovy/Grails Tool Suite: https://springframework.org.cn/tools/ggts/all
注意:这两个工具套件仅以基于 64 位 zip 文件的最新 Eclipse Luna 4.4 发布候选版本提供。我们计划不再提供安装程序和 32 位发行版。更新站点将可用于较旧的 Eclipse 版本和 32 位安装。
我们非常渴望听到关于此更改的任何反馈。
3.6…
Spring Batch 3.0.0 现已正式发布 (GA)
今天我们很高兴地宣布 Spring Batch 3.0 发布。此版本的 Spring Batch 提供了对 JSR-352 的支持——我们致力于提供该支持,以及为现有 Spring Batch 社区提供许多新功能。
Spring Batch 3.0 中的功能
此版本的主要功能包括
- JSR-352 支持
- 将 Spring Batch 集成提升到 Spring Batch 中
- 彻底 overhaul 依赖项
- 支持 SQLite
- Job 作用域
- 删除“archetypes”,转而支持 Spring Boot
- 将构建 Spring Batch 的方式从 Maven 切换到 Gradle
JSR-352 支持
JSR-352 是 JEE7 中最重要的新功能之一,它将批处理标准化引入 Java 技术栈。Spring 团队不仅在专家组中有两名成员为规范提供了广泛输入,而且 Spring Batch 是大多数编程模型的灵感来源。Spring Batch 3.0 通过提供经过最多生产环境测试的代码库来实现了此规范,从而延续了 Spring 对 JSR-352 的承诺。
需要注意的是 JSR-352 和 Spring Batch 之间存在差异。JSR-352 提供了三样东西
- 用于构建批处理组件的 API
- 用于配置批处理组件的基于 XML 的 DSL
- 批处理组件如何交互的契约
JSR-352 没有提供批处理组件的任何实现。Spring Batch 提供了 17 个 reader、16 个 writer 以及无数其他在企业生产环境中经过多年测试的实用程序和扩展。Spring Batch 提供了超出单个 JVM 的可扩展性选项。最后,Spring Batch 通过 Spring for Apache Hadoop 项目以及作为 Spring XD 的基石提供了大数据支持。
要阅读更多关于 Spring Batch 实现 JSR-352 的信息,请访问我们的参考文档:https://docs.springframework.org.cn/spring-batch/trunk/reference/html/jsr-352.html
将 Spring Batch Integration 提升到 Spring Batch 中
从外部来看,何时使用 Spring Batch 以及何时使用 Spring Integration 可能会令人困惑。说实话,并非总是有一个明确的“二选一”答案。在许多情况下,结合使用这两种技术是提供健壮、可伸缩解决方案的最佳选择。这就是开发 Spring Batch Integration 的原因。作为 Spring Batch 扩展的集合,该模块允许开发人员使用 Spring Integration 来扩展 Spring Batch 的功能。通过此模块,无需自定义代码和最少配置即可提供多 JVM 可伸缩性以及消息驱动的 Job 启动等功能。
Spring Batch Integration 中提供的功能扩展了 JSR-352 所提供的批处理能力,能够提供健壮的企业级解决方案。您可以在此处阅读更多关于 Spring Batch Integration 及其组件的参考文档:https://docs.springframework.org.cn/spring-batch/trunk/reference/html/springBatchIntegration.html。
彻底 overhaul 依赖项
作为 Spring 全系列持续努力的一部分,Spring Batch 的第三方依赖项已更新。这使得 Spring Batch 用户能够使用他们信赖的最新最好的库。
支持 SQLite
大多数集成测试场景都使用 HSQLDB 作为数据源,因为它能够轻松创建内存数据库。然而,有时一个简单的、单个文件的选项会更好。因此,我们将 SQLite 添加为 Spring Batch 仓库支持的数据库。
Job 作用域
Spring Batch 提供了两种自定义 Bean 作用域。第一个是 Step 作用域,多年来一直用于延迟 Bean 初始化,直到使用该 Bean 的 Step 执行时才进行。在 Spring Batch 3.0 中,我们添加了 Job 作用域。这将允许延迟初始化 Job 级别的组件(例如 JobExecutionListeners),并为这些组件提供 Job 参数注入等功能。您可以在此处的参考手册中阅读更多关于 Job 作用域的信息:https://docs.springframework.org.cn/spring-batch/trunk/reference/html/configureStep.html#job-scope。
删除“archetypes”,转而支持 Spring Boot
Spring Batch 传统上提供了一个 Maven 示例项目作为启动 Spring Batch 项目的一种方式。借助 Spring Boot,我们取消了这些项目,转而使用 Spring Boot 提供的动态引导能力。我们相信 Boot 提供了一种远优于旧“archetypes”提供的选项。
从 Maven 迁移到 Gradle
最后,此版本是 Spring Batch 首次将其内部构建系统从 Maven 迁移到 Gradle。此更改对使用 jar 包的开发人员没有影响。Maven 用户仍然可以通过 Maven Central 获取它们。
展望未来
通过此版本,我们期待着规划和开发 3.1 版本。3.1 版本将有两个主要主题:简化和支持 Spring XD 的工作。
在简化方面,我们希望将 Spring Batch 的可用性提高到可以考虑用于不太“繁重”的流程。通过在此处重点关注,它允许开发人员“发展”解决方案。许多时候,从简单脚本开始的事情会演变为企业需要依赖的关键任务功能流程。我们希望 Spring Batch 在脚本阶段就成为一个考虑选项,以便当该功能需要企业级解决方案时,它已经存在。
除了核心的 Spring Batch 功能,Spring Batch 还作为 Spring XD 的核心技术。我们将继续扩展 Spring Batch 的功能,通过 Spring XD 和 Spring for Apache Hadoop 支持大数据解决方案。
结论
3.0.0 版本标志着 Spring Batch 下一个重要里程碑的完成。它为我们的社区带来了 JSR-352 提供的标准,并为高级用户提供了详尽的附加功能集合。我们期待在论坛、社交媒体以及SpringOne2GX现场收到您的反馈!
本周 Spring - 2014年5月27日
欢迎阅读最新一期的《本周 Spring》!在美国,我们度过了三天的周末,非常愉快。这是一个观看那些精彩技术演讲的好机会!如果您像我一样,已经看完了所有的技术演讲,那么您会很高兴看到我们今天又上线了很多!
- Grails 项目负责人 Graeme Rocher 刚刚宣布 Grails 2.4 发布!新版本令人惊叹的原因很多,其中重要的一点是,它的许多出色功能也很容易与 Spring Boot 一起使用。双赢!祝贺 Graeme 和团队。(另外,感谢您,又一个出色的版本!)
- Spring Boot 1.1.0.M2 现已发布!新版本改进了对 Spring Data Solr、Spring Data Gemfire 和整个 Spring Data Dijkstra 发布系列的支持。新版本还提供了 GSP (Groovy Server Pages) 和 Velocity 作为模板选项,并升级了各种库,例如 Spring Security 3.2.4 和 Spring Batch 3.0。这个发布系列进展很快,请尽快加入!还有很多很棒的东西,请查看发布说明。
- 六月网络研讨会来了!Ramnivas Laddad 将于 6 月 3 日在使用 Spring Cloud 抽象 PaaS 服务使其可移植中发布 Spring Cloud,Michael Minella 将于 6 月 10 日主讲Spring Batch 3.0.0,Glenn Renfro 将于 6 月 17 日主讲Spring Integration Done Boot-ifully。
- 这篇博客介绍了 Hibernate 内置 JDBC 日志的一些限制,然后介绍了在简单的 Spring / Hibernate 应用程序中使用的log4jdbc。
- 我们的朋友 Eugen Paraschiv 写了一篇非常好的 Spring Data JPA 入门文章。
- Vaadin 团队的 Matti Tahvonen 撰写了这篇出色的文章,介绍了如何使用 Spring Data Neo4j、Spring Boot,当然还有 Petter Holmström 和我创建的Vaadin4Spring 库。说实话,它之所以能用完全是 Petter 的功劳 :) 实际上非常好用,以至于 Matti 能够非常快速地构建出一些漂亮的东西 - Bootiful。看看吧!该应用程序对存储在 Neo4j 中的数据进行建模(并可视化!),所以它不仅仅是普通的 CRUD 应用,这真是非常酷!
- CloudFoundry 忍者 James Bayer 宣布发布新的 Pivotal CF 1.2,该版本现在支持 VMWare 的混合云服务、初始审计和自动伸缩、新的数据服务(Redis、MongoDB、Neo4j、RiakCS 和 ElasticSearch 都可用!)以及更多内容!
- 好奇心被激发了吗?想了解更多关于 Pivotal 的开源 PaaS CloudFoundry 的信息吗?请查看 SpringOne2GX 2013 上关于如何使用 BOSH 构建您自己的 PaaS 的精彩视频。并听听其他团队在 SpringOne2GX 回放中是如何实际做到的 - 使用 CloudFoundry 解放自己:私有云体验。
- 数据忍者 Thomas Risberg 刚刚宣布发布新的Spring for Apache Hadoop RC4 版本,这太棒了!新版本改进了 Spring YARN 集成。YARN 自然是 Hadoop 2.0 非常具体的 map/reduce 支持现在所依赖的分布式通用运行时。不过,您可以将 YARN 用于自己的任务分发。例如,您可以使用 YARN 来分解 Spring Batch 工作负载。在新示例中,Janne Valkealahti 展示了一个由 Spring Boot 支持的简单 Spring YARN 组件。现在这些东西的简洁程度真是惊人!
- 想了解更多关于 Janne Valkealahti 的信息吗?他是我们 Spring YARN 支持背后的疯狂(数据)科学家。查看这篇Pivotal人物简介!
- Spring Data 负责人Oliver Gierke 很好地介绍了 Spring Data Dijkstra 的新亮点,这是新的 Spring Data 伞形发布。此版本包括 Java 8
Optional
支持、异步存储库方法调用等。 - Spring Security 负责人 Rob Winch 刚刚发布了两个小型的错误修复版本: Spring LDAP 2.0.2 和 Spring Security 3.2.4。
- Spring Web Services 负责人 Arjen Poutsma 刚刚宣布发布 Spring Web Services 2.2.0,该版本现在包含 Java 配置 API 以及更多功能。
- 让我借此机会提醒大家:Java 配置无处不在!Spring framework、Boot、Data、Security、MVC、Integration、Batch、Social 等等,都提供了与 XML 一样丰富的 Java 配置集成。对于 Boot,Java 配置是唯一的开箱即用选项,当然如果您愿意也可以使用 XML。只是...不太推荐。
- Spring Security 负责人还撰写了关于使用 Spring Security Test 处理 Web 安全的博客。
- 想编写自己的 Spring Boot starter 吗?看看 Spring 忍者 Stephane Nicoll 关于如何为 Spring Boot 提供 HornetQ starter 的示例。
- 终于,Spring Social Google 1.0.0.GA 已发布!祝贺 Gabriel 完成所有这些工作。我也喜欢那个易于使用的示例。
- Arnaud Giuliani 写了一篇关于如何将 GWT 与 Spring Boot 一起使用的非常酷的文章。做得好,Arnaud!
- Netflix 工程师 Tomas Lin 在推特上分享了一个链接,指向一个方便的 REST API Spring MVC 异常处理程序。这是解决这个问题的一种(不错的)方法。作为替代方案,我建议您看看 [使用 Spring HATEOAS 的
VndError
(s
) 支持]a)。