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条)

报告相同问题?

悬赏问题

  • ¥20 求帮,直连能连上oracle12,但是thinkphp6就是报错
  • ¥15 paddleocr运行报错
  • ¥15 怎么用 matlab 设计滞后-超前串联校正网络
  • ¥15 MFC引用C#生成的dll,将dll放置到非exe程序目录,如何操作
  • ¥15 C#创建webservice接口,三方通过多次跳转访问本方服务,获取wsdl文档,wsdl中ip地址为局域网内本机地址而非三方直接访问的地址。
  • ¥15 关于#wireshark#的问题:需要安卓app流量数据集要安卓流量做包序列长度的实验,比如某些流量是在看视频还是在发评论
  • ¥15 Smail语句如何使用判断语句跳过验证卡密界面
  • ¥15 关于#wireshark#的问题:并且能够给数据做标注,如这个流量是在看视频或者是在转账
  • ¥15 运筹优化,gurobi,python
  • ¥20 springmvc重定向和返回json