it177模板网(www.it177.com)精品网站源码,织梦建站模版,游戏源代码分享平台

模板户源码

当前位置:首页 -> CMS教程 -> WP教程 正文

使用 Spring 将 GemFire 融入您的 Java 应用

时间:2019-03-16 08:25:19 [整站源码]作者:zhaopulei


Jagdish Pivotal


本篇文章探讨了为什么 Spring(包括其生态系统)是适合将 GemFire 融入 Java 应用架构的优秀环境。后续我们还会发布系列文章更深入地介绍有关如何做到这一点的最佳做法、工具和技巧。我们接下来将通过多篇文章为您介绍将 GemFire 融入 Java 应用架构的知识。


果您是一位 Java 开发人员,您可能正在使用 Spring Framework。各种市场研究证实了 Spring 的市场支配地位和持续的指数级增长。Spring 的魅力主要在于其广泛的覆盖范围,包括支持融入多种数据存储,比如 Pivotal GemFire,这是一种内存中数据网格 (IMDG)。

 

随着诸如 GemFire 之类的 IMDG 技术的日趋成熟,应用开发人员迫切希望确定如何才能最好地使用这些技术,并从数据中获取价值。GemFire 的功能可以为您的应用增添可观的价值。在深入了解细节之前,您可能对帮您实现目标的方法、最佳做法和框架有一些疑问。


我们先谈谈 Spring Framework。


Spring Framework 的核心

Spring 的优势蕴含在许多方面:从初始开发到对代码的日常生命周期管理。通过减少大量开销,Spring 使得开发人员能够腾出时间专注于应用逻辑。我们不可能(也没有必要)在这里介绍 Spring 的所有优势。幸运的是,随着 Spring 以爆炸性的速度流行起来,已经出现了大量关于它的信息,无论是网上还是书籍中,都有详尽而全面的论述。以下重点介绍一些突出的功能。


依赖注入,也称为控制反转 (IoC),它支持对象之间的松散耦合。这使得开发人员能够通过在模拟对象中传递依赖关系来测试对象。类似地,也可以向一个项目添加类,因为类都是相互隔离且独立的。这些对象的生命周期管理可以单独进行,因为它们是松散耦合的。


面向方面的编程 (AOP) 在面向对象的编程达到极限时应运而生。AOP 解决的是“横切”问题,比如事务管理、安全性、日志等。这些问题存在于应用的各个层中,也就是无法完全用面向对象编程的模块结构来解决的问题。


有效处理样板代码消除恼人的工作效率拖累因素 - 由于必须在各个地方重复插入相同代码而产生的开销。Spring 模板提供了使用许多 API(比如 JDBC、JMS、事务等)所需的样板代码和错误处理功能。约定优于配置的概念简化了环境设置中的高度可变性。


这些都只是初始概念,Pivotal 的 Spring 网站有更详尽的介绍,您可以去看一看。


Spring 生态系统的妙用无穷


Spring 的模块性可让您从广泛的项目生态系统中进行挑选,以便从各个方面加快应用的开发速度。将这些项目恰当结合,产生的优势将超过简单的叠加。如果您要在应用架构中融入 GemFire,那么其中必不可少的核心项目包括 Spring Boot、Spring Data (GemFire) 和 Spring Cloud DataFlow。其他项目也不应忽视,因为它们也能解决相应的问题;这里只介绍一些不可或缺的项目,其他不再赘述。


Spring Boot


Spring Boot 的作用是解决低级的基础架构问题,让您轻松启动应用设置和配置。效果如何呢?只需几行代码,您就可以开始一个功能齐全的 Spring 应用。Spring Boot 开箱即用,但如果您面临的要求发生变化,也允许您覆盖默认值,从而获得足够的灵活性。


Spring Boot 是一个完整的端到端应用框架,在核心 Spring Framework 上进行扩展和构建,将广泛的功能整合到一个企业随时可用的整体全包式解决方案中,用以解决许多应用问题。Spring Boot 涵盖以下领域:从简单的数据访问一直到复杂的事务管理、分析、安全性、管理/监控(指标)等等,足以应对所有的事务和分析用例。Spring Boot 的依赖关系管理可以插入到您选择的构建系统(即 Maven 或 Gradle)中,以提供全面、可控且经过测试的依赖关系集。


开发人员经常会因为很多非功能性的功能而停滞不前。Spring Boot 针对一大类项目(例如,嵌入式服务器、安全性、运行状况检查、外部配置)涵盖了这些非功能性要求。


Spring Boot 会根据在您的类路径中找到的内容提供明智的资源配置选项。如果您的 Maven POM 包括 JPA 依赖关系和 PostgreSQL 驱动程序,Spring Boot 会基于 PostgreSQL 设置一个持久性单元。如果您已经添加了 Web 依赖关系,您将获得 Spring MVC 以及配置了合理默认值的 Web 容器。Spring Boot 大量使用默认值。如果您想获得持久性,但没有指定任何其他内容,Spring Boot 将配置 Hibernate 作为 JPA 提供商,并提供 HSQLDB 数据库。如果您正在引导一个 Web 应用,但没有指定任何其他内容,Spring Boot 将针对 Thymeleaf 模板系统配置一个视图解析器。在大多数情况下,更改默认值只需更改类路径即可。


Spring Data


Spring Data 通过提供标准的数据库(无论哪种数据库)访问方法,为您的代码增加可移植性。在没有标准方法的情况下,如果您想切换数据库,每个数据库的唯一性和独特性会导致许多地方的代码发生更改。


Spring Data 让数据库更改变得更容易。例如,在 JPA 实施中,要将 MySQL 定向到 GemFire,您只需更改几个注释,一行 Java 代码都不用改,只改几个注释就可以啦。由于您能轻松更改目标数据库,因此发生重大风险的几率显著降低。


那么,Spring Data 如何处理后端多样性呢?这需要用到一个名为 Spring Data Repository 的工具。这个 Repository 位于客户端逻辑和数据库之间。Repository 可提供单独的专有接口层,这些接口层可到达所有受支持的后端数据库。GemFire Repository 随附在 Spring Data GemFire (SDG) 中,并且开箱即用。


除了可移植性,Spring Data 还解决了必须应对每个数据库的独特性和唯一访问模式这种令人恼火的问题。作为开发人员,当您与所有这些技术通信时,只需使用通用的接口、贯彻通用的理念。例如,在您调试代码时,根本不必考虑每个后端数据库及其工作原理。

 

传统的对象关系映射层(例如 Hibernate 或 JPA)在这方面表现不佳,例如,这些 ORM 不支持需要从 GemFire 这样的 IMDG 访问数据的功能。Spring Data 采用一种可以保留多样性以及每个数据库独特优势的方法,而不是采用一刀切式的解决方案。

Spring Data 是一个伞型项目,其中包含许多针对特定数据库的子项目。Spring Data 为数据访问提供了一种熟悉且一致的基于 Spring 的编程模型,同时保留了底层数据库的独特性。Spring Data 支持各种数据库技术(包括 Pivotal GemFire),您可以使用 Pivotal SDG 将其融入您的应用中,这将在下文中单独进行更详细的介绍。


无论是哪种数据库,您都很有可能会使用一些核心功能(比如 CRUD 操作)。Spring Data 添加了一个简单的接口以及一系列查询或查找方法。例如,如果您想通过 JPA 实施 Oracle,则可以使用 Spring Data 来实施查找方法(例如,按照姓氏和名字查找)。这些查找方法的代码非常简单,其中所需的大部分会在实施数据库存储库时自动创建。

 

所有受支持数据库的所有原生查询都受支持,因此,Spring Data 并不会将一切内容都同质化为一组常用函数。作为开发人员,您可以选择所需的查询类型,例如针对 GemFire 的 OQL 查询,或者针对传统 SQL92 数据、Mongo 数据库等的问题查询。


Spring Cloud DataFlow


现代应用采用微服务集合的形式进行构建,这引发了一个问题:如何定义和管理跨这些微服务的迁移数据。通过 Spring Cloud DataFlow (SCDF) 可以实现这种数据编排方式。GemFire 可以充当 SCDF 的来源或 Sink。


SCDF 是一种云原生数据框架,可针对云中或本地的数据微服务,定义最佳做法并统一流和批处理。通过它,开发人员可以使用一个编程模型,针对常见用例(例如数据采集、实时分析和数据导入/导出)来创建、编排和重构数据管道。


通常来说,Web 或移动应用的开发人员倾向于按照现代软件开发模式开展工作;另一方面,对于那些需要处理大量数据的开发人员来说(例如数据工程师和数据科学家),他们常用的开发方法更加传统,因为他们不具备可实现持续交付的工具和技术。SCDF 弥补了这一缺憾,它提供的开发和运营模型可以重塑以数据为中心的用例。这些以数据为中心的用例可以由松散耦合的微服务组成,并且可以灵活地独立发展,因此为持续交付奠定了基础 - 这是企业数据转型之旅中的关键一步。


SCDF 产生并包含一个项目生态系统,这个生态系统接纳包含松散耦合服务的微服务方法。Spring Cloud Stream 可让开发人员快速开发事件驱动的微服务。Spring Cloud Task 支持需要某些形式的 ETL/ELT 管道的数据架构,比如机器学习,其中模型培训始终在离线数据管道上运行,因为它需要几个小时甚至几天时间才能完成。


   Spring Data GemFire 是您最好的起点


SDG 可让开发人员使用 Pivotal GemFire 作为分布式数据管理平台来构建 Spring 支持的高度可扩展应用。SDG 将 Spring Framework 的全部功能引入您的 GemFire 应用中。


传统的在 Java 应用中融入 GemFire 的方法是使用 XML 文件,比如 Spring XML 或 GemFire 的原生 cache.xml。在这两种 XML 格式之间进行选择时有几个注意事项。此外还有一个备选方法:使用 Java 配置。采用由 SDG 支持的 Java 配置方法可提供类型安全和工作效率优势,这使其成为更好的选择。Java 配置方法注重将 Spring Framework 强大的非侵入性编程模型和概念与 Pivotal GemFire 相整合,从而简化配置、开发流程并提供高级抽象化。


SDG 为引导、配置、初始化和访问 GemFire Cache、Cache Region、Cache Server 以及相关的分布式系统组件提供了配置支持。SDG 支持 GemFire API 与 Spring 中提供的各种数据访问功能(例如事务管理和异常转换)之间的集成。


实体可使用 Spring Data Repository 抽象进行映射、持久化和查询。Spring Data Repository 抽象的目标是显著减少为各种持久化存储实施数据访问层所需的样板代码的数量。


SDG 为很多任务提供注释,包括基于注释的配置模型、实体映射、OQL 查询扩展和执行、函数定义和执行,等等。


与 Spring 项目提供的很多其他高级抽象一样,SDG 提供了一个可简化 GemFire 数据访问的模板,此模板是一个基于 Template Design Pattern 的工具类或辅助类,可用于从 GemFire 访问数据。这个类提供了一些一行代码,用于执行常见的 Cache Region 操作;此外还能够针对原生 GemFire API 执行代码。


后续的文章将深入介绍将 GemFire 融入 Java 应用的最佳做法。我们会更全面地探讨各种方案,并说明每种方法的最佳用途。敬请关注。


Jagdish Mirani

Jagdish Mirani 是 Pivotal 企业软件部门的主管,在产品管理和产品营销方面拥有丰富的经验, 博学多才、技能娴熟的产品营销和产品管理专业人士,在了解企业客户需求以及开发有影响力的产品和制定进入市场策略方面拥有成熟的专业知识。无论是产品管理还是产品营销,我都能够熟练地采取市场驱动的方法来制定产品策略和路线图,或者建立定位和宣传框架。



    发送中

    本文标签:AutoTags插件服务端需要您提供购买者的账号和密码才能继续访问  折翼天使  莎莎源码  吾爱源码  其他源码 

    转载请注明来源:PHP手机端发卡多种支付商业版源码

    本文永久链接地址:https://www.suibianlu.com/11942.html

    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
    若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法链接失效或侵犯版权,请给我们来信:admin@suibianlu.com

    栏目导航
    最新文章
    热门文章
    Top