dubbo配置文件报错dubbo缓存文件怎么打开

2774人阅读
dubbo(7)
代码示例访问我的github:
dubbo-config模块 资源配置中心
主要包含了所有模块需要的配置文件,比如数据库设置、缓存配置、日志配置、安全配置、spring配置等等。主要文件为propertie和xml文件。其他模块常用通过spring的方式来引用需要的相关配置。
首先使用maven配置环境
主要分为三种
1.开发环境 dev
2.测试环境 test
3.生产环境 prod
在dubbo-simple-service-impl模块下创建三个文件夹dev、test、prod,并在其pom.xml文件中配置如下:
在maven打包时会根据package.env参数设置来获取不同环境的资源文件配置。默认激活开发环境。
需要配置打包资源文件夹路径,这里需要包含打包对应的环境路径变量如下图:
配置spring
1. 在dubbo-simple-service-impl 项目中dev目录下加入spring.xml。
配置如下:
2.在dubbo-simple-service-impl 项目中src/main/resources目录下加入
/dubbo目录下并加入registry-dubbo.xml、service-dubbo.xml 、 reference-dubbo.xml
registry-dubbo.xml主要配置注册中心、服务提供者和服务消费者核心配置
service-dubbo.xml 该模块提供服务的配置。
reference-dubbo.xml 该模块消费服务的配置。
3.registry-dubbo.xml配置
4.在dubbo-config模块 src/main/resources目录下创建dubbo.properties、project.properties 和&log4j.xml。
project.properties 项目的主要服务器配置。
dubbo.properties 主要设置dubbo使用spring作为容器及配置文件名
log4j.xml 日志
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:117706次
积分:2105
积分:2105
排名:第18981名
原创:96篇
转载:38篇
评论:13条
(3)(2)(9)(2)(2)(6)(1)(1)(21)(15)(21)(1)(3)(1)(6)(9)(7)(2)(2)(5)(3)(12)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'8387人阅读
Dubbo(1)
注册中心ZookeeperRegistry.doSaveProperties warn
9: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.file=xxx.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.file=xxx.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)
9: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.file=xxx.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.file=xxx.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会默认会在本地缓存注册中心的信息文件,默认路径在
一个服务有多个应用有用到dubbo的时候更新注册中心的本地缓存,在更新本地缓存冲突时,就报了上面的warning;
如何消除这个warn:
在dubbo.properties文件里加入;
dubbo.registry.file=/home/xxx/app/dubbo-registry.properties
PS: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中加入主机地址的配置:
&&host=&205.182.23.201&&
3. 或在dubbo.properties中加入主机地址的配置:
dubbo.protocol.host=205.182.23.201 或&JAVA_OPTIONS=&-Ddubbo.protocol.host=192.168.1.111
怎么样一次访问调用集群中所有节点?
配置下消费者端即可。dubbo已经支持广播调用《broadcast》
&dubbo:referenceid=&testservice&interface=&xxx.TestService&timeout=&8000&cluster=&broadcast&/&
spring jar包冲突
我们现在用的spring是3,而dubbo引用的是2.5.6,会造成jar包冲突,需要排除
错误信息:WARN:oejuc.AbstractLifeCycle:FAILED ModelViewController: java.lang.NoSuchFieldError: APPLICATION_CONTEXT_ID_PREFIX
解决办法:&dependency&
&&&&&&&&&&&&&groupId&com.alibaba&/groupId&
&&&&&&&&&&&&&artifactId&dubbo&/artifactId&
&&&&&&&&&&&&&version&2.4.9&/version&
&&&&&&&&&&&&&&&&&exclusions&
&&&&&&&&&&&&&&&&&exclusion&
&&&&&&&&&&&&&&&&&&&&&groupId&org.springframework&/groupId&
&&&&&&&&&&&&&&&&&&&&&artifactId&spring&/artifactId&
&&&&&&&&&&&&&&&&&/exclusion&
&&&&&&&&&&&&&/exclusions&
&/dependency&
异步调用问题
&&dubbo的异步调用发现个问题
A&-----[异步]--&&&&&B&&&--[同步调用]--&C
B同步dubbo调用C,就会直接返回null
如果B调用C后,下一步还有同步调用D,D返回的会正确;
服务端开发不注册到中心
dubbo服务开发不参加联调的时候,可以不注册到中心
1.jvm启动参数 -Ddubbo.registry.address=192.168.1.109:2183?register=false
或dubbo.xml 配置&&address=&10.20.153.10:9090& register=&false& /&(上线要改回来)
dubbo-monitor-simple
里面有个配置dubbo.statistics.directory=${user.home}/monitor/statistics
下面的监控是写文件的,导致服务器的文件过多,几个月下来inode都要满了。
定期清理,或者用dubbo-monitor-x吧,入mysql
oschina有一个开源项目:&
状态被禁用,管理后台设置无效
不知道什么原因,管理后台看服务是禁用状态,而且启用不成功,感觉是哪里配置写进去的地方写错,具体原因没分析,
解决方法就是去登录zookeeper里手段删除配置节点
zkCli.sh -server 192.168.1.23:2183
&delete&/dubbo/xxxx.xxxx.Service/configurators/xxxxxxx
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:866382次
积分:9421
积分:9421
排名:第2014名
原创:50篇
转载:791篇
评论:45条
(4)(19)(10)(1)(25)(1)(1)(194)(275)(149)(87)(55)(10)(9)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3a820ada61f44364-ua98).
重新安装浏览器,或使用别的浏览器博客分类:
我们使用的Dubbo最近老是遇到WARN [DubboSaveRegistryCache-thread-1] (AbstractRegistry.java:221) method:doSaveProperties -
[DUBBO] Failed to save registry store file, cause: Can not lock the registry cache file /home/newad/.dubbo/dubbo-registry-*.*.*.*.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.registry.file=xxx.properties, dubbo version: 2.5.3, current host: *.*.*.*java.io.IOException: Can not lock the registry cache file /home/newad/.dubbo/dubbo-registry-*.*.*.*.cache, ignore and retry later, maybe multi java process use the file, please config: dubbo.registry.file=xxx.properties
从异常中很清楚的看到,Dubbo在保存服务列表时失败,失败的原因也很简单,异常里面都说得很清楚了,Can not lock the registry cache file /home/newad/.dubbo/dubbo-registry-*.*.*.*.cache,拿不到文件锁,无法保存服务列表。
Dubbo通过注册中心发现服务,发现的服务Dubbo同时也会保存到本地缓存一份,缓存的好处有很多,比如不需要每次使用的时候都通过注册中心获取,注册中心不可用了,不影响消费端的调用,因为本地缓存了一份服务提供者列表。Dubbo本地缓存默认采用的文件,会根据注册中心自动在当前用户目录下生成一个缓存文件,类似/home/newad/.dubbo/dubbo-registry-*.*.*.*.cache,星号表示注册中心的IP地址,当同一台机器上同时启动多个进程,就会出现多个进程争夺此文件的写入权限,觖此问题的方法也很简单,日志里面都说了重新配置一下这个缓存文件就。
主要在启动脚本里面添加配置: -Ddubbo.registry.file=/home/newad/.dubbo/dubbo-registry-Order-0.cache
CU=/home/www/WEB-INF/release/
#LANG="zh_CN"
#export LANG
CP=$CU":./"
LIB=$CU"lib/*.jar"
for i in $LIB
CP="$i:$CP"
JAVA=/home/www/jvm/jdk1.7.0_02/bin/java
export JAVA
cd "$CUorder"
lock=./lock
if [ ! -f "$lock" ]
touch "$lock"
echo "classpath:" $CP
-Xms1024m -Xmx1024m -XX:PermSize=256m -DOrder=Order-0 -Dlog4j.configuration=file:/home/www/WEB-INF/release/order/log4j.properties -Ddubbo.registry.file=/home/newad/.dubbo/dubbo-registry-Order-0.cache -cp $CP com.product.PServer
rm "$lock"
echo " already startup!"
浏览 13164
引用引用引用引用
roadrunners
浏览: 29402 次
来自: 成都
引用引用引用引用引用
请问启动脚本指的是哪个,我的是在windows下启动的,在my ...
第二种方式,打包后JAR无法运行,包内没有LIB等东西
nohup supervise /service/ui &am ...> 博客详情
摘要: 公司要求,分享了一篇关于dubbo的心得 在博客上也同步分享下 微信地址:http://mp./s?__biz=MzIwMTA2MjMxNA==&mid=&idx=1&sn=6f66d1c31fd11f5deee2d4ddd840fcf2&scene=0#rd
&我眼中的DUBBO
(微信地址:)
dubbo作为一款国内开源的优秀分布式服务框架,深受各互联网公司的喜爱,而且官方文档介绍非常详细,上手并不困难。因此,本文主要介绍dubbo在媒资系统中的应用,遇到的问题, dubbo源码学习的一些心得,详细使用流程请参见http://,共同进步。
二.Dubbo是什么——what
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
以上概述是官网文档的解释,对于目前我的理解,what is dubbo?
dubbo是一款分布式服务框架
&&&&&& -高性能和透明化的RPC远程服务调用方案
&&&&&& -SOA服务治理方案
dubbo的基本架构图:(见微信)
进一步剖析,dubbo的基本原理如图2表示(见微信)
随着互联网应用的蓬勃发展,架构依赖越来越复杂,作为一款分布式服务框架,服务治理是dubbo最需要解决的问题。服务数量的激增,服务间依赖关系的复杂,以及服务调用量所带来的一系列问题,都是我们作为开发人员所要面临和解决的,这也是dubbo分布式服务框架形成的最重要原因。
三.为什么使用Dubbo——why
1.首先介绍下Dubbo的一些主要特性。
一.透明化的远程方法调用
- 就像调用本地方法一样调用远程方法
- 只需简单配置,没有任何API侵入
二.软负载均衡及容错机制
- 可在内网替代nginx lvs等硬件负载均衡器
三.服务注册中心自动注册 & 配置管理
&& &- 不需要写死服务提供者地址,注册中心基于接口名自动查询提供者ip
- 使用类似zookeeper等分布式协调服务作为服务注册中心,可以将绝大部分项目配置移入zookeeper集群
四.服务接口监控与治理
&& - dubbo-admin与dubbo-monitor提供了完善的服务接口管理与监控功能,针对不同应用的不同接口,可以进行多版本,多协议,多注册中心管理。
2.Dubbo在媒资系统中的应用。
&& 透明化的远程方法调用
&&&&&& 使用前,媒资系统内部服务调用主要通过数据库查询 和 HTTP接口方式实现。一则查询效率低,扩展一些搜索框架比较困难,二则解析http请求非常麻烦,不仅需要解析消息体,还有一些状态设置,使程序的复杂性大大提高。
&& 对于一些复杂查询场景,like全表遍历查询效率低,因此我们引入了elasticsearch分布式搜索引擎,构建lucene倒排索引来弥补单纯依赖数据库查询功能的不足。基于ES构建mms-search作为服务提供者,将媒资不同类型数据的查询服务以dubbo-rpc远程调用的形式提供给数据消费方。提供方与消费方只需要简单配置(如图3),消费方就可以像调用本地方法一样远程调用接口。
(见微信)
服务接口监控与治理
其次搭建了一个zookeeper集群作为dubbo的注册中心,并搭建了一个修改过的dubbo-admin管理后台,(由于目前开源dubbo对于admin模块经过阉割,部分功能无法使用,需要修改部分源码来适应项目)如图4,5,6(见微信)
作为维护者,我们可以很容易得监控到目前所注册的所有接口的详细信息,并可以对每个接口进行及时处理。
&&&&&& 第三,我们扩展了dubbo-admin的功能,将zookeeper的配置管理功能与dubbo相结合,将原先配置在pom或者每个项目中的各种properties,xml等文件内容存入zookeeper节点,并通过dubbo-admin上传修改,大大简化了复杂系统的配置项,初期我们将此功能放入mms-webapps(媒资vrs后台)中操作,实践发现一旦mms-webapps出现了故障,整个mms系统都会因为缺少配置文件而崩溃,因此最终将配置管理功能移入dubbo-admin中,单独部署,不依赖其他mms模块,如图7,8(见微信)
3.后期优化与扩展
&&&&&& 前期dubbo在媒资系统局部范围进行了实践,运行比较稳定。后期媒资内部服务治理,将全面RPC化;对外提供的媒资接口也会提供一套dubbo RPC 实现,方便JAVA系的消费方调用,实际看下dubbo在高并发应用场景下的表现。随着更大范围的推广使用,未来会更深入使用到dubbo更多的特性,如负载均衡,集群容错,服务降级,优雅停机,服务多版本,分组服务等。
四.Dubbo使用遇到的问题总结
&&&&&&&&&& 1.目前dubbo在媒资系统运行良好,并没有出现很大的问题,有些开发者阅读完我们媒资系统的使用肯定会问,zookeeper担负着注册中心以及项目配置中心双重任务,如果挂了会怎样?目前我们的应对方案是3台zk服务做集群,leader选举的方式,并且在媒资监控模块中进行如下监控
节点自检 :
是指对集群中每个IP所在ZK节点上的PATH: /ZK.MONITOR.ALIVE.CHECK 定期进行三次如下流程 节点连接 - 数据发布 - 修改通知 - 获取数据 - 数据对比, 三次流程均成功视为该节点处于正常状态。(有兴趣具体zk可以查询下资料)
&&&&&&&&&& 2.日志输出
dubbo默认使用log4j做日志输出,如果项目中使用的slf4j+logback,除了抛到外面的异常被自己的框架扑捉,dubbo本身的一些warn,info信息是没法记录的。
需要在xml中文件增加配置如下& &
&&dubbo:application name="mms-webapp" logger="slf4j"/&
3.本地缓存注册中心
dubbo为了在不让请求每次都访问注册中心,同时在注册中心挂掉的时候仍然可以继续提供服务,会在本地把提供者的列表进行一个文件缓存。
默认不设置缓存文件地址会在当前用户根目录下创建文件夹.dubbo,缓存的注册中心文件会放在这里。
可以通过配置指定缓存文件的路径&&&&&&&
&register&file="/letv/dubbo.cache" /&
但是这里一定要注意的是要保证启动app的用户要有这个目录下写文件的权限,否则会导致这个进程一直循环处理(dubbo内部实现是有异常cache,再次创建),cpu 100%)。
4.初期学习完成demo时需注意,如果将provider.xml与consumer.xml在一个工程中使用applicationContext.xml引入会报bean重复。模拟服务器启动要注意修改协议端口,每台服务器的协议端口也不相同,否则启动第二台服务器的时候就会报com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer错误
5. 出现RpcException: No provider available for remote service异常怎么办?
除了官方上的一些办法,我们在启动dubbo的时候如果遇到部分接口升级不希望注册时,可以使用
&dubbo:reference 标签& 配置check属性为false
这样dubbo就能正常启动了。
谢谢鼓励,继续努力
谢谢鼓励,会一直坚持下去的
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥}

我要回帖

更多关于 dubbo消费者配置文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信