Apache Ignite .NET瘦客户端全面指南
ignite Apache 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))
{
// 客户端操作
}
故障转移机制
提供多个节点地址时,客户端会:
- 随机选择一个节点连接
- 节点故障时自动尝试其他地址
- 操作过程中节点故障会抛出
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"
}
最佳实践
- 生产环境务必启用分区感知
- 合理设置连接池大小
- 对关键操作实现重试逻辑
- 监控客户端连接状态
- 根据业务场景选择合适的序列化方式
通过本文的全面介绍,开发者应能充分利用Apache Ignite .NET瘦客户端构建高性能的分布式应用。
ignite Apache Ignite 项目地址: https://gitcode.com/gh_mirrors/ignite16/ignite
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考