iteye_19391 2013-05-04 09:14
浏览 243
已采纳

配置池怎么设计

1.有个后台服务A,访问它需要一些用户信息(用户名,密码等)
2.想提供一个新的服务B,把这些配置信息管理起来,以池的方式对外提供服务。比如,配置10组用户信息,客户端C请求B时,从池里取出一组用户信息访问后台服务A,访问后,释放配置信息到池中供其他客户端使用

问题:B可能是以集群方式部署的,即有B1,B2等多台物理或逻辑机器,C每次请求可能到B1,也可能到B2,如何设计配置池满足这种需求

方案:采用缓存服务器存储配置信息。目前项目中没用到缓存服务器,如果因为这个功能增加一个,感觉有点小题大做了。是否还有其他更简单的方法。

  • 写回答

3条回答 默认 最新

  • Dead_Knight 2013-05-04 10:28
    关注

    1楼建议在上层增加BX服务,但还是没解决BX从B1/B2/B3……访问到的数据一致性问题。但是这种方式可以增加扩展性(即:如果后面你增加了缓存服务器,那么客户端C可能就要更改实现方式了,如果有了BX服务,那么只要更改BX访问缓存服务器即可)

    我的理解是这样的。
    1.配置池类似于无顺序的栈。(客户端C获取配置,就是出栈;客户端C释放配置,就是压栈,不过栈内数据是随机的)
    2.由于配置池是放在B中,而B是随时可能做集群横向扩展的(目前不想增加缓存服务,但是又需要保证集群所有节点的配置信息一致)
    不知道我的理解是否正确。

    如果是这样的话,可以考虑以下方式:
    配置池实现:
    配置信息存放到集合中,配置池提供一个门面接口,只要访问这个门面接口,该接口通过随机算法(如果有特殊的均衡性要求),从集合中取出一个配置(并且从集合中remove掉取出的配置)

    缓存实现:
    1.在B服务中增加支持集群部署的分布式缓存(不需要单独部署缓存服务),只要缓存数据做变更,会通过底层的组播通信自动同步到所有节点。这样不管客户端C访问哪一台server,每个server都返回相同的数据:可考虑jbosscache、ehcache(oscache也能做到)。
    优点:利用现有的应用,不需要单独部署
    缺点:由于每次缓存数据做变更,会通过udp组播(jgroup)或者是jms通知所有集群节点更新数据,对生产环境有影响(如果缓存数据更新较少,则影响忽略不计)。

    2.单独部署缓存服务器(你已经忽略了,暂时不考虑)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥15 ANSYS分析简单钎焊问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译