一、概述

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

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

1. 主要概念和组件

1.1 缓存

缓存是描述Geode分布式系统中的节点的抽象。

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

1.2 定位器

定位器提供发现和负载平衡服务。您可以使用定位器服务列表配置客户端,定位器维护成员服务器的动态列表。默认情况下,Geode客户端和服务器使用端口40404和多播发现彼此。

2. 主要特点和关键功能

2.1 高读写吞吐量

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

2.2 低且可预测的延迟

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

2.3 高扩展性

可扩展性是通过跨多个成员对数据进行动态分区并在服务器之间均匀分布数据负载来实现的。对于“热”数据,您可以将系统配置为动态扩展以创建数据的更多副本。还可以预配应用程序行为,使其以分布式方式运行,使其靠近所需的数据。

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

还可以通过将数据更改异步“写入”到外部数据存储(如数据库)来提高可伸缩性。这通过按顺序和冗余方式对所有更新进行排队来避免瓶颈。您还可以将更新合并在一起,并将它们批量传播到数据库。

2.4 持续可用性

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

2.5 可靠的事件通知

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

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

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

您可以在成员上并行执行应用程序业务逻辑。数据感知函数执行服务允许在对数据进行分区以作为引用和缩放位置的成员上执行任意的、依赖于数据的应用程序函数。

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

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

2.7 无共享磁盘持久性

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

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

2.8 降低拥有成本

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

2.9 客户端/服务器的单跃点功能

客户端可以将单个数据请求直接发送到保存数据密钥的服务器,从而避免多个跃点来查找分区的数据。客户端中的元数据标识正确的服务器。此功能可提高服务器层中分区区域的性能和客户端访问权限。

2.10 客户端/服务器安全

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

2.11 多站点数据分发

可伸缩性问题可能是由于数据站点在地理上分布在广域网 (WAN) 中。模型处理这些拓扑,从单个对等群集到 WAN 中数据中心之间的可靠通信。此模型允许群集以无界和松散耦合的方式横向扩展,而不会损失性能、可靠性或数据一致性。

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

2.12 连续查询

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

2.13 异构数据共享

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

二、安装启动

1. 主机要求

运行 Apache Geode 的每台计算机都必须满足以下要求:

  • 安装带有更新121或以上版本的Java8,包括同版本的OpenJdk。

  • 系统时钟设置为正确的时间和时间同步服务,如网络时间协议(NTP)。正确的系统时间设置有以下用处:

    • 对故障排除有用的日志。同步时间戳可确保可以合并来自不同主机的日志消息,以重现分布式运行的准确时间顺序历史记录。
    • 聚合产品级和应用程序级时间统计信息。
    • 使用脚本和其他工具准确监控 Geode 系统,这些脚本和其他工具可读取系统统计信息和日志文件。
  • 主机名和主机文件已为计算机正确配置。主机名和主机文件配置可能会影响和Pulse功能。

  • 禁用 TCP SYN Cookie。大多数默认 Linux 安装使用 SYN Cookie 来保护系统免受淹没 TCP SYN 数据包的恶意攻击,但此功能与稳定且繁忙的 Geode 群集不兼容。相反,安全实现应通过将Geode服务器集群置于高级防火墙保护后面来寻求防止攻击。要永久禁用 SYN Cookie,请执行以下操作:

    1. 编辑文件/etc/sysctl.conf以添加以下行:

      net.ipv4.tcp_syncookies = 0

      将此值设置为零将禁用 SYN Cookie。

    2. 重新加载sysctl.conf

      sysctl -p

    有关详细信息,请参阅禁用 TCP SYN Cookie

2. 安装

  1. 设置Java环境变量

    JAVA_HOME=/usr/java/jdk1.8.0_121
    export JAVA_HOME
    
  2. 下载源代码并解压

    访问发布页面进行下载 http://geode.apache.org ,解压:

    tar -zxcf apache-geode-src-1.0.0-incubating.tar.gz

  3. 在包含源码的目录进行构建(大概2h)

    # 跳过测试构建
    $ ./gradlew build -Dskip.tests=true
    # 测试构建
    $ ./gradlew build
    
  4. 验证安装

    # 进入目录
    $ cd geode-assembly/build/install/apache-geode
    # 查看版本
    $ bin/gfsh version
    v1.1.0
    

三、启动测试

1. 使用 gfsh命令启动Locator

# 启动命令行
[root@localhost bin]# ./gfsh
# 启动定位器
gfsh> start locator --name=locator1

2. 使用 gfsh命令启动pulse

启动基于浏览器的pulse监控工具,pulse是一个web应用,它提供了图形化的监控界面,监控着geode集群、成员、数据区域的重要的健康状态和性能。

gfsh> start pulse
Running desktop applications is not supported on Linux.

这个命令启动pulse并自动连接到locator的JMX管理器,在pulse的登录页面 http://192.168.0.99:7070/pulse 默认账户:admin 密码:admin。(请参阅账户设置)
登录后,Pulse显示本地分布式系统的主集群视图。(请查阅 Geode Pulse)

3. 启动缓存服务器

一个geode服务器是一个进程,它作为一个长期的,可配置的集群(也被称为分布式系统)中的一个成员运行着。geode服务器主要用于存放长期存放的数据区域,也用于运行标准的geode进程,例如在客户端/服务器配置中的服务器。查看 运行geode服务器进程。

gfsh> start server --name=server1 --server-port=40411

4. 其他命令

# 创建数据区域
gfsh>create region --name=regionA --type=REPLICATE_PERSISTENT
# 用gfsh命令来查看集群中的区域
gfsh> list regions
# 列出集群上的成员,你开启的locator和缓存服务器出现在列表中
gfsh> list members
# 查看区域说明
gfsh> describe region --name=regionA
# 将数据添加到区域中
gfsh> put --region=regionA --key="1" --value="one"
# 查询数据
gfsh> query --query="select * from /regionA"
# 停止、启动缓存服务器
gfsh> stop server --name=server1
gfsh> start server --name=server1 --server-port=40411

Apach Geode概述及安装启动测试相关推荐

  1. 国产化适配之人大金仓数据库(一)安装启动测试

    本文章主要介绍金仓数据的安装.启动.数据库连接测试. 前言 虽然主流数据库用的人多,但是在某些场合和环境必须要用国产的东西,包括数据库和中间件等,如果系统在开发之初用的是国外主流的东西,那么在使用国产 ...

  2. ActiveMQ (一):安装启动及测试

    1. 预备知识 1.1 JMS JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范.<百科> 1.2 JMX JMX(Java M ...

  3. linux下安装nginx启动,Linux下安装启动nginx的过程

    1.首先将nginx的安装包传到虚拟机里的/home目录下 2.为了方便nginx运行而不影响linux安全需创建组合用户 groupadd -r nginx useradd -r -g nginx  ...

  4. Redis概述、安装、可视化访问

    一.概述 1.NoSQL Not Only SQL,意思:不仅仅是SQL 四大分类 KV键值 新浪:BerkeleyDB+redis 美团:redis+tair阿里 百度:memcache+redis ...

  5. 一、PXE概述和安装

    一.PXE概述 PXE(预启动执行环境)是由Inter公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统. 二.PX ...

  6. Docker概述、安装及基础命令

    Docker概述.安装及基础命令 一.Docker概述 1. docker是什么 2. docker与虚拟机的区别 3. docker使用场景 4. docker核心概念 5. docker引擎 6. ...

  7. REDIS01_概述、安装、key、字符串String、列表List、集合Set、Hash哈希、Zset有序集合、持久化策略

    文章目录 ①. Redis - 概述 ②. Redis - 安装 ③. 常用五大数据类型 ④. 字符串类型 - String ⑤. 列表类型 - list ⑥. 集合类型 - Set ⑦. 哈希类型 ...

  8. Redis学习之Redis概述与安装以及性能测试

    Redis入门 概述 Redis是什么 Redis(remote dictionary server)远程字典服务器 是一个开源的使用c语言编写.支持网络.可基于内存亦可持久化的日志型.key-val ...

  9. my SQL下载安装,环境配置,以及密码忘记的解决,以及navicat for mysql下载,安装,测试连接...

    一.下载 在百度上搜索"mysql-5.6.24-winx64下载" 二.安装 选择安装路径,我的路径"C:\Soft\mysql-5.6.24-winx64" ...

最新文章

  1. 基于Mixin Network的PHP比特币开发教程 之一:创建机器人
  2. 科普篇:贝叶斯网络中的置信度传播
  3. 5G之争,到底争些什么?
  4. 如何点击按钮弹出弹框显示几秒_产品反馈设计:如何与用户有效沟通?
  5. Spring期末试题
  6. 深入理解Presto
  7. 英语对混职场有用么?
  8. maven编译,控制台中文乱码解决方案
  9. java 从sip服务器_如何通过域而不是IP地址注册到SIP服务器并从客户端创建SIP帐户?...
  10. 计算机校友讲座,计算机系举办优秀校友返校讲座
  11. 【独家】一文读懂文字识别(OCR)
  12. Java版飞翔的小鸟代码完整
  13. Ant 下载、安装、使用、教程全面了解
  14. 使用云祺虚拟机备份软件瞬时恢复H3C CAS 虚拟机
  15. stm32——手动移植HAL库以及错误解决方案(以STM32F103ZE为例)
  16. hx711模块原理图及驱动程序你知道了么?
  17. 机顶盒ttl无法输入_哪位大神帮帮忙,B860 AV1.1 TTL 无法输入命令
  18. SourceTree系列5:贮藏和修复Bug
  19. EAS单据F7引用设
  20. Dijkstra算法以及与其他最短路径算法简要对比

热门文章

  1. 网站推广技巧之单向链接推广
  2. Java并发包源码学习系列:LBD双端阻塞队列源码解析
  3. 七星在线农牧饲渔、电力等行业大涨
  4. python 标签 轴_如何在matplotlib中将轴标签对齐到右侧或顶部 - python
  5. 免费开放的API接口:天气预报,登录注册,图片视频等支持分页
  6. linux lz4源码下载,Linux下lz4解压缩命令小结
  7. MySQL DBA 招聘小结
  8. linux与mysql的关系_linux系统mysql简介
  9. 模块使用——震动开关模块
  10. handlebar 初学笔记