architectural-patterns
全部标签 我目前正在考虑将分页架构库(在撰写本文时版本为2.1.0-beta01)整合到我的应用程序中。一个组件是允许用户从中删除单个项目的列表。此列表仅限网络,使用Room进行本地缓存没有意义。PagedList是不可变的,不支持修改。我已经读过,拥有一份列表副本,然后修改并作为新列表返回是要走的路。文档声明相同:Ifyouhavemoregranularupdatesignals,suchasanetworkAPIsignalinganupdatetoasingleiteminthelist,it'srecommendedtoloaddatafromthenetworkintomemory.
任务。使用CQRS/事件源架构构建可扩展的高负载应用程序。让我们假设它是一个有很多在线用户的免费广告板。所以用户应该能够:注册/登录添加/更新/删除广告查看广告列表搜索广告一段时间后分析广告/从EventStore重现每个应用状态。我的想法。我会考虑使用类似的东西:Cassandra/MongoDB...-商店事件Kafka/Redis/Hazelcast/RabbitMQ...-事件队列Elasticsearch+缓存(例如Redis)-用于View问题。在每个步骤中使用一个对比另一个的优缺点是什么?或者将事件存储与队列结合起来(例如,使用Kafka作为队列和长期事件存储)?是否有人
我正在对我的登录实现阻止,因此如果发生多次(10次?)登录失败(比如有人试图暴力破解密码),该帐户在几分钟内无法尝试登录(即使使用有效密码))...我想到了使用Redis的速率限制模式,在redis.io中他们提供了两种可能的实现:Pattern:Ratelimiter但它们会给两者带来问题,尤其是在并发或丢失命令的情况下。您推荐什么解决方案? 最佳答案 我找到了一个可能的解决方案。这是伪代码:FUNCTIONLIMIT_API_CALL(key):value=INCR(key)IFvalue>10THENERROR"toomany
任何人都可以列出像TDG(表数据网关)这样的redis模式吗?其实我试过TDG,但我不满意。 最佳答案 表数据网关描述了用作数据库中表的接口(interface)或网关的对象。单独的Redis相当于数据库存储,因此您需要一个对象(可能使用ruby或php创建)作为redis数据集中一个键或一组键的接口(interface)。最接近的模型是一个对象,它充当保存数据集合(如集合或列表)的键的接口(interface)。希望对您有所帮助。 关于design-patterns-里兹模式,我们
我想通过Redis共享具有以下要求的状态:解耦:解耦发布者和订阅者单一所有权:每个状态都由一个发布者设置推送:一旦状态发生变化,必须立即通知相关订阅者拉取:订阅者初始化后应立即拉取相关状态如果在没有PULL的情况下需要PUSH,pub\sub将是最优的如果在没有PUSH的情况下需要PULL,一个简单的redis键和值就可以很好地工作支持所有需求的最佳设计模式是什么? 最佳答案 一个解决方案是同时使用pub\sub来发布(推送)状态更改,并使用散列来保持订阅者可以从中读取(拉取)的每种最新发布状态唯一的障碍是您需要按如下方式处理竞争条
我有一个充当数据层的应用程序,负责对数据库执行所有CRUD操作。由于可用性问题,我们在其上维护Redis缓存,最终将充当辅助数据源。频繁访问主要数据源会导致节流和延迟问题。某些操作也会根据发布到数据库的更新而触发。我试图将辅助数据源更新和基于这些更新触发的操作从数据访问层抽象到serverlessarchitecture.步进函数是否最适合上述用例?或者我应该考虑不同的架构?CurrentArchitecture 最佳答案 根据您提出的如下所示的架构,我认为步骤功能不是必需的。我会使用SNS将更新分散到多个SQS队列:队列#1触发一
我正在开发一个我认为需要队列的应用程序。我已经打算在应用程序中使用RedisEnterprise,因此将Redis用于队列是有意义的。Redis有一些有用的队列命令:https://redis.io/commands/rpoplpush#pattern-reliable-queue.我有插入记录的生产者和处理和删除记录的消费者。我可以很容易地让生产者和消费者横向扩展。因此,在规模上瓶颈将是Redis,因为队列只能存储在单个分片上。有没有一种跨多个分片分布队列的好方法?我能想到的唯一解决方案是创建多个队列,并以某种方式确保每个队列散列到不同的分片。但这需要在Redis重新分片时更改生产者
据我了解,Redis完全在内存中运行,只是将其数据同步回磁盘,这是它如此之快的主要原因。他们的网站说virtualmemory已弃用,围绕该声明的散文似乎表明他们的近期计划不包括继续支持大于系统内存的数据库(老实说,这描述了我使用过的大多数数据库,甚至具有规范化优势的RDBMS。这是否意味着Redis不再适合(长期)作为数据密集型或高流量应用程序中主要或唯一数据存储的候选者?我应该坚持使用SQL/Mongo/Raven/等吗?用于主要事件,而只考虑Redis用于偶尔的附加功能(缓存等)?或者是否有人在不使用已弃用的VM功能的情况下成功地使用Redis进行了扩展?如果是这样,怎么做到的?
我正在从事一个包含5个子项目的大型企业项目-被视为独立的应用程序。为了简单起见,两个API提供数据,另外三个使用它们并与用户交互。它们不共享相同的缓存。API主要缓存查询和解析/转换的XML,而消费者主要缓存API调用和用户相关数据。每个API项目都有5个环境,每个使用者有4个环境。2*5+3*4=22个环境。目前它们都使用单独的memcached服务(所以22)。我们考虑/计划迁移到Redis作为缓存平台,我们正在考虑RedisCluster,但我们也希望有良好的数据分离。对于每个项目/环境,拥有22个集群似乎不是正确的选择。有哪些替代方案? 最佳答案
当我想从databaseMetaData中获取表时,我得到这个错误:Exceptioninthread"main"java.sql.SQLException:TablenamepatterncannotbeNULLorempty.atcom.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:545)atcom.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513)atcom.mysql.cj.jdbc.excepti