`
javatar
  • 浏览: 1680565 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

阿里巴巴开源服务框架Dubbo2.0.8发布

阅读更多
阿里巴巴开源服务框架Dubbo2.0.8版本发布了,
增加了ZookeeperMulticast注册中心,RMIHessian协议,以及修复了一些BUG。

Dubbo2.0.8下载地址:
http://code.alibabatech.com/wiki/display/dubbo/Download

Dubbo2.0.8发布记录:
http://code.alibabatech.com/jira/secure/ReleaseNote.jspa?projectId=10040&version=10160

New Feature

[DUBBO-3] - 实现与zookeeper注册中心的桥接
[DUBBO-14] - 增加RMI协议的开源
[DUBBO-15] - 增加Hessian协议的开源
[DUBBO-16] - 增加Multicast注册中心的开源
[DUBBO-19] - <dubbo:protocol>增加register="false"属性,表示该协议不注册到注册中心。
[DUBBO-30] - remoting reconnect功能在config层增加配置项

Bug

[DUBBO-1] - Change schema element "sent" default value to false
[DUBBO-2] - 停止时,程序和ShutdownHook重复调用了destroy。
[DUBBO-4] - Dubbo Serialization序列化BigInteger空指针错误
[DUBBO-7] - PojoUtils(generalize/realize)出错,类型丢失
[DUBBO-11] - Future :访问超时时,可能会有NPE问题
[DUBBO-17] - 多个注册中心指定一个注册中心引用无效
[DUBBO-18] - rmi protocol can't handle biz exception
[DUBBO-20] - 设置delay属性导致服务一直处理禁用状态
[DUBBO-22] - refer.autodestory功能存在资源泄漏的风险。
[DUBBO-31] - consumer sticky配置项丢失
[DUBBO-32] - 在linux server上和本地连不上nettyserver时抛出来的异常不一致
[DUBBO-39] - hessian协议的timeout没有wrap为RpcException
[DUBBO-42] - Wrapper类使用javassit低版本的时遇到的NoClassDefFoundError问题
[DUBBO-43] - 解决cluseter(除了failover以外)在无invoker时的空指针
[DUBBO-44] - fix 2.0.8无法调用1.0.x
[DUBBO-47] - rmi 协议对2.0.8之前版本不兼容
[DUBBO-48] - AccessLogFilter在只写文件名的情况下NPE
[DUBBO-50] - 迁移错误的扩展点位置
[DUBBO-59] - Monitor 地址配置错误的情况下导致循环调用
[DUBBO-60] - exchange codec decodeResponseData的重载方法调用错误
[DUBBO-61] - 还原Restable接口的reset(Parametes parametes )方法保持与2.0.5之前版本的api兼容
[DUBBO-65] - server graceful shutdown 问题
[DUBBO-69] - 修复FailoverClusterInvoker丢失error code

Improvement

[DUBBO-9] - ExtensionLoader增加获取DefaultExtension的方法
[DUBBO-12] - 拆分不同实现为子模块
[DUBBO-13] - 为ReflectUtils增加cache
[DUBBO-21] - 整理UrlUtils
[DUBBO-34] - TraceFilter中达到trace.count后,从tracersMap中去掉Channel
[DUBBO-35] - LazyConnectExchangeClient去掉不必要的Wrapper
[DUBBO-36] - ExtensionLoader读取属性文件时可以有注释、固定用UTF8读取
[DUBBO-45] - Reference的初始化时出Remoting异常后,Reference没有捕捉,导致直接抛出Remoting异常,不能方便诊断是哪个Service出错
[DUBBO-49] - Injvm的端口总是置为0,以免因配置端口导致不可用
[DUBBO-51] - 配有多协议时,必须指定缺省协议,否则报错
[DUBBO-52] - Remoting中的类使用的是父类的Logger,导致异常信息排查不方便
[DUBBO-53] - Remoting Client连接出错时,会重试时打出异常栈的日志应该给出*会重试*的说明
分享到:
评论
25 楼 climbtop 2013-10-29  

用brap好,比起dubbo,轻量级,注册服务在服务器少的情况下简直废的。

http://brap.tornado.no/documentation.html
24 楼 xiangkui 2013-06-27  
xiangkui 写道
qianshangding 写道
javatar 写道
xiangkui 写道


您好,我最近正准备推广你们的dubbo产品,可是在管理员端操作界面上发下很多问题哦,希望能解释一下。
1:添加并且启用一个路由规则后,无法删除该路由规则
2:服务管理一栏,服务禁用效果无效,通过设定路由规则的方式来屏蔽所有消费方接入provider的方式也无效
3:在zookeeper节点中生成的节点包含utf-8编码问题(出现%3D等字符)

总之感觉整个管理员端问题重重,而且缺乏相关文档,Duboo交流群里也有不少人反应过该问题,希望能不吝宝贵时间,给与一个答复,谢谢了,高手~


1. 路由规则你可以尝试禁用,具体不能删除的原因待查。
2. 如果只有一个提供者,禁止是会失效的,因为消息方有容错,如果收到空集合,会使用上一次的通知列表进行调用,路由规则是可以的,但路由规则的限制是针对提供者,并且需要设置强制执行标识。
3. %3D不是乱码,是URL转义,存入的时候入URL.encode(),读取的时候会URL.decode().

我也碰到这样的问题,禁用的话,会多一条一样的记录,而且有的时候不能禁用。
编辑后保存,会有两条一样的记录。

dubbo管理端对zookeeper的操作,确实存在那样的问题,即会多一条记录,而且无法删除,导致服务禁用后,就不能再上线该服务了,除非手工删除对应的zk节点     ~—~糗啊~~
求梁大哥解释哦~~
23 楼 qianshangding 2013-06-26  
javatar 写道
xiangkui 写道


您好,我最近正准备推广你们的dubbo产品,可是在管理员端操作界面上发下很多问题哦,希望能解释一下。
1:添加并且启用一个路由规则后,无法删除该路由规则
2:服务管理一栏,服务禁用效果无效,通过设定路由规则的方式来屏蔽所有消费方接入provider的方式也无效
3:在zookeeper节点中生成的节点包含utf-8编码问题(出现%3D等字符)

总之感觉整个管理员端问题重重,而且缺乏相关文档,Duboo交流群里也有不少人反应过该问题,希望能不吝宝贵时间,给与一个答复,谢谢了,高手~


1. 路由规则你可以尝试禁用,具体不能删除的原因待查。
2. 如果只有一个提供者,禁止是会失效的,因为消息方有容错,如果收到空集合,会使用上一次的通知列表进行调用,路由规则是可以的,但路由规则的限制是针对提供者,并且需要设置强制执行标识。
3. %3D不是乱码,是URL转义,存入的时候入URL.encode(),读取的时候会URL.decode().

我也碰到这样的问题,禁用的话,会多一条一样的记录,而且有的时候不能禁用。
编辑后保存,会有两条一样的记录。
22 楼 xiaoduo2048 2013-03-12  
为什么没人回答问题呢???
21 楼 xiaoduo2048 2013-03-06  
请教如下错误原因
provider.xml里写如下配置,版本dubbo-2.4.9.jar
<dubbo:protocol name="webservice" port="8088"   />
报错信息:
Exception in thread "main" java.lang.NoSuchFieldError: QUALIFIED
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.getOrCreateSchema(ReflectionServiceFactoryBean.java:1454)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createWrappedSchema(ReflectionServiceFactoryBean.java:1133)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeWrappedSchema(ReflectionServiceFactoryBean.java:1034)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:478)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:536)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:248)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159)
at com.alibaba.dubbo.rpc.protocol.webservice.WebServiceProtocol.doExport(WebServiceProtocol.java:117)
at com.alibaba.dubbo.rpc.protocol.AbstractProxyProtocol.export(AbstractProxyProtocol.java:69)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:55)
at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:56)
at com.alibaba.dubbo.rpc.Protocol$Adpative.export(Protocol$Adpative.java)
at com.alibaba.dubbo.registry.integration.RegistryProtocol.doLocalExport(RegistryProtocol.java:153)
at com.alibaba.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:107)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:53)
at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:54)
at com.alibaba.dubbo.rpc.Protocol$Adpative.export(Protocol$Adpative.java)
at com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:485)
at com.alibaba.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:281)
at com.alibaba.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:242)
at com.alibaba.dubbo.config.ServiceConfig.export(ServiceConfig.java:143)
at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:109)
at org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at Provider.main(Provider.java:6)
20 楼 xiaoduo2048 2013-03-06  
xiaoduo2048 写道
(1) 不同服务不同协议
比如:不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议。

consumer.xml
?
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans.xsd         http://code.alibabatech.com/schema/dubbo         http://code.alibabatech.com/schema/dubbo/dubbo.xsd         ">       <dubbo:application name="world"  />     <dubbo:registry id="registry" address="10.20.141.150:9090" username="admin" password="hello1234" />       <!-- 多协议配置 -->    <dubbo:protocol name="dubbo" port="20880" />     <dubbo:protocol name="rmi" port="1099" />       <!-- 使用dubbo协议暴露服务 -->    <dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" protocol="dubbo" />     <!-- 使用rmi协议暴露服务 -->    <dubbo:service interface="com.alibaba.hello.api.DemoService" version="1.0.0" ref="demoService" protocol="rmi" />   </beans>
(2) 多协议暴露服务
比如:需要与http客户端互操作

consumer.xml
?
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans.xsd         http://code.alibabatech.com/schema/dubbo         http://code.alibabatech.com/schema/dubbo/dubbo.xsd         ">       <dubbo:application name="world"  />     <dubbo:registry id="registry" address="10.20.141.150:9090" username="admin" password="hello1234" />       <!-- 多协议配置 -->    <dubbo:protocol name="dubbo" port="20880" />     <dubbo:protocol name="hessian" port="8080" />       <!-- 使用多个协议暴露服务 -->    <dubbo:service id="helloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" protocol="dubbo,hessian" />   </beans>


这两个xml里 <dubbo:service >标签是服务提供者暴露服务配置的标签,只能写在provider.xml里,还是在consumer.xml里也可以用??


如果不可以,那文档介绍中是写在consumer.xml里的,是不是写错了?
19 楼 xiaoduo2048 2013-03-06  
(1) 不同服务不同协议
比如:不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议。

consumer.xml
?
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans.xsd         http://code.alibabatech.com/schema/dubbo         http://code.alibabatech.com/schema/dubbo/dubbo.xsd         ">       <dubbo:application name="world"  />     <dubbo:registry id="registry" address="10.20.141.150:9090" username="admin" password="hello1234" />       <!-- 多协议配置 -->    <dubbo:protocol name="dubbo" port="20880" />     <dubbo:protocol name="rmi" port="1099" />       <!-- 使用dubbo协议暴露服务 -->    <dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" protocol="dubbo" />     <!-- 使用rmi协议暴露服务 -->    <dubbo:service interface="com.alibaba.hello.api.DemoService" version="1.0.0" ref="demoService" protocol="rmi" />   </beans>
(2) 多协议暴露服务
比如:需要与http客户端互操作

consumer.xml
?
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans.xsd         http://code.alibabatech.com/schema/dubbo         http://code.alibabatech.com/schema/dubbo/dubbo.xsd         ">       <dubbo:application name="world"  />     <dubbo:registry id="registry" address="10.20.141.150:9090" username="admin" password="hello1234" />       <!-- 多协议配置 -->    <dubbo:protocol name="dubbo" port="20880" />     <dubbo:protocol name="hessian" port="8080" />       <!-- 使用多个协议暴露服务 -->    <dubbo:service id="helloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" protocol="dubbo,hessian" />   </beans>


这两个xml里 <dubbo:service >标签是服务提供者暴露服务配置的标签,只能写在provider.xml里,还是在consumer.xml里也可以用??
18 楼 xiaoduo2048 2013-03-06  
你好,我现在在学习dubbo,有几个问题不太明白,请教一下
1、在demo里的Consumer.java
我看到引用 import com.alibaba.dubbo.demo.DemoService;这个包是服务端的,这样一来客户端和服务端如果在两台不同的机器上怎么实现?为什么要这么写呢
2、webservice实现问题,我用cxf做为客户端,想调用dubbo的服务提供者,我启动了提供者的服务,那服务路径是什么呢?还有dubbo服务提供者的配置文件要怎么写?

17 楼 javatar 2013-02-17  
45088648 写道
consumer可以继承到web工程里,用tomcat部署是吧?

是的,可以。
16 楼 45088648 2013-01-28  
consumer可以继承到web工程里,用tomcat部署是吧?
15 楼 javatar 2012-11-19  
xiangkui 写道


您好,我最近正准备推广你们的dubbo产品,可是在管理员端操作界面上发下很多问题哦,希望能解释一下。
1:添加并且启用一个路由规则后,无法删除该路由规则
2:服务管理一栏,服务禁用效果无效,通过设定路由规则的方式来屏蔽所有消费方接入provider的方式也无效
3:在zookeeper节点中生成的节点包含utf-8编码问题(出现%3D等字符)

总之感觉整个管理员端问题重重,而且缺乏相关文档,Duboo交流群里也有不少人反应过该问题,希望能不吝宝贵时间,给与一个答复,谢谢了,高手~


1. 路由规则你可以尝试禁用,具体不能删除的原因待查。
2. 如果只有一个提供者,禁止是会失效的,因为消息方有容错,如果收到空集合,会使用上一次的通知列表进行调用,路由规则是可以的,但路由规则的限制是针对提供者,并且需要设置强制执行标识。
3. %3D不是乱码,是URL转义,存入的时候入URL.encode(),读取的时候会URL.decode().
14 楼 xiangkui 2012-11-16  


您好,我最近正准备推广你们的dubbo产品,可是在管理员端操作界面上发下很多问题哦,希望能解释一下。
1:添加并且启用一个路由规则后,无法删除该路由规则
2:服务管理一栏,服务禁用效果无效,通过设定路由规则的方式来屏蔽所有消费方接入provider的方式也无效
3:在zookeeper节点中生成的节点包含utf-8编码问题(出现%3D等字符)

总之感觉整个管理员端问题重重,而且缺乏相关文档,Duboo交流群里也有不少人反应过该问题,希望能不吝宝贵时间,给与一个答复,谢谢了,高手~
13 楼 javatar 2012-01-13  
长沙伟子88 写道
dubbo的源码写的非常经典,功能很强大,自适应扩展,切片都比较的强。
在看了NettyHandler的代码中,
实际private final URL url;
在有多个服务暴露的时候,对应在一个通道上,因此这个属性貌似没有什么作用。实际处理还是根据Request参数找到对应的exporter进行处理的

NettyHandler中的url上的属性,只有protocol相关的有意义,service相关的不能讯取,就像你说的,因为多个service共享一个连接。
12 楼 javatar 2012-01-13  
长沙伟子88 写道
还有个问题,为什么不把使用动态生成类修改成使用asm,在把asm引入到工程中,象fastjson那样处理,又可以减少javassist的依赖了

ProxyFactory是一个扩展点,因为asm生成代理可读性差,并且性能上优势没有想像的大,后续如果有时间,会加一个AsmProxyFactory,有兴趣的朋友,也可以自己加上。
11 楼 长沙伟子88 2011-12-20  
还有个问题,为什么不把使用动态生成类修改成使用asm,在把asm引入到工程中,象fastjson那样处理,又可以减少javassist的依赖了
10 楼 长沙伟子88 2011-12-20  
dubbo的源码写的非常经典,功能很强大,自适应扩展,切片都比较的强。
在看了NettyHandler的代码中,
实际private final URL url;
在有多个服务暴露的时候,对应在一个通道上,因此这个属性貌似没有什么作用。实际处理还是根据Request参数找到对应的exporter进行处理的
9 楼 javatar 2011-12-13  
gnimnew 写道
俺运行了一下,报了
java.lang.ClassNotFoundException: com.alibaba.dubbo.container.spring.JettyContainer
这个错误,然后我看JettyContainer的类是在com.alibaba.dubbo.container.jetty中,而services配的是com.alibaba.dubbo.container.spring.JettyContainer
是不是配错了?


是的,2.0.8的container模块有bug,container模块在2.0.9才开始使用。
8 楼 javatar 2011-12-13  
sodarfish 写道
请问一下:
如果将hessian服务通过servlet发布,和web应用公用一个端口(假设是80),如果我的服务不想被外网的人看到,如何保证其安全性呢?


可以参见:http://code.alibabatech.com/wiki/display/dubbo/User+Guide#UserGuide-TokenVerify
7 楼 javatar 2011-12-13  
sodarfish 写道
请问一下:
如果将hessian服务通过servlet发布,和web应用公用一个端口(假设是80),如果我的服务不想被外网的人看到,如何保证其安全性呢?

你可以开启token验证,如:
<!--随机产生UUID做为token-->
<dubbo:protocol name="hessian" token="true" />

这个token会通过注册中心下发给提供者,基于注册中心发现的方式调用不会受影响,点对点直连就会被控制住。
6 楼 sodarfish 2011-12-13  
请问一下:
如果将hessian服务通过servlet发布,和web应用公用一个端口(假设是80),如果我的服务不想被外网的人看到,如何保证其安全性呢?

相关推荐

Global site tag (gtag.js) - Google Analytics