该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-22
首先谢谢大家的回帖,该贴质量的提高正式得益于你们的回帖,下面我进一步阐述我的观点
codeutil 写道 已经有现成的jmemcached,也是基于mina:
http://www.thimbleware.com/projects/jmemcached linzongkao 写道 已经有现成的GMemcached,是基于Grizzly:
http://code.google.com/p/gmemcached/ 谢谢两位给出jmemcached和gmemcached的介绍连接,让我们开阔了眼界,但是我的想法不是完全再次实现一个memcached server,因为我觉得这样做意义不大,现有的c版本的memcached 的server已经是非常的优秀了。只不过memcached的server不能适合一些特殊场景,就是我文中提到的那些,所以我并不是实现了一个memcached server,我只是利用memcached的协议而已,这样做的好处是能利用memcached的丰富的周边(比如说现成的多语言客户端)。 cayson 写道 Grizzly 和 mina 感觉都是基于java NIO的网络框架,功能上有些重叠
是的,不要忘记还有我们国产的cindy,如果作者维护积极一点的话,我第一就选cindy nickcen 写道 感觉就是用nio实现了一个memcache的java client吧。跟多语言一点关系都没有把。
不是,和client一点关系都没有,是server端的事情 |
|
返回顶楼 | |
发表时间:2008-07-22
可以留个联系方式吗,有疑问请教,谢谢
|
|
返回顶楼 | |
发表时间:2008-07-22
memcached没有接触过,所以不是很明白楼主这种机制的用处何在。
不过这段时间做的一个项目里面遇到一个问题,大概的场景是这样的,由于客户端太多,因此我在服务端之前加了LVS来做负载均衡,但是这样就遇到了一个问题,客户端连到哪台服务器不是固定的,同时又有另外一个应用(同一个系统内的应用,但不是服务端)需要发消息给客户端,这个应用与各个服务端之间是通过MQ队列来通信的,每次它需要发消息给客户端,就发一个消息到队列里面,每个服务端都阻塞等待队列上消息的到达,因此应用发出来的消息被哪个服务端取到是随机的,但某个服务端取到消息之后,会先检查自己本机上的连接会话表,检查相应的客户端是否连接到本机,如果没有,就需要将消息转发给其他服务端。 最后实现的时候采用了Sun的Shoal来实现分布式的连接会话表,每次在本机的会话表插入记录的时候,会同时在Shoal维持的分布式缓存中插入相应的一条记录,当服务端在本机上的会话表中查不到相应的客户端时,会到Shoal维持的分布式缓存中去查找记录,若是找到记录,则将消息发给客户端当前连接到的那台服务端。 不知道大家有没有用过Shoal?我之所以用它,是因为它是Sun的Glassfish服务器的集群的实现基础,感觉应该性能不会太差,不过在网上貌似找不到测试评论,目前我自己也没有对Shoal的分布式缓存的性能做过测试。 刚搜了一下memcached的资料,感觉memcached也可以用在我上面的解决方案中用来替代Shoal。有没有什么资料对比过memcached和Shoal? 另外,对于我遇到的这个问题,我总感觉我这种解决方案不是太好,不知各位有没有遇到过相类似的场景,有没有什么更好的解决方案呢? |
|
返回顶楼 | |
发表时间:2008-07-22
看你的需求,可以用的东西其实挺多
比如ICE应该也可以实现你这个需求,内部使用也不要钱,也很多客户端 不知道是不是对你需求的理解不够透彻 |
|
返回顶楼 | |
发表时间:2008-07-23
思路不错,在socket上用memcached协议,同时依靠memcached提供的不同客户端,减轻了客户端的负担,但是不知道memcached协议的可靠性怎么样?
|
|
返回顶楼 | |
发表时间:2008-07-23
dennis_zane 写道 nickcen 写道 感觉就是用nio实现了一个memcache的java client吧。跟多语言一点关系都没有把。
是吗?你认真看了吗? 楼主这个思路可以作为WS、REST的替代品,做内部应用(异构同构皆可)间的交互。 多语本来就是memcache自己就能做到的。需要mina掺和吗? 内部应用会有很多异构吗?而且不要把Cache太泛化了,这东西跟WS,REST不是一个概念,不要玩弄概念了。 |
|
返回顶楼 | |
发表时间:2008-07-23
ahuaxuan 写道 首先谢谢大家的回帖,该贴质量的提高正式得益于你们的回帖,下面我进一步阐述我的观点
codeutil 写道 已经有现成的jmemcached,也是基于mina:
http://www.thimbleware.com/projects/jmemcached linzongkao 写道 已经有现成的GMemcached,是基于Grizzly:
http://code.google.com/p/gmemcached/ 谢谢两位给出jmemcached和gmemcached的介绍连接,让我们开阔了眼界,但是我的想法不是完全再次实现一个memcached server,因为我觉得这样做意义不大,现有的c版本的memcached 的server已经是非常的优秀了。只不过memcached的server不能适合一些特殊场景,就是我文中提到的那些,所以我并不是实现了一个memcached server,我只是利用memcached的协议而已,这样做的好处是能利用memcached的丰富的周边(比如说现成的多语言客户端)。 cayson 写道 Grizzly 和 mina 感觉都是基于java NIO的网络框架,功能上有些重叠
是的,不要忘记还有我们国产的cindy,如果作者维护积极一点的话,我第一就选cindy nickcen 写道 感觉就是用nio实现了一个memcache的java client吧。跟多语言一点关系都没有把。
不是,和client一点关系都没有,是server端的事情 对的,是我看错了,这是服务器端,你用mina实现了一个能响应memcache get请求的server。你的这个server能比memcached的性能好?有report? |
|
返回顶楼 | |
发表时间:2008-07-24
memcached的java客户端好像可以设置连接池呀!这个连接池里的东西不就是长连接吗?
|
|
返回顶楼 | |
发表时间:2008-07-24
nickcen 写道 对的,是我看错了,这是服务器端,你用mina实现了一个能响应memcache get请求的server。你的这个server能比memcached的性能好?有report? 如果你有兴趣,我当然愿意和你讨论下去,不过前提是你需要理解我在说什么,否则就讨论不到一块儿去了。 引用 首先谢谢大家的回帖,该贴质量的提高正式得益于你们的回帖,下面我进一步阐述我的观点 codeutil 写道 已经有现成的jmemcached,也是基于mina: http://www.thimbleware.com/projects/jmemcached linzongkao 写道 已经有现成的GMemcached,是基于Grizzly: http://code.google.com/p/gmemcached/ 谢谢两位给出jmemcached和gmemcached的介绍连接,让我们开阔了眼界,但是我的想法不是完全再次实现一个memcached server,因为我觉得这样做意义不大,现有的c版本的memcached 的server已经是非常的优秀了。只不过memcached的server不能适合一些特殊场景,就是我文中提到的那些,所以我并不是实现了一个 memcached server,我只是利用memcached的协议而已,这样做的好处是能利用memcached的丰富的周边(比如说现成的多语言客户端)。 javaeyename 写道 memcached的java客户端好像可以设置连接池呀!这个连接池里的东西不就是长连接吗?
这篇文章并没有说是开发客户端的东西,跟客户端没有直接联系。 |
|
返回顶楼 | |
发表时间:2008-07-24
nickcen 写道 dennis_zane 写道 nickcen 写道 感觉就是用nio实现了一个memcache的java client吧。跟多语言一点关系都没有把。
是吗?你认真看了吗? 楼主这个思路可以作为WS、REST的替代品,做内部应用(异构同构皆可)间的交互。 多语本来就是memcache自己就能做到的。需要mina掺和吗? 内部应用会有很多异构吗?而且不要把Cache太泛化了,这东西跟WS,REST不是一个概念,不要玩弄概念了。 无语了,您想争论至少搞明白楼主在说什么?太无语了。人家根本不是在说cache,只是借memcached协议这个壳。 |
|
返回顶楼 | |