DCache 分布式存储系统|Key-Value 缓存模块的创建与使用

作者 | Eaton导语 | 随着微服务与云的发展,分布式架构的需求变得越来越普遍,传统的 SQL 结构化存储方案已经跟不上脚步,于是 NoSQL 出现了。DCache 作为基于 TARS 的分布式 NoSQL 缓存系统,完美支持 TARS 服务。在前一篇文章中,我们介绍了 DCache 的特性、如何在 TARS 上部署 DCache 并创建一个应用 TestDemo。本文将继续介绍如何创建和使用 DCache 中的 KV 缓存模块。系列文章DCache 分布式存储系统|DCache 部署与应..
摘要由CSDN通过智能技术生成

作者 | Eaton

导语 | 随着微服务与云的发展,分布式架构的需求变得越来越普遍,传统的 SQL 结构化存储方案已经跟不上脚步,于是 NoSQL 出现了。DCache 作为基于 TARS 的分布式 NoSQL 缓存系统,完美支持 TARS 服务。在前一篇文章中,我们介绍了 DCache 的特性、如何在 TARS 上部署 DCache 并创建一个应用 TestDemo。本文将继续介绍如何创建和使用 DCache 中的 KV 缓存模块。

系列文章

简介

DCache 是一个基于 TARS 框架开发的分布式 NoSQL 存储系统,支持多种数据结构,包括了 key-value(键值对),k-k-row(多键值),list(列表),set(集合),zset(有序集合)等,满足多种业务需求。

其中 key-value 是最简单也是最常用的类型,我们只需完成以下步骤即可在服务中使用 key-value 缓存服务

  1. 创建 KV 缓存模块
  2. 获取 DCache 接口文件
  3. 创建缓存服务代理
  4. 调用缓存模块服务

DCache 中为 KV 提供了插入、替换、删除和批量操作键值等丰富的操作接口,使用上非常方便。本文将基于 TestDemo 介绍如何创建 Key-Value 缓存模块,以及怎么在 TARS 服务中调用该服务来缓存数据。

本文使用的示例可以在 GitHub 仓库 DCacheDemo 中查看。

应用场景

DCache 的 KV 缓存模块为常规 key-value 缓存应用,一个键 key 对应一个值 value。value 一般为字符串类型。适用于结构简单的数据,常用于常规计数,如微博数, 粉丝数等,如下图。

对于一些复杂的结构化数据,比如需要为一个 key 存储多个值,通常有两种实现方式。一种是通过序列化存储实现,将多个字段存储在 value 中,需要处理多个字段并发读写的问题。另一种是通过将 id 和字段作为 key 的方式存储多个键值对实现,比如 Jane_age 存储 Jane 的年龄, Jane_email 存储 Jane 的邮箱,这样 key 中会有大量重复用户 ID。如下图

因此一般会使用其它缓存类型来存储结构化数据,比如 DCache 中的 k-k-row。该类型我们将在下一篇文章详细介绍。

创建 KV 缓存模块

与 TARS 中应用与服务之间的关系相似,一个 DCache 应用中能够创建多个缓存模块服务。每个缓存模块支持一种缓存数据结构,通过在一个应用中创建多个不同数据结构的缓存模块,能够实现多种数据类型的存储,满足多种需求。本文将介绍如何创建 KV 模块,其他数据类型相关内容将在之后的文章中分享。

首先,在 DCache 页面进入 服务创建 > 创建模块,选择我们之前创建的应用 TestDemo,模块名要求以应用名开头,这里我们因为创建的是 KV 模块,我们命名 TestDemoKV,如下

进入第二步的模块配置,cache 类型 选择 key-value(KVCache),填充备注

第三步服务配置,选好服务 IP 节点,并选择一个 MySQL 实例,在前一篇文章中我们已经添加过一个 MySQL 实例。如果需要使用新的 MySQL 服务,选中下方的 MySQL 实例信息 输入实例信息即可。如下,点击 下一步

弹出字段配置窗口,保持默认即可,点击 确定

确认好已配置信息后,点击 安装发布 即可完成发布。

到这里,我们就可以在其它服务中使用该缓存模块来缓存 Key-Value 数据了。

总体来说,创建缓存模块的过程分为三步:模块创建、模块配置和服务配置。模块配置时,大家按需选择缓存类型即可。

获取 DCache 接口文件

我们提到过,DCache 是基于 TARS 开发的,因此使用上和 TARS 服务一样,也是通过 .tars 接口文件来调用对应缓存服务的接口。不同的是,DCache 的接口文件是固定的,我们只需复制 DCache/src/TarsComm 下的 CacheShare.tars, ProxyShare.tarsDCache/src/Proxy 下的 Proxy.tars 到自己项目目录下即可。

例如本文 Demo 获取 DCache 接口文件后的项目文件结构如下

DCacheDemo
├── CacheShare.tars
├── ProxyShare.tars
├── Proxy.tars
├── config.conf
├── main.cpp
└── makefile

创建缓存服务代理

当我们创建了一个应用,它会自动创建一个路由服务和代理服务。比如我们之前创建的 TestDemo,就会自动创建一个路由服务 TestDemoRouterServer 和一个代理服务 TestDemoProxyServerTestDemo 下每个缓存模块都是通过代理服务 TestDemoProxyServer 来访问的。

因此,在 TARS 服务或客户端中,我们只需要创建一个该代理服务的代理对象即可调用 TestDemo 下的缓存模块。

例如,我们在 main.cpp 中通过如下代码创建 TestDemoProxyServer 的代理对象 prx

// main.cpp
#include <iostream>
#include <map>
#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值