Apache Ignite .NET瘦客户端全面指南

Apache Ignite .NET瘦客户端全面指南

ignite Apache Ignite ignite 项目地址: https://gitcode.com/gh_mirrors/ignite16/ignite

概述

Apache Ignite是一个强大的内存计算平台,而.NET瘦客户端则是其轻量级的连接方案。本文将深入探讨.NET瘦客户端的关键特性和使用方法,帮助开发者高效地利用Ignite的强大功能。

环境准备

运行环境要求

  • 支持.NET 4.0+和.NET Core 2.0+运行时
  • 跨平台支持:Windows、Linux、macOS等所有.NET Core 2.0+支持的平台

安装配置

.NET瘦客户端API包含在Ignite.NET API库中,位于Ignite发行包的platforms/dotnet目录下。核心功能由Apache.Ignite.Core程序集提供。

集群连接

基础连接

使用Ignition.StartClient方法建立连接,必须配置IgniteClientConfiguration.Endpoints属性指定服务器节点地址:

var cfg = new IgniteClientConfiguration
{
    Endpoints = new[] {"127.0.0.1:10800"}
};
using (var client = Ignition.StartClient(cfg))
{
    // 客户端操作
}

故障转移机制

提供多个节点地址时,客户端会:

  1. 随机选择一个节点连接
  2. 节点故障时自动尝试其他地址
  3. 操作过程中节点故障会抛出IgniteClientException,需业务代码处理

服务器节点自动发现

当启用分区感知时,瘦客户端能自动发现集群中的服务器节点。这是一个异步过程,仅在客户端执行操作时接收拓扑更新。

var connections = client.GetConnections();
foreach (var conn in connections)
{
    Console.WriteLine(conn.RemoteEndPoint);
}

注意:当服务器位于NAT或代理后时,自动发现可能失效。

分区感知

核心价值

分区感知允许瘦客户端直接将查询请求发送到数据所在节点,避免通过代理节点转发,显著提升性能。

启用方式

设置IgniteClientConfiguration.EnablePartitionAwareness = true,这会同时启用服务器发现。在NAT环境下需手动配置所有服务器地址。

键值API实战

缓存实例获取

提供多种方式获取缓存实例:

  • GetCache():获取现有缓存
  • CreateCache():创建新缓存
  • GetOrCreateCache():获取或创建缓存
var cache = client.GetOrCreateCache<string, int>("myCache");

基本操作

支持完整的CRUD操作:

cache.Put("key", 42);
int val = cache.Get("key");
cache.Remove("key");

二进制对象

避免序列化开销,直接操作二进制对象:

var binaryCache = cache.WithKeepBinary<string, IBinaryObject>();
var binary = client.GetBinary();
var obj = binary.GetBuilder("Person")
    .SetField("name", "John")
    .Build();

高级查询

扫描查询

通过过滤器获取符合条件的条目:

var filter = new ScanQueryFilter(50);
var query = new ScanQuery<int, Person>(filter);
var results = cache.Query(query);

SQL查询

支持完整的SQL能力:

var query = new SqlFieldsQuery(
    "SELECT name, age FROM Person WHERE age > ?", 30);
var result = cache.Query(query);

集群管理

基础操作

通过IClientCluster接口管理集群状态:

var cluster = client.GetCluster();
cluster.SetActive(true);

逻辑分组

创建节点逻辑组实现精细管理:

var servers = cluster.ForServers()
    .ForAttribute("dc", "dc1");

计算任务

前置配置

需在服务端启用计算任务支持:

new ThinClientConfiguration 
{
    MaxActiveComputeTasksPerConnection = 100
}

任务执行

执行已部署的计算任务:

var compute = client.GetCompute();
var result = compute.ExecuteJavaTask<int>("org.foo.bar.AddOneTask", 1);

服务调用

调用已部署的Ignite服务:

var services = client.GetServices();
var svc = services.GetServiceProxy<IMyService>("MyService");
svc.MyMethod();

安全机制

SSL/TLS加密

配置双向加密通信:

new IgniteClientConfiguration
{
    SslStreamFactory = new SslStreamFactory
    {
        CertificatePath = "client.pfx",
        CertificatePassword = "secret"
    }
}

身份认证

配置用户名密码认证:

new IgniteClientConfiguration
{
    UserName = "admin",
    Password = "password"
}

最佳实践

  1. 生产环境务必启用分区感知
  2. 合理设置连接池大小
  3. 对关键操作实现重试逻辑
  4. 监控客户端连接状态
  5. 根据业务场景选择合适的序列化方式

通过本文的全面介绍,开发者应能充分利用Apache Ignite .NET瘦客户端构建高性能的分布式应用。

ignite Apache Ignite ignite 项目地址: https://gitcode.com/gh_mirrors/ignite16/ignite

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张栋涓Kerwin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值