zoukankan      html  css  js  c++  java
  • 关于ResolverService

    ResolverService使用的消息包括ResolverQueryMsg和ResolverResponseMsg,这些消息中只能加载字符串类型的数据,因此不能支持序列化,无法利用序列化带来的好处。无法序列化使得许多设计模式没有了用武之地。

    一个解决方式是将对象序列化后的字节数组重新编码为字符串(可以借助某些库例如commons-codec实现),但是这样处理是否太丑了;而且有违ResolverService的原意(否则它就应该提供二进制传输的能力)。

    在使用管道进行通信时是支持二进制消息的。

    ----------------------------------------------------------------------------------------------------------

    ResolverService只能注册一个handler,那么所有的请求、响应都必须在这个handler中处理吗?

    DiscoveryService底层也是使用ResolverService,它又是怎么对请求/响应进行处理的,它不会与其他在同一个对等组中使用ResolverService(比如我们自己利用ResolverService实现的某些功能) 的功能冲突么???有时间参考一下DiscoveryService的源代码,看看它是怎样做到ResolverService在功能上的隔离的。

    现在想想DiscoveryService也有同样的问题啊? 凡是注册过的监听器,只要有消息,都会收到通知。但怎样知道是不是自己感兴趣的消息呢?

    -----------------------------------------------------------------------------------------------------------

    唔,刚看了下源代码,不同服务使用的ResolverService会注册不同的handler,它们的键值不同(通常是服务通告的ModuleClassID)。

    因此多个使用ResolverService的服务之间不会冲突,DiscoveryService不会与其他的服务冲突。

  • 相关阅读:
    java ssh整合报错:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
    Ubuntu16.04安装搜狗输入法后有黑边问题的解决方法
    socket
    vim编辑器的使用
    linux用户和群组
    bash shell
    [LightOJ 1128]Greatest Parent
    [Luogu P4180][BJWC 2010]严格次小生成树
    函数、方法区别
    有关_meta内容(持续更新)
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2169944.html
Copyright © 2011-2022 走看看