使用本地最新缓存运行Java服务器集群

时间:2017-03-07 16:07:02

标签: java performance redis cloud distributed-computing

我需要创建一个集群微服务(意味着它是一个在不同节点上运行,复制的服务)。该服务需要“超快”用于“GET”操作,例如:当接收用户名然后用用户令牌响应时。 此服务在其他令牌操作(如保存/更新/删除)上可能会很慢。

问题和假设:

  • 登录的用户(拥有令牌)可以是10,000到20,000个用户。
  • 速度:对于“getToken”操作,服务需要超快,所以我需要一些方法将它存储在内存中本地,例如:HashMap。
  • 陈旧:由于有副本,我有微服务,也可能会以某种方式拥有相同的缓存。
  • 慢:执行令牌更新/删除/保存时可以执行慢操作,没问题,只要更新/删除/保存后,所有缓存都是最新的。

我已经开始将Redis视为缓存和存储用户会话的流行语,,我发现人们很困惑,并且没有正确的答案以上问题。 Redis是一个Cached数据库,这意味着它在内存中运行,但它不能在我的情况下使用,因为我是一个具有本地内存副本的集群服务,REDIS无法同步我的本地缓存(或者它)。 Redis不能给我这个问题的解决方案,REDIS驱动程序没有同步我的HashMap,虽然我想到Redus的一些pub / sub来解决这个问题,但仍然是它的陈旧数据!

我认为“超级快”是使用本地Java HashMap,启动时的每个微服务都会从某个DB(谁关心哪个DB)获取Tokens数据,并且在READ生成时,只需从中提供数据本地内存,但是,当更新/删除/保存时,然后将消息发送到消息队列,并等待消息队列扇出所有消息给订户(其他副本)。

我不确定我是否在这里发明了这个轮子,我的意思是,这是分布式缓存的常见问题,还有其他任何已知的解决方案吗?记住,只有GET操作需要快速。

0 个答案:

没有答案