帮忙看下我的JAVA分布式架构? 400 报错
基于Zookeeper和netty写的,直接说问题:
首先我的这个是基于RPC(netty)消息传递(用的google protocol buffer).
分三层:最上层是Web server(Tomcat). 中间层是 Master Server(负载均衡,缓存定位,计算等服务). 最下层是 各种各样的 Salve Server
我目前了解的消息传递方式有2种:
1.Web只和Master链接. Master与所有的Slave链接,并接收web的请求,将web请求转发给slave,最终将结果返回给web.
这样做的好处是消息能够统一处理,思路比较清晰。但是!对网络的利用不好,因为每个请求和返回要走2次网络。当返回为较大的缓存数据时比较头大! 并且Master压力过于繁重!
2.Web和master链接,也和slave链接。 Master不链接任何Slave,它只告诉web去访问哪个slave处理这个请求。最后web直连slave做消息处理。
这样做的好处是网络利用非常好,请求和返回只在网络中传递一次。(当然还有一个web向master询问slave信息的请求和返回,这个信息量很小。。可以不计) 但是!消息不能统一处理,比如我要有一个手机应用要做和web同样的事情,那么要copy很多同样的代码! 并且此时Master干的活非常的少。。。。
我目前是第二种。。。。。。有木有更好的方式?或者我的分布式架构完全是错的。。。。。
这个我不懂,帮顶######Thx~######手机和web访问同样的接口不行么######
参考淘宝 dubbo
注册中心,monitor,admin界面
######多谢~我参考下######你这个和dubbo是一模一样的。连底层采用的都一样。如果要用protobuf,那你就针对dubbo开发protobuf协议支持就实现你的要求了。
dubbo原来说要支持protobuf的,不知道现在支持了没有。
######多谢 ~~ 我参考下。######个人也倾向第二种方案,避免copy代码的话,可以重构出一个公共的jar包,这样系统的依赖性就降低了######是的~~我也是这么打算的,本来打算就这么做的,不过还是上来发帖问问,哈哈。。######另外,如果只是Java层面的内网通讯,建议看看hadoop ipc模块(效率更高 http://git.oschina.net/jiangdx/hadoop-ipc )######好的,我看下。######第二种,Master Server和Web合并。手机和web访问同样的接口 +1。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。