网站建设 核对流程,wordpress 下载链接,成都到西安高铁票价,wordpress高级图片主题Garnet介绍
Garnet是一款微软研究院基于C#开发而开源的高性能缓存服务#xff0c;支持Windows、Linux多平台部署#xff0c;Garnet兼容Redis服务API#xff0c;在性能和使用架构上较Redis有很大提升#xff08;官方说法#xff09;#xff0c;并提供与Redis一样的命令操…Garnet介绍
Garnet是一款微软研究院基于C#开发而开源的高性能缓存服务支持Windows、Linux多平台部署Garnet兼容Redis服务API在性能和使用架构上较Redis有很大提升官方说法并提供与Redis一样的命令操作存储数据因此可以在不更换现有Redis客户端与库的情况下即可无缝使用Garnet从而降低开发难度与使用成本
官方介绍机翻 Garnet 是 Microsoft Research 推出的一种新型远程缓存存储其设计速度极快、可扩展且延迟低。Garnet 在单个节点内是线程可扩展的。它还支持分片集群执行、复制、检查点、故障转移和事务。它可以在主内存以及分层存储例如 SSD 和 Azure 存储上运行。Garnet支持丰富的API接口和强大的可扩展性模型。 Garnet 使用 Redis 的 RESP 作为其主要线路协议。因此人们可以将 Garnet 与 大多数编程语言中可用的未经修改的 Redis 客户端一起使用例如C# 中的StackExchange.Redis 。与其他开源缓存存储相比您可以获得更好的性能、延迟、可扩展性和耐用性功能。 请注意Garnet 是 Microsoft Research 的一个研究项目该项目也应如此对待。也就是说我们是一群充满热情的研究人员和开发人员目前正在全职研究它以使其尽可能稳定和高效。我们的目标是围绕Garnet创建一个充满活力的社区。事实上Garnet 的质量已经足够高以至于 Microsoft 的多个第一方和平台团队已经在内部部署了 Garnet 版本好几个月了。 Garnet具有以下主要优点 相对于同类开源缓存存储小批量和许多客户端会话的服务器吞吐量操作/秒提高了几个数量级。在 Windows 和 Linux 上启用加速 TCP 的商品云 (Azure) 计算机上单次操作延迟极低在 99.9% 时通常小于 300 微秒。随着客户端数量的增加无论有或没有客户端批处理都可以实现更好的可扩展性。能够通过单个共享内存服务器实例使用服务器计算机的所有 CPU/内存资源无需节点内集群。支持大于内存的数据集溢出到本地和云存储设备。数据库功能例如快速检查点和恢复以及发布/订阅。支持多节点分片哈希分区Redis“集群”模式、状态迁移和复制。通过全面的测试套件进行了良好的测试针对 Garnet 及其存储层 Tsavorite 进行了数千次单元测试。易于演变和扩展的 C# 代码库。 如果您的应用程序或服务需要一个具有大量实用功能、高性能以及基于最先进的 Microsoft Research 技术的现代设计的缓存存储那么 Garnet 就是适合您的系统。在此处查看有关Garnet性能优势的更多详细信息。 Garnet整体架构
官方文档
Welcome to Garnet | Garnet
github
GitHub - microsoft/garnet: Garnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.
性能预览
微软官方将 Garnet 与领先的开源缓存存储进行比较参与评测的同类开源服务Garnet、Redis、KeyDB、Dragonfly
在相同配置环境下分别基于
实验 1不同数量的客户端会话的吞吐量实验 2不同批量大小的吞吐量实验 3不同数量的客户端会话的延迟实验 4不同批量大小的延迟
四个维度进行性能比较从性能评测结果上来看Garnet各项性能测试指标均优于同类产品;
评测结果参见
Introducing Garnet – an open-source, next-generation, faster cache-store for accelerating applications and services - Microsoft Research
Garnet安装
此项目开源源码但官方并未提供已编译的二进制安装包需要自行下载源码编译成可运行应用服务此处参考官方教程进行编译、安装;
参考官方入门Build教程:Build and Test | Garnet
注根据官方文档显示提供了dockerfile配置可参考文档尝试docker部署
安装环境
操作系统Windows 8
环境依赖 .Net 8
github下载
微软官方将源码开源放到了github上本地如有安装Git命令行工具则在任意文件夹内右键打开“Git Bash Here”窗口输入如下git命令
git clone https://github.com/microsoft/garnet.git
$ git clone https://github.com/microsoft/garnet.git
Cloning into garnet...
remote: Enumerating objects: 10055, done.
remote: Counting objects: 100% (1629/1629), done.
remote: Compressing objects: 100% (848/848), done.
remote: Total 10055 (delta 846), reused 1000 (delta 759), pack-reused 8426
Receiving objects: 100% (10055/10055), 14.51 MiB | 1.47 MiB/s, done.
Resolving deltas: 100% (7168/7168), done.
通过git命令将工程版本切换到v1.0.0(当前最新版本)
git checkout v1.0.0
$ git checkout v1.0.0
Note: switching to v1.0.0.You are in detached HEAD state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:git switch -c new-branch-nameOr undo this operation with:git switch -Turn off this advice by setting config variable advice.detachedHead to falseHEAD is now at 1e5c7ad Initial commit
安装.Net8 SDK
检查Windows环境是否已安装.Net 8可运行环境如果没有安装请先从微软官方网站下载安装此环境是.net应用必需使用的可运行时核心库与环境用来支持C#和ASP.NET开发与运行。
进入已克隆的本地garnet工程根目录检查本地是否安装.net 8
cd garnet/
dotnet test -c Release -f net8.0 -l console;verbositydetailed
$ cd garnet/
$ dotnet test -c Release -f net8.0 -l console;verbositydetailed正在确定要还原的项目…
C:\Program Files\dotnet\sdk\7.0.203\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: 当前 .NET SDK 不支持将 .NET 8.0 设置为目标。请将 .NET 7.0 或更低版本设置为目标或使用支持 .NET 8.0 的 .NET SDK 版本。 [D:\Workspaces\idea_2\garnet\samples\GarnetClientSample\GarnetClientSample.csproj]
C:\Program Files\dotnet\sdk\7.0.203\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: 当前 .NET SDK 不支持将 .NET 8.0 设置为目标。请将 .NET 7.0 或更低版本设置为目标或使用支持 .NET 8.0 的 .NET SDK 版本。 [D:\Workspaces\idea_2\garnet\playground\GarnetClientStress\GarnetClientStress.csproj]此处检查为缺少.Net8 SDK运行环境从微软官方下载套件
.Net8.0 SDK主页下载 .NET 8.0 (Linux、macOS 和 Windows)
.Net8.0 SDK下载页下载 .NET 8.0 SDK (v8.0.203) - Windows x64 Installer
打开页面会自动下载dotnet-sdk-8.0.203-win-x64.exe安装程序待下载完毕后双击默认安装即可
安装后再一次检测.net8可运行环境根据电脑硬件情况可能需要执行几分钟。
dotnet test -c Release -f net8.0 -l console;verbositydetailed
$ dotnet test -c Release -f net8.0 -l console;verbositydetailed欢迎使用 .NET 8.0!
---------------------
SDK 版本: 8.0.203遥测
---------
.NET 工具会收集用法数据帮助我们改善你的体验。它由 Microsoft 收集并与社区共享。你可通过使用喜欢的 shell 将 DOTNET_CLI_TELEMETRY_OPTOUT 环境变量设置为 1 或 true 来选择退出遥测。阅读有关 .NET CLI 工具遥测的更多信息: https://aka.ms/dotnet-cli-telemetry----------------
已安装 ASP.NET Core HTTPS 开发证书。
若要信任该证书请运行 dotnet dev-certs https --trust
了解 HTTPS: https://aka.ms/dotnet-https----------------
编写第一个应用: https://aka.ms/dotnet-hello-world
了解新增功能: https://aka.ms/dotnet-whats-new
浏览文档: https://aka.ms/dotnet-docs
报告问题并在 GitHub 上查找来源: https://github.com/dotnet/core
使用 dotnet --help 查看可用命令或访问: https://aka.ms/dotnet-cli
--------------------------------------------------------------------------------------正在确定要还原的项目…已还原 D:\Workspaces\garnet\libs\storage\Tsavorite\cs\src\core\Tsavorite.core.csproj (用时 53.98 sec)。已还原 D:\Workspaces\garnet\libs\storage\Tsavorite\cs\src\devices\AzureStorageDevice\Tsavorite.devices.AzureStorageDevice.csproj (用时 53.98 sec)。... 略 一大堆过程打印已通过 ClusterTLSRPrimaryRestart(False,False) [1 s]已通过 ClusterTLSRRedirectWrites [1 s]
NUnit Adapter 4.5.0.0: Test execution complete已通过 ClusterTLSRReplicaOfTest(True) [652 ms]已通过 ClusterTLSRReplicaOfTest(False) [321 ms]测试运行成功。
测试总数: 206通过数: 206
总时间: 9.0286 分钟
构建工程
通过命令行对工程源码进行构建从而编译与生成可运行程序
第一步dotnet restore dotnet restore正在确定要还原的项目…已还原 D:\Workspaces\garnet\playground\ClusterStress\ClusterStress.csproj (用时 1.35 sec)。已还原 D:\Workspaces\garnet\samples\MetricsMonitor\MetricsMonitor.csproj (用时 1.35 sec)。... 略已还原 D:\Workspaces\garnet\playground\Embedded.perftest\Embedded.perftest.csproj (用时 129 ms)。1 个项目(共 19 个)是最新的无法还原。第二步dotnet build -c Release
$ dotnet build -c Release
适用于 .NET MSBuild 版本 17.9.6a4ecab324正在确定要还原的项目…所有项目均是最新的无法还原。Garnet.common - D:\Workspaces\garnet\libs\common\bin\AnyCPU\Release\net7.0\Garnet.common.dllGarnet.common - D:\Workspaces\garnet\libs\common\bin\AnyCPU\Release\net6.0\Garnet.common.dll... 略Garnet.test.cluster - D:\Workspaces\garnet\test\Garnet.test.cluster\bin\AnyCPU\Release\net8.0\Garnet.test.cluster.dllGarnet.test.cluster - D:\Workspaces\garnet\test\Garnet.test.cluster\bin\AnyCPU\Release\net6.0\Garnet.test.cluster.dll已成功生成。0 个警告0 个错误已用时间 00:01:08.00执行构建成功后会在garnet\main\GarnetServer\bin\AnyCPU\Release目录下生成多个.net版本如果本机有装多个.net版本的运行程序 进入其中目录查看已构建生成Garnet应用的dll库和GarnetServer.exe运行程序可双击单独运行GarnetServer.exe即可启动Garnet服务 注此net8.0文件夹下实际就是我们已经编译后的可分发运行的exe程序和相关依赖库理论上复制完整的net8.0文件夹在任意有安装.Net 8.0 SDK对应版本Windows操作系统电脑上直接双击GarnetServer.exe运行服务暂未在其它Windows电脑上验证测试待测试后上传到GitCode上供下载
本文参考官方文档继续持行后续步骤
运行服务
完成上述两步后即已编译好Garnet服务可直接部署运行Garnet服务如下操作
进入garnet/main/GarnetServer/目录
$ cd main/GarnetServer/
运行Garnet服务
dotnet run -c Release -f net8.0
Garnet可以配置索引大小、内存大小、页面大小、数据文件路径、检查点路径、IP、端口等启动参数如下指定索引大小为为512M;
dotnet run -c Release -f net8.0 -- -i 512m
$ dotnet run -c Release -f net8.0 -- -i 512m_________/_||___||_\ Garnet 1.0.0 64 bit; standalone mode. \ / . Port: 3278.\ /. https://aka.ms/GetGarnet.* Ready to accept connections到此服务已正常启动Garnet默认情况下监听服务TCP端口为3278可通过Redis客户端工具进行远程或本地访问如访问不通排查防火墙是否限制端口访问
如果想了解更多Garnet服务启动命令配置可通过--help查看配置参数帮助详情
dotnet run -c Release -f net8.0 -- --help
$ dotnet run -c Release -f net8.0 -- --help
GarnetServer
Copyright (c) Microsoft Corporation--port (Default: 3278) Port to run server on--bind IP address to bind server to(default: any)-m, --memory (Default: 16g) Total log memory used in bytes(rounds down to power of 2)-p, --page (Default: 32m) Size of each page in bytes (roundsdown to power of 2)-s, --segment (Default: 1g) Size of each log segment in bytes ondisk (rounds down to power of 2)-i, --index (Default: 8g) Size of hash index in bytes (roundsdown to power of 2)--index-max-size Max size of hash index in bytes(rounds down to power of 2)...略
客户端访问
RedisInsight
本地有安装RedisInsight客户端工具该工具用于Redis服务访问使用该工具UI美观使用方便因此本处以该工具做为演示 配置连接信息
Host:127.0.0.1
Port:3278
Database Alias:本地-Garnet服务
点击Test Connection 进行连接测试提示测试成功后点击“Add Redis Database”按钮保存配置即可;
通过主界面打开配置的“本地-Garnet服务”访问Garnet服务Garnet高度兼容Redis命令与接口使用上和Redis操作相同因此可以根据需要添加与查询各种Key/Value键值
redis-cli
也可通过CMD命令行窗口调用redis-cli客户端工具直接访问
redis-cli.exe -h 127.0.0.1 -p 3278 结尾
到此Garnet服务安装与运行成功更多特性与玩法可自行参考官方文档深入摸索
因微软刚将Garnet开源此项目还处于持续研发与验证中除了微软内部有使用经验外外部企业与项目应用理因较少未知属于面向大众使用比较新的项目除官方文档外缺乏足够的社区信息和企业应用经验来提供借鉴
如要在项目上调研使用需要考虑Garnet服务落地使用风险因此尝试生产应用或大规模投产请三思而后行