济南市住房与城乡建设厅网站,做网站上是外部连接怎么改,长春网络科技公司排名,做电商网站企业前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到教程。
官方ISSUE参考
https://github.com/alibaba/dubbo/issues 注册中心ZookeeperRegistry.doSaveProperties warn 2014-10-1419:56:51WARN …前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到教程。
官方ISSUE参考
https://github.com/alibaba/dubbo/issues 注册中心ZookeeperRegistry.doSaveProperties warn 2014-10-1419:56:51WARN [com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.doSaveProperties(221)] [DUBBO] Failed to save registry store file, cause: Can not loc k the registry cache file /homearch/.dubbo/dubbo-registry-192.168.1.109.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.re gistry.filexxx.properties, dubbo version:2.5.3, current host:192.168.1.22 java.io.IOException: Can not lock the registry cache file /homearch/.dubbo/dubbo-registry-192.168.1.109.cache, ignore and retry later, maybe multi java process use t he file, please config: dubbo.registry.filexxx.properties at com.alibaba.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:193) at com.alibaba.dubbo.registry.support.AbstractRegistry$SaveProperties.run(AbstractRegistry.java:150) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 2014-10-1419:56:51WARN [com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.doSaveProperties(221)] [DUBBO] Failed to save registry store file, cause: Can not loc k the registry cache file /homearch/.dubbo/dubbo-registry-192.168.1.109.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.re gistry.filexxx.properties, dubbo version:2.5.3, current host:192.168.1.22 java.io.IOException: Can not lock the registry cache file /homearch/.dubbo/dubbo-registry-192.168.1.109.cache, ignore and retry later, maybe multi java process use t he file, please config: dubbo.registry.filexxx.properties at com.alibaba.dubbo.registry.support.AbstractRegistry.doSaveProperties(AbstractRegistry.java:193) at com.alibaba.dubbo.registry.support.AbstractRegistry$SaveProperties.run(AbstractRegistry.java:150) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 原因
dubbo会默认会在本地缓存注册中心的信息文件默认路径在//home/[user]/.dubbo/dubbo-registry-192.168.1.109.cache一个服务有多个应用有用到dubbo的时候更新注册中心的本地缓存在更新本地缓存冲突时就报了上面的warning
如何消除这个warn
在dubbo.properties文件里加入
dubbo.registry.file/home/xxx/app/dubbo-registry.propertiesPS:Dubbo将自动加载classpath根目录下的dubbo.properties可以通过JVM启动参数-Ddubbo.properties.file/home/xxx/dubbo.properties 改变缺省配置位置。
影响 这个warn可以忽略只在存储文件的时候才报存储的文件在AbstractRegistry构造函数里加载是在启动的时候用 错误的服务提供者IP注册到中心 hostname解析错误或者可能是使用了VPN启动了dubbo服务提供者应用,又连了正式环境的注册中心 一旦dubbo获取的ip错误后拨了vpn 本机IP就会有多个 这种情况即使提供者服务停掉目前dubbo没有能力清除这类错误的提供者 需要修改源码测试需要客户端重新更细包因为清除动作client端 这种情况同样发生在测试的dubbo注册中心 规避方案
线上最好直接把10.10.10.10服务器的2181端口做ip限制VPN拨上的IP过滤掉(旭峰看能不能做到)团队人员行为控制拨VPN又需要调试dubbo提供者的应用时指定DUBBO服务的主机绑定
发现这种情况的解决方法
到dubbo管理后台禁用错误的服务提供者
Dubbo主机绑定说明 缺省主机IP查找顺序
通过LocalHost.getLocalHost()获取本机地址hostname做解析从而获取IP地址的ping hostname。如果是127.*等loopback地址则扫描各网卡获取网卡IP。注册的地址如果获取不正确比如需要注册公网地址可以 1. 可以在/etc/hosts中加入机器名 公网IP比如 test1 205.182.23.201
2. 在dubbo.xml中加入主机地址的配置 dubbo:protocol host205.182.23.201
3. 或在dubbo.properties中加入主机地址的配置 dubbo.protocol.host205.182.23.201 或 JAVA_OPTIONS-Ddubbo.protocol.host192.168.1.111
怎么样一次访问调用集群中所有节点
配置下消费者端即可。dubbo已经支持广播调用《broadcast》 dubbo:referenceidtestserviceinterfacexxx.TestServicetimeout8000clusterbroadcast/
spring jar包冲突
我们现在用的spring是3而dubbo引用的是2.5.6会造成jar包冲突需要排除 错误信息WARN:oejuc.AbstractLifeCycle:FAILED ModelViewController: java.lang.NoSuchFieldError: APPLICATION_CONTEXT_ID_PREFIX 解决办法dependency groupIdcom.alibaba/groupId artifactIddubbo/artifactId version2.4.9/version exclusions exclusion groupIdorg.springframework/groupId artifactIdspring/artifactId /exclusion /exclusions /dependency
异步调用问题 dubbo的异步调用发现个问题
A -----[异步]-- B --[同步调用]--C B同步dubbo调用C就会直接返回null
如果B调用C后下一步还有同步调用DD返回的会正确 服务端开发不注册到中心
开发调试的时候开发的dubbo服务不要注册到注册中心。不注册的方法如下建议用1或2 1:启动jvm参数-Ddubbo.registry.address192.168.1.109:2183?registerfalse 2:改propertiesdubbo:registry address192.168.1.109:2183?registerfalse/
3:dubbo.xml 配置dubbo:registry address192.168.1.109:2183 registerfalse /上线要改回来 dubbo-monitor-simple 里面有个配置dubbo.statistics.directory${user.home}/monitor/statistics
下面的监控是写文件的导致服务器的文件过多几个月下来inode都要满了。
定期清理或者用dubbo-monitor-x吧入mysql oschina有一个开源项目http://git.oschina.net/handu/dubbo-monitor 状态被禁用管理后台设置无效
不知道什么原因管理后台看服务是禁用状态而且启用不成功感觉是哪里配置写进去的地方写错具体原因没分析
解决方法就是去登录zookeeper里手段删除配置节点
zkCli.sh -server 192.168.1.23:2183 delete /dubbo/xxxx.xxxx.Service/configurators/xxxxxxx DUBBO的回调问题指导文档是试用生产上慎用
provider consumer: 正常调用
provider consumer: 回调
例子里消费的端配置是
dubbo:reference idcallbackService interfacecom.callback.CallbackService /
CallbackService callbackService (CallbackService) context.getBean(callbackService);callbackService.addListener(http://10.20.160.198/wiki/display/dubbo/foo.bar, new CallbackListener(){public void changed(String msg) {System.out.println(callback1: msg);}
});
注意点1初始化的时候必须调用callbackService.addListener后provider在调用回调服务客户端才能收到。
注意点2: provider如果重启了consumer如果没有重启这时候如果provider直接进行回调是掉不通的。
如果你重现再consumer里再callbackService.addListener那就可以了。 原因跟回调实现有关dubbo的回调暴露CallbackServiceCodec实现consumer的接口暴露。
1.callbackService.addListener
2.CallbackServiceCodec(tcp进行callback的编码、并export回调服务
3.tcp传输编码--
4.provider收到编码CallbackServiceCodec.decode解码知道consumer有回调接口暴露生成invoker
5.这个时候provider就可以调用invoker了。 所以如果provider重启了内存里的callbackService 的invoker就没有了。
刚开始看到回调以为能很好的解决相互依赖实现provider对consumer的调用 比如场景
业务系统依赖配置中心。
配置中心后台修改了配置想下发到业务系统广播调用。
用回调有很多问题1.上面provider重启问题2.回调没有类似的广播调用。
这种场景大致的dubbo扩张方案如果谁有解决方案多谢指导
看了下如果通过回调机制扩展有相当大麻烦按目前对他的理解程度所以比较简单的
1.provider发布share包时候直接包consumer暴露成一个provider就是让他相互依赖。
2.通过注册中心zookeeper建立监听和通知机制相对会破坏一点原来的注册中心定位 管理中心的服务注册信息不同步
重新发布服务后发现管理中心的服务信息没有更新包括PID TS以为应用没更新。
这类问题可以直接登录zookeeper进行查看
zkCli.sh -server 192.168.1.23:2183 扩展点自动激活
dubbo开发文档自动激活filter是从ProtocolFilterWrapper 调ExtensionLoader.getActivateExtension Activate // 无条件自动激活
public class XxxFilter implements Filter {// ...
}
其实需要加上
span stylecolor:#7f9f7fActivate(group {provider,consumer})/span
ExtensionLoader.getActivateExtension
private boolean isMatchGroup(String group, String[] groups) {if (group null || group.length() 0) {return true;}if (groups ! null groups.length 0) {for (String g : groups) {if (group.equals(g)) {return true;}}}return false;
} boolean isMatchGroup(String group, String[] groups) {if (group null || group.length() 0) {return true;}if (groups ! null groups.length 0) {for (String g : groups) {if (group.equals(g)) {return true;}}}return false;
} 广播地址绑定失败:Cant assign requested address mac dubbo
dubbo:registry addressmulticast://224.5.6.7:1234/registry addressmulticast://224.5.6.7:1234/ This was caused by an IPv6 address being returned from java.net.NetworkInterface.getDefault(). Im on a Macbook and was using wireless -- p2p0 (used for AirDrop) was returned as the default network interface but my p2p0 only has an IPv6 ether entry [found by running ipconfig].
Two solutions, both of which worked for me (I prefer the first because it works whether you are using a wired or wireless connection)
Start the JVM with -Djava.net.preferIPv4Stacktrue. This caused java.net.NetworkInterface.getDefault() to return my vboxnet0 network interface -- not sure what youll get if youre not running a host-only VM.Turn off wireless and use a wired connection