分布式缓存-数据映射设计

在日常开发中,常常用到很多类似的数据及相同结构的表数据,在架构设计中,我们可以将这些数据可变或者不变的固定结构数据放到一张通用表中,做成类似数据字典形式,这样,开发中,直接使用这类数据,通过主要关键词或者键获取具体的value

1:各种下拉框,各种选择器

2:错误码,返回码,映射数据

3:通用key value结构的数据

1:数据库设计

-- 创建数据映射表
create table T_DATA
(
  t_data_id         VARCHAR2(100) not null,--数据主键
  t_data_name       VARCHAR2(100) not null,--数据名称
  t_create_time     VARCHAR2(17)  not null,--创建时间
  t_creater         VARCHAR2(17) not null,--创建人
  t_memo            VARCHAR2(100)--备注
)
alter table T_DICT add primary key (t_data_id)

-- 创建数据字典映射表
create table T_DATA_DETEAL
(
  t_data_id         VARCHAR2(100) not null,
  t_deteal_id       VARCHAR2(100) not null,
  t_deteal_value    VARCHAR2(100) not null,
  t_xh              NUMBER(3),
  t_create_time     VARCHAR2(17)  not null,--创建时间
  t_memo            VARCHAR2(100)--备注
)
alter table T_DATA_DETEAL add constraint FKT_DATA_DETEAL foreign key (t_data_id) references T_DATA (t_data_id);

将此表做成功能,对这两张表进行增删查改的操作。即可保持对数据的约束与管理

2:如何管理并做成分布式应用

2.1 做成功能性,增删查改操作

2.2 对这两张表用二级缓存存储,并建立分布式缓存,让数据字典的信息存储到二级缓存中,当我们查询的时候,如何获取数据映射?

将数据映射等基础服务的类做成公共jar包,每个应用并做成接口等形式,在spring初始化的时候,让其自动初始化,我们调用,之间通过spring的IOC调用数据映射,各个应用同时连接公共缓存

这样,这样就可以同时获取缓存的信息。

如若:各个应用配置了不同的缓存前缀,也可以设计成每个应用单独的数据映射缓存,当应用取缓存的时候,首先从本地取,取不到,再去调用管理平台的数据应用查询数据库。

2.3如果各个系统之间使用的key定义规则都不一样的缓存,那各个数据映射是如何保持一致性?或者说 分布式是如何管理缓存的

使用消息推送或者订阅来管理缓存

1:当管理系统更改新增管理系统,那么就要触发推送服务,触发更新已经订阅或者注册的应用,通知这些应用,清理数据映射缓存

其实这个推送,我们可以做成公共的,可以推送任意的内容,如推送短信,推送提醒,等等,这其中涉及到客户端和服务端

2:修改推送

当系统发生修改,系统触发推送,查询注册该事件的 数据库表,获取应用列表,Q名为动态Q名,通过注册的进行组织,变成真实的Q,轮询的推送到各个服务

3:启动订阅

当应用启动,应用自动调用管理系统,并写入注册事件

具体代码实现…

时间: 2024-12-28 07:53:20

分布式缓存-数据映射设计的相关文章

基于redis分布式缓存实现

第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–>转到Redis 解决写的问题: 水平拆分,对表的拆分,将有的用户放在这个表,有的用户放在

基于redis分布式缓存实现(新浪微博案例)

第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–>转到Redis 解决写的问题: 水平拆分,对表的拆分,将有的用户放在这个表,有的用户放在

如何实现redis分布式缓存

摘要: 第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有:  数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–>转到Redis 解决写的问题:  水平拆分,对表的拆分,将有的用户放在这个表,

如何用REDIS实现分布式缓存

摘要: 第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Struct

转载自haier_jiang的专栏基于redis分布式缓存实现

简单说明下,写此文章算是对自己近一段工作的总结,希望能对你有点帮助,同时也是自己的一点小积累. 一.为什么选择redis 在项目中使用redis做为缓存,还没有使用memcache,考虑因素主要有两点: 1.redis丰富的数据结构,其hash,list,set以及功能丰富的String的支持,对于实际项目中的使用有很大的帮忙.(可参考官网redis.io) 2.redis单点的性能也非常高效(利用项目中的数据测试优于memcache). 基于以上考虑,因此选用了redis来做为缓存应用. 二.

用于redis分布式缓存实现

第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–>转到Redis 解决写的问题: 水平拆分,对表的拆分,将有的用户放在这个表,有的用户放在

用REDIS实现分布式缓存

第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–>转到Redis 解决写的问题: 水平拆分,对表的拆分,将有的用户放在这个表,有的用户放在

为什么需要使用分布式缓存

转载:http://in.relation.to/Bloggers/StrongLiu 为什么需要使用分布式缓存(数据网格)呢? 本文旨在回到这个问题. 首先, 它是进化的产物. 本地缓存 > 集群缓存 > 分布式缓存(数据网格) 使用分布式缓存的原因中包括了为什么使用缓存集群, 而使用缓存集群的原因中包括了为什么使用本地缓存.(译注: 这句话感觉上真怪.) 性能 访问本地缓存中的一个对象比直接访问远端数据存储引擎(例如数据库)要快很多. 直接访问一个已经存在的对象比从数据创建一个对象要快.

缓存应用--Memcached分布式缓存简介

一.   什么是Memcached Memcached 是一个高性能的分布式内存 对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象 来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度. 相信很多人都用过缓存,在 .net 中也有内置的缓存机制,还有很多第三方工具如apache,nginx等可以做静态资源的缓存,同时我们也可 以制定自己的缓存机制,缓存数据库查询的数据以减少对数据库的频繁操作.但是很多时候我们总是感觉这些缓存总不尽人意, Memcached可以