12306高并发计算架构揭秘:Apache Geode 客户端接入与实践

news2025/6/6 18:27:06

目录

Apache Geode 客户端入门指南

一、安装 Apache Geode

二、启动 Geode 集群

三、Java 客户端接入 Geode

Maven 示例依赖

Gradle 示例依赖

Java 示例代码

四、Spring Boot 客户端接入 Geode

Maven 配置

Gradle 配置

运行应用

五、Apache Geode 原生客户端

.NET 客户端示例(C#)

C++ 客户端示例

六、结语


Apache Geode 客户端入门指南

Apache Geode 是一个分布式的内存数据管理平台,它提供了高可用、可扩展、低延迟的数据访问能力。本文将系统介绍如何安装 Apache Geode、启动一个基本的集群环境,并分别展示使用 Java、Spring Boot、.NET 及 C++ 等客户端进行简单的 Put/Get 操作。


一、安装 Apache Geode

你可以通过以下方式安装 Apache Geode:

  • 官网下载安装包:Apache Geode — Releases

  • Docker 镜像运行

  • macOS 用户可通过 Homebrew 安装

详细步骤请参考官方文档的《How to Install Apache Geode》。


二、启动 Geode 集群

在终端中运行 gfsh 命令启动 locator 和 server,并创建一个示例 Region:

$ gfsh
gfsh> start locator
gfsh> start server
gfsh> create region --name=helloWorld --type=PARTITION

完成测试后,使用以下命令关闭集群:

gfsh> shutdown --include-locators=true

三、Java 客户端接入 Geode

Maven 示例依赖

<dependency>
  <groupId>org.apache.geode</groupId>
  <artifactId>geode-core</artifactId>
  <version>${VERSION}</version>
</dependency>

Gradle 示例依赖

dependencies {
  implementation "org.apache.geode:geode-core:${VERSION}"
}

Java 示例代码

public static void main(String[] args) {
  ClientCache cache = new ClientCacheFactory().addPoolLocator("127.0.0.1", 10334).create();

  Region<String, String> helloWorldRegion =
      cache.<String, String>createClientRegionFactory(ClientRegionShortcut.PROXY).create("helloWorld");

  helloWorldRegion.put("1", "HelloWorldValue");
  String value1 = helloWorldRegion.get("1");
  System.out.println(value1);

  cache.close();
}

运行后将 "1" 作为键存入值 "HelloWorldValue",随后取出并打印。


四、Spring Boot 客户端接入 Geode

使用 Spring Initializr 创建项目,添加依赖 Spring for Apache Geode

Maven 配置

<properties>
  <spring-geode.version>1.4.3</spring-geode.version>
</properties>

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.geode</groupId>
      <artifactId>spring-geode-bom</artifactId>
      <version>${spring-geode.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.springframework.geode</groupId>
    <artifactId>spring-geode-starter</artifactId>
  </dependency>
</dependencies>

Gradle 配置

ext {
  set('springGeodeVersion', "1.4.3")
}

dependencies {
  implementation 'org.springframework.geode:spring-geode-starter'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

dependencyManagement {
  imports {
    mavenBom "org.springframework.geode:spring-geode-bom:${springGeodeVersion}"
  }
}

运行应用

项目生成后导入 IDE,启动 Spring Boot 应用后你将在控制台看到连接成功的日志:

Cluster was found; Auto-configuration made [2] successful connection(s)

无须额外代码,Spring Boot 会自动完成连接配置。


五、Apache Geode 原生客户端

Apache Geode 提供原生的 .NET 与 C++ 客户端,需要手动从源码构建,详见官网文档及 BUILDING.md

.NET 客户端示例(C#)

var region = cache.CreateRegionFactory(RegionShortcut.PROXY)
    .SetPoolName("pool").Create<string, string>("example_userinfo");

region.Put("rtimmons", "Robert Timmons");
Console.WriteLine(region.Get("rtimmons")); // 输出:Robert Timmons
region.Remove("rtimmons");

C++ 客户端示例

auto region = cache.createRegionFactory(RegionShortcut::PROXY)
                  .setPoolName("pool").create("example_userinfo");

region->put("rtimmons", "Robert Timmons");
auto user = region->get("rtimmons");
std::cout << std::dynamic_pointer_cast<CacheableString>(user)->value() << std::endl;

region->remove("rtimmons");

六、结语

Apache Geode 客户端生态丰富,适用于多种语言平台。无论你使用的是原生 Java、Spring Boot、.NET 还是 C++,Geode 都提供了统一、高效的分布式数据访问能力。建议深入学习其 Client/Server 模式配置与 region 管理策略,以构建更健壮的数据服务。


参考资料:

  • Apache Geode 官网

  • Apache Geode Java 示例

  • Spring Boot for Apache Geode

  • .NET Client 文档

  • C++ Client 文档

如果你有部署集群或跨语言接入方面的需求,欢迎留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2399318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端】Vue3+elementui+ts,给标签设置样式属性style时,提示type check failed for prop,再次请出DeepSeek来解答

&#x1f339;欢迎来到《小5讲堂》&#x1f339; &#x1f339;这是《前端》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。&#x1f339; &#x1f339;温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01;&…

PyTorch——优化器(9)

优化器根据梯度调整参数&#xff0c;以达到降低误差 import torch.optim import torchvision from torch import nn from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear from torch.utils.data import DataLoader# 加载CIFAR10测试数据集&#xff0c;设置tr…

07 APP 自动化- appium+pytest+allure框架封装

文章目录 一、PO二、代码简单实现项目框架预览&#xff1a;base_page.pydir_config.pyget_data.pylogger.pystart_session.pyconfig.yamlkey_code.yamllaunch_page_loc.pylogin_page_loc.pylaunch_page.pylogin_page.pytest_login.pypytest.inirun.py 一、PO PO 分为四层 &…

英国2025年战略防御评估报告:网络与电磁域成现代战争核心

英国 2025 年战略防御评估 (SDR) 详细制定了一项计划&#xff0c;通过加强使用网络、人工智能和数字战争来整合其军事防御和进攻能力。 与美国一样&#xff0c;英国也被认为&#xff08;尽管未被公开证实&#xff09;会开展进攻性网络行动&#xff0c;甚至针对盟友。斯诺登泄露…

基于QPSK调制解调+Polar编译码(SCL译码)的matlab性能仿真,并对比BPSK

目录 1.引言 2.算法仿真效果演示 3.数据集格式或算法参数简介 4.MATLAB核心程序 5.算法涉及理论知识概要 6.参考文献 7.完整算法代码文件获得 1.引言 Polar码由土耳其教授Erdal Arikan于2008年提出&#xff0c;是第一种被严格证明可以达到香农极限的构造性编码方法。其核…

Glide NoResultEncoderAvailableException异常解决

首先将解决方法提出来&#xff1a;缓存策略DiskCacheStrategy.DATA。 使用Glide加载图片&#xff0c;版本是4.15.0&#xff0c;有天发现无法显示gif图片&#xff0c;原始代码如下&#xff1a; Glide.with(context).load(本地资源路径).diskCacheStrategy(DiskCacheStrategy.A…

无人机巡检智能边缘计算终端技术方案‌‌——基于EFISH-SCB-RK3588工控机/SAIL-RK3588核心板的国产化替代方案‌

一、方案核心价值‌ ‌实时AI处理‌&#xff1a;6TOPS NPU实现无人机影像的实时缺陷检测&#xff08;延迟&#xff1c;50ms&#xff09;‌全国产化‌&#xff1a;芯片、操作系统、算法工具链100%自主可控‌极端环境适配‌&#xff1a;-40℃~85℃稳定运行&#xff0c;IP65防护等…

相机--相机成像原理和基础概念

教程 成像原理 基础概念 焦距&#xff08;物理焦距&#xff09; 镜头的光学中心到感光元件之间的距离&#xff0c;用f表示&#xff0c;单位&#xff1a;mm&#xff1b;。 像素焦距 相机内参矩阵中的 fx​ 和 fy​ 是将物理焦距转换到像素坐标系的产物&#xff0c;可能不同。…

2025-0604学习记录17——文献阅读与分享(2)

最近不是失踪了&#xff01;也不是弃坑了...这不是马上要毕业了嘛&#xff01;所以最近在忙毕业论文答辩、毕业去向填报、户档去向填报等等&#xff0c;事情太多了&#xff0c;没顾得上博客。现在这些事基本上都解决完了&#xff0c;也有时间静下心来写写文字了~ 想要写的内容…

图解浏览器多进程渲染:从DNS到GPU合成的完整旅程

目录 浅谈浏览器进程 浏览器进程架构的演化 进程和线程关系图示 进程&#xff08;Process&#xff09; 线程&#xff08;Thread&#xff09; 协程&#xff08;Coroutine&#xff09; 进程&线程&协程核心对比 单进程和多进程浏览器 单进程浏览器​编辑 单进程…

【计算机网络】第3章:传输层—TCP 拥塞控制

目录 一、PPT 二、总结 TCP 拥塞控制详解 ⭐ 核心机制与算法 1. 慢启动&#xff08;Slow Start&#xff09; 2. 拥塞避免&#xff08;Congestion Avoidance&#xff09; 3. 快速重传&#xff08;Fast Retransmit&#xff09; 4. 快速恢复&#xff08;Fast Recovery&…

idea不识别lombok---实体类报没有getter方法

介绍 本篇文章&#xff0c;主要讲idea引入lombok后&#xff0c;在实体类中加注解Data&#xff0c;在项目启动的时候&#xff0c;编译不通过&#xff0c;报错xxx.java没有getXxxx&#xff08;&#xff09;方法。 原因有以下几种 1. idea没有开启lombok插件 2. 使用idea-2023…

SAP学习笔记 - 开发15 - 前端Fiori开发 Boostrap,Controls,MVC(Model,View,Controller),Modules

上一章讲了Fiori开发的准备&#xff0c;以及宇宙至简之HelloWorld。 SAP学习笔记 - 开发14 - 前端Fiori开发 HelloWorld-CSDN博客 本章继续学习 Fiori 开发的知识&#xff1a; Bootstrap&#xff0c;Controls&#xff0c;MVC(Model&#xff0c;View&#xff0c;Controller&a…

基于SDN环境下的DDoS异常攻击的检测与缓解

参考以下两篇博客&#xff0c;最后成功&#xff1a; 基于SDN的DDoS攻击检测和防御方法_基于sdn的ddos攻击检测与防御-CSDN博客 利用mininet模拟SDN架构并进行DDoS攻击与防御模拟&#xff08;Ryumininetsflowpostman&#xff09;_mininet模拟dos攻击-CSDN博客 需求 H2 模拟f…

如何轻松地将文件从 PC 传输到 iPhone?

传统上&#xff0c;您可以使用 iTunes 将文件从 PC 传输到 iPhone&#xff0c;但现在&#xff0c;使用 iTunes 已不再是唯一的选择。现在有多种不同且有效的方法可以帮助您传输文件。在今天的指南中&#xff0c;您可以找到 8 种使用或不使用 iTunes 传输文件的方法&#xff0c;…

Bresenham算法

一 Bresenham 绘直线 使用 Bresenham 算法&#xff0c;可以在显示器上绘制一直线段。该算法主要思想如下&#xff1a; 1 给出直线段上两个端点 &#xff0c;根据端点求出直线在X,Y方向上变化速率 &#xff1b; 2 当 时&#xff0c;X 方向上变化速率快于 Y 方向上变化速率&am…

【从GEO数据库批量下载数据】

从GEO数据库批量下载数据 1&#xff1a;进入GEO DataSets拿到所需要下载的数据的srr.list&#xff0c;上传到linux&#xff0c; 就可以使用prefetch这个函数来下载 2&#xff1a;操作步骤如下&#xff1a; conda 安装sra-tools conda create -n sra-env -c bioconda -c co…

day 44

使用DenseNet预训练模型对cifar10数据集进行训练 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms, models from torch.utils.data import DataLoader import matplotlib.pyplot as plt import os# 设置中文字体…

NER实践总结,记录一下自己实践遇到的各种问题。

更。 没卡&#xff0c;跑个模型休息好几天&#xff0c;又闲又急。 一开始直接套用了别人的代码进行实体识别&#xff0c;结果很差&#xff0c;原因是他的词表没有我需要的东西&#xff0c;我是用的医学文本。代码直接在github找了改的&#xff0c;用的是BERT的Chinese版本。 然…

微信小程序实现运动能耗计算

微信小程序实现运动能耗计算 近我做了一个挺有意思的微信小程序&#xff0c;能够实现运动能耗的计算。只需要输入性别、年龄、体重、运动时长和运动类型这些信息&#xff0c;就能算出对应的消耗热量。 具体来说&#xff0c;在小程序里&#xff0c;性别不同&#xff0c;身体基…