当前位置: 首页 > 工具软件 > Apache Geode > 使用案例 >

Apache Geode 1.1 简介

华锦
2023-12-01

关于Apache Geode

Apache Geode是一个数据管理平台,可在广泛分布的云架构中提供对数据密集型应用程序的实时,一致的访问。

Geode跨多个进程汇集内存,CPU,网络资源和可选的本地磁盘,以管理应用程序对象和行为。它使用动态复制和数据分区技术来实现高可用性,改进的性能,可伸缩性和容错性。除了作为分布式数据容器之外,Geode还是一个内存数据管理系统,可提供可靠的异步事件通知和有保证的消息传递。

主要概念和组件

缓存是描述Geode集群中的节点的抽象。应用程序架构师可以在对等或客户端/服务器拓扑中安排这些节点。

在每个缓存中,您可以定义数据区域。数据区域类似于关系数据库中的表,并以分布式方式管理数据作为名称/值对。复制区域在群集的每个缓存成员上存储相同的数据副本。分区区域在缓存成员之间传播数据。配置系统后,客户端应用程序可以在不了解底层系统体系结构的情况下访问区域中的分布式数据。您可以定义侦听器以创建有关数据何时更改的通知,并且可以定义到期条件以删除区域中的过时数据。

对于大型生产系统,Geode提供定位器。定位器提供发现和负载平衡服务。使用定位器服务列表配置客户端,定位器维护成员服务器的动态列表。默认情况下,Geode客户端和服务器使用端口40404相互发现。

有关产品功能的更多信息,请参阅Apache Geode的主要功能

主要功能特性

高读写吞吐量

读写吞吐量由并发主存储器数据结构和高度优化的分发基础结构提供。应用程序可以通过同步或异步复制在内存中动态复制数据,以实现高读取吞吐量,或者跨多个系统成员对数据进行分区,以实现高读写吞吐量。如果数据访问在整个数据集中相当平衡,则数据分区会使聚合吞吐量翻倍。吞吐量的线性增加仅受骨干网容量的限制。

低且可预测的延迟

优化的缓存层最大限度地减少了线程和进程之间的上下文切换。它管理高度并发结构中的数据,以最大限度地减少争用点。如果接收器可以跟上,则与对等成员的通信是同步的,这使得数据分发的延迟保持最小。服务器以序列化形式管理对象图,以减少垃圾收集器的压力。

订阅管理(兴趣注册和连续查询)在服务器数据存储之间进行分区,确保仅为所有感兴趣的客户端处理订阅一次。由此带来的CPU使用和带宽利用率的提高可提高吞吐量并减少客户端订阅的延迟。

高可扩展性

通过跨多个成员动态分区数据并在服务器之间统一分布数据来实现可伸缩性。对于“热”数据,您可以将系统配置为动态扩展以创建更多数据副本。您还可以将应用程序行为配置为以分布式方式运行,并且与其所需的数据非常接近。

如果您需要支持高并且不可预测的并发客户端负载突发,您可以增加管理数据的服务器数量,并在它们之间分配数据和行为,以提供统一且可预测的响应时间。客户端根据服务器在其负载条件下的持续反馈,不断对服务器场进行负载平衡。通过跨服务器分区和复制数据,客户端可以动态移动到不同的服务器,以统一加载服务器并提供最佳响应时间。

您还可以通过实现对外部数据存储(如数据库)的数据更改的异步“后写”来提高可伸缩性。这可以通过按顺序冗余排队所有更新来避免瓶颈。您还可以混合更新并将它们批量传播到数据库。

持续可用性

除了保证内存中数据的一致性副本之外,应用程序还可以使用“无共享磁盘体系结构”将数据同步或异步地保存在一个或多个成员上的磁盘上。所有异步事件(存储转发事件)至少是冗余管理的两个成员,如果一个服务器发生故障,冗余的服务器将接管。所有客户端都连接到逻辑服务器,并且客户端在故障期间或服务器无响应时自动故障转移到组中的备用服务器。

可靠的事件通知

发布/订阅系统提供数据分发服务,其中新事件被发布到系统中并以可靠的方式路由到所有感兴趣的订户。传统的消息传递平台专注于消息传递,但接收应用程序通常需要在处理事件之前访问相关数据。这要求他们在事件传递时访问标准数据库,以数据库的速度限制订阅者。

数据和事件通过单一系统提供。数据作为一个或多个分布式数据区域中的对象进行管理,类似于数据库中的表。应用程序只需在数据区域中插入,更新或删除对象,平台就会将对象更改传递给订阅者。接收事件的订户可以直接访问本地存储器中的相关数据,或者可以通过单跳从其他成员之一获取数据。

数据存储上的并行化应用程序行为

您可以在成员上并行执行应用程序业务逻辑。数据感知功能执行服务允许在成员上执行任意的,依赖于数据的应用程序功能,其中数据被分区以用于参考和缩放的位置。

通过合并相关数据并并行化计算,可以提高整体吞吐量。计算延迟与可以并行化的成员数成反比。

基本前提是将功能透明地路由到承载功能所需的数据子集的应用程序,并避免在网络上移动数据。应用程序功能只能在一个成员上执行,在成员子集上并行执行,或在所有成员上并行执行。此编程模型类似于Google的流行Map-Reduce模型。数据感知功能路由最适合需要迭代多个数据项的应用程序(例如查询或自定义聚合功能)。

无共享磁盘持久性

每个集群成员独立于其他成员管理磁盘文件上的数据。一个成员中的磁盘故障或缓存故障不会影响另一个缓存实例在其磁盘文件上安全运行的能力。这种“无共享”持久性体系结构允许对应用程序进行配置,使得不同类别的数据持久保存在整个系统的不同成员上,即使为应用程序对象配置了磁盘持久性,也会显着提高应用程序的整体吞吐量。

与传统数据库系统不同,单独的文件不用于管理数据和事务日志。所有数据更新都附加到与传统数据库的事务日志类似的文件中。如果磁盘未被其他进程同时使用,则可以避免磁盘寻道时间,并且唯一的成本是旋转延迟。

降低拥有成本

您可以在层中配置缓存。客户端应用程序进程可以在本地(在内存中并溢出到磁盘)托管缓存,并在未命中时委托给缓存服务器场。即使本地缓存的命中率达到30%,也可以显着节省成本。与每个事务相关的总成本来自CPU周期花费,网络成本,对数据库的访问以及与数据库维护相关的无形成本。通过将数据作为应用程序对象进行管理,可以避免与将SQL行映射到对象相关联的额外成本(CPU周期)。

客户/服务器的单跳能力

客户端可以直接向持有数据密钥的服务器发送单个数据请求,从而避免多跳以定位已分区的数据。客户端中的元数据标识正确的服务器。此功能可提高服务器层中分区区域的性能和客户端访问权限。

网络安全

客户端应用程序中可能有多个不同的用户。此功能适用于客户端嵌入应用程序服务器并且每个应用程序服务器支持来自许多用户的数据请求的安装。每个用户可能被授权访问服务器上的一小部分数据,如在客户应用程序中,其中每个客户只能访问他们自己的订单和货件。客户端中的每个用户都使用自己的一组凭据连接到服务器,并拥有自己对服务器缓存的访问权限。

多站点数据分布

数据站点在地理上分布在广域网(WAN)上可能导致可伸缩性问题。模型可以解决这些拓扑问题,从单个对等集群到WAN上数据中心之间的可靠通信。该模型允许集群以无限且松散耦合的方式扩展,而不会降低性能,可靠性或数据一致性。

该体系结构的核心是用于将区域事件分发到远程站点的网关发送器配置。您可以并行部署网关发送方实例,从而增加通过WAN分发区域事件的吞吐量。您还可以配置网关发件人队列以实现持久性和高可用性,以避免在成员发生故障时丢失数据。

连续查询

在Java Message Service等消息传递系统中,客户端订阅主题和队列。传递给主题的任何消息都将发送给订阅者。Geode允许通过使用对象查询语言使应用程序表达复杂的兴趣来进行连续查询。

异构数据共享

C#,C ++和Java应用程序可以共享应用程序业务对象,而无需通过SOAP或XML等转换层。服务器端行为虽然是用Java实现的,但它为C ++和.NET应用程序提供了唯一的本机缓存。可以在C ++进程堆中管理应用程序对象,并使用对象的通用“线上”表示将其分发到其他进程。C ++序列化对象可以直接反序列化为等效的Java或C#对象。使用一种语言更改业务对象可以在使用其他支持的语言编写的应用程序中触发可靠的通知。

 类似资料: