Apache Geode 主要特点

  • 高读写吞吐量
  • 低和可预测的延迟
  • 高可扩展性
  • 持续可用性
  • 可告的事件通知
  • 并行的应用行为存储
  • 共享磁盘持久化
  • 降低成本
  • 客户/服务器的单跳功能
  • 客户/服务器安全性
  • 多点数据分布
  • 持续可查询

高读写吞吐量

         Geode采用并发主内存数据结构和高度优化的分布式架构提供读写吞吐量,应用可以在内存中使用同步或异步复制的方式动态创建数据备份来实现高的读吞吐量,或是在跨Geode系统中进行数据分区来实现高的读写吞吐量。如果在整个数据集上的访问很平稳,那么数据分区可以提高两倍的总吞吐量。仅靠骨干网格容量线性提高吞吐量是很有局限的。

低且可预测延时

        Geode的优化缓存层减少线程和进程之间的上下文切换,它管理高度并发结构中的数据,以尽量减少争用点。如果接收对象可以保持的话,通信到对等成员是同步的,这样可以让分布式数据的延时最小。服务器管理系列化形式的对象图,来减少垃圾回收的压力。服务器数据存储中的分区订阅管理(兴趣注册和连续查询),以确保为所有感兴趣者只处理一次订阅。CPU和带宽利用率的改进,提高了吞吐量且减少客户端订阅延时。

 高可扩展性

      Geode通过跨多个成员动态数据分区与服务器之间均匀地传播数据负载来达获得扩性能力。对于“热”数据来说,你可以设置系统为动态扩展来创建更多的数据备份。你也可以规定应用行为,让其在分布式模式中离它需要的数据近可能的近一些。

       如果您需要支持高和突发的的并发客户端负载,你可以增加服务器的数量来管理数据,分发数据,为它们提供统一的可预测的响应时间。基于服务器持续的自身状况反馈,客户端被负载均衡到了服务器群。有了数据分区和服务器之间的数据考贝,客户端可以动态的移动到不同的服务器,均匀加载服务器,并得到最佳的响应时间。

      你也可以通过实现异步的数据“后写”入外部数据存储来增强扩展性,例如数据库。Geode通过有序和冗余的更新队列来避免瓶颈,你也可以合并更新并将它们批量保存到数据库。

持续可用性

        除了保证在内存中的数据一致的副本,应用程序可以将数据同步保存到一个或多个Geode成员的磁盘中,或用Geode的"共享磁盘结构"来异步保存。所有的异步事件(存储转发的事件)冗余的被管理在了至少两个成员中,假如一个成员宕机,则由冗余的一个接管。所有客户端连接到逻辑的服务器,客户端在当服务器故障或无响应时自动切换到组中的备用服务器。

可靠的事件通知

       发布/订阅系统提供了一个数据分发服务,新的事件被发布到系统中,并以可靠的方式发送给所有感兴趣的用户。传统的消息平台关注于消息的传递,但是应用经常需要在处理事件之前访问相关的数据,这要求它们在传递消息的候时访问传统的数据库,然而数据库的访问速度制约着消息订阅者。

        Geode 通过一个系统提供数据和事件,数据作为对象在一个或多个分布式数据区域中被管理,类似于数据库的表。应用可以简单地完成对对象的插入,更新,删除在数据区域中的对象,平台会将对象的变化传播给消息订阅者。收到事件的订阅者可以直接访问本地内存中的相关数据,也可以通过一个单跳从其他成员的一个中获取数据。

并行的应用行为存储

       你可以在Geode成员中并行的执行业务逻辑,数据感知功能执行服务允许被任意执行,数据依赖型应用在数据已被分区的成员中运行。通过共置相关数据和并行计算,可以提高整体的吞吐量。计算时间是与可并行化的成员的数量是成反比的。

       基本的前提是让这些应用对于这些带有运行这些功能所需数据的应用是透明的,并且阻止网络间的数据传输。应用程序功能可以只在一个成员上执行,或在一个成员集合中并行执行,或是在所有成员中并行执行。这个编程模型类似于谷歌的map-reduce编程模型。数据感知功能的路由是最适合需要迭代在多个数据项(如查询或自定义聚合函数)的应用程序。

共享磁盘持久化

      每个Geode系统成员各自独立的管理自己磁盘上文件中的数据,一个成员中的磁盘错误或是缓存错误不会影响其它成员中的缓存实例安全地操作磁盘文件的能力。这种“共享无关”持久性架构允许应用程序被配置成不同类型的数据保存在系统的不同的成员上。这样的话即使在磁盘存储为应用对象作配置时也能大大提高应用程序的整体吞吐量。

    不像传统的数据库系统,Geode不管理在分割文件中的数据和事务日志。所有的数据更新都被追加到类似于传统数据库的事务日志中的文件中。磁盘不被其它进程并发使用的情况下您可以避免磁盘的搜索时间,所产生的唯一成本是磁盘旋转延迟。

降低成本

       您可以在层中配置缓存。客户端应用程序进程可以在本地存储一个缓存(在内存中溢出到磁盘)并将其委托给未使用的高速缓存服务器场。即使在本地缓存有百分之30的命中率也可以显明的节省成本。与每一个事务相关的总成本来自于所花费的处理器周期,网络成本,数据库访问,无形的数据库维护成本。把数据作为应用对象管理,可以避免由SQL行应映为对象而产生额外的(CPU)成本。

客户/服务器的单跳能力

       客户端可以直接向持有数据键的服务器发送单独的数据请求,以避免多跳来定位已分区的数据。客户端中的元数据标识正确的服务器。此特性提高性能且改善了客户端对在服务器层分区的数据区域的访问。

 客户/服务器安全性

        Geode允许在客户端程序中运行多个不同的用户,这个特性安装在Geode的客户是嵌入在应用程序服务器,并且每个应用服务器支持多个用户的数据请求。每个用户可以被授权访问服务器上的数据的一小部分,正如在客户应用中,每个客户只能访问自己的订单和出货量。客户端中的每个用户都以自己的凭据连接到服务器,并对服务器缓存有自己的访问权限。

      客户端/服务器通信增加了对重放攻击的安全性。服务器每个响应发送客户端一个唯一的、随机的标识符,在下一个客户端请求中使用。由于标识符,即使是一个重复的客户端操作调用都作为一个唯一的请求发送到服务器。

多点数据分布

 从地理上跨广域网(广域网)的数据站点可能会产生扩展性问题。GemFire提供了一个模型来处理这些拓扑结构,从点对点的集群延伸到跨广域网的数据中心之间的可信的通信。该模型允许分布式系统扩展到一个无限的且松散耦合的方式,而不损失性能,可靠性或数据的一致性。

      这个架构核心是用于分布式区域事件到远程站点的网关发送器配置。你可以并行部署网关发送器实例,它可以提高分布式区域事件在广域网中传输的吞吐量。您还可以配置网关发送器队列,用于持久性和高可用性,以避免成员失败的情况下的数据丢失。

连续查询

      在消息系统如java消息服务中,客户订阅的主题和队列。任何一个发送给主题的消息都是发送给订阅者。Geode允许应用使用对象查询语言对复杂感兴趣的内容进行连续查询。

猜你喜欢

转载自bewithme.iteye.com/blog/2316993