您好,欢迎访问三七文档
1©湖南智博旭诺科技有限公司版权所有深入浅出DubboSmartChow2©湖南智博旭诺科技有限公司版权所有AgendaDubbo简介Dubbo快速入门Dubbo架构设计浅析Dubbo常用配置介绍Dubbo管理工具介绍项目实战经验3©湖南智博旭诺科技有限公司版权所有Dubbo简介Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo有何特点?远程通讯:基于长连接的NIO框架抽象封装集群容错:提供多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,支持平滑减少或增加机器4©湖南智博旭诺科技有限公司版权所有为什么要使用Dubbo?作为产品经理,我希望我们的组件高内聚,低耦合,产品具有较高的扩展性。能够像搭积木一样将组件组装成一个个项目。作为开发人员,当我调用其他的组件服务时,我只需要了解它的API,至于具体实现,干我屁事!作为实施人员,我希望有个统一的平台能够对我们发布的服务进行监控、治理与性能调优,不然出了问题我找谁呀?。。。。5©湖南智博旭诺科技有限公司版权所有为什么要使用Dubbo?剪掉服务调用的“蜘蛛网”6©湖南智博旭诺科技有限公司版权所有DubboQuickStart理论上Dubbo不依赖任何第三方包,基于性能与稳定性考虑,缺省依赖以下jar包log4j.jar和commons-logging.jar日志输出包。javassist.jar字节码生成。spring.jar配置解析。netty.jar网络传输。7©湖南智博旭诺科技有限公司版权所有DubboQuickStart(第一步)定义服务接口:(该接口需单独打包,在服务提供方和消费方共享)在服务提供方实现接口:(对服务消费方隐藏实现)8©湖南智博旭诺科技有限公司版权所有DubboQuickStart(第二步)配置服务提供者9©湖南智博旭诺科技有限公司版权所有DubboQuickStart(第三步)配置服务消费者10©湖南智博旭诺科技有限公司版权所有Dubbo架构浅析节点角色说明Provider:暴露服务的服务提供方。Consumer:调用远程服务的服务消费方。Registry:服务注册与发现的注册中心。Container:服务运行容器。(e.g.)SpringMonitor:统计服务的调用次调和调用时间的监控中心。特性连通性健壮性伸缩性升级性11©湖南智博旭诺科技有限公司版权所有Dubbo架构Overview12©湖南智博旭诺科技有限公司版权所有Dubbo常用配置介绍(Overview)dubbo:service/服务配置,用于暴露服务。dubbo:reference/引用配置,用于创建一个远程服务代理dubbo:protocol/协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。dubbo:application/应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。dubbo:module/模块配置,用于配置当前模块信息,可选。dubbo:registry/注册中心配置,用于配置连接注册中心相关信息。dubbo:monitor/监控中心配置,用于配置连接监控中心相关信息,可选。dubbo:provider/提供方的缺省值,当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值,可选。dubbo:consumer/消费方缺省配置,当ReferenceConfig某属性没有配置时,采用此缺省值,可选。dubbo:method/方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。dubbo:argument/用于指定方法参数配置。13©湖南智博旭诺科技有限公司版权所有Dubbo常用配置介绍(配置优先级)以timeout为例,显示了配置的查找顺序方法级优先,接口级次之,全局配置最小如果级别一样,则消费方优先,提供方次之提供方的配置通过URL经由注册中心传递给消费方建议服务提供方设置超时14©湖南智博旭诺科技有限公司版权所有Dubbo常用配置介绍(服务提供者)配置应用程序名称配置注册中心地址(重要)dubbo:registryprotocol=zookeeperaddress=127.0.0.1:2182“file=${registry.file.rootdir}/${applicationName}.cache/注册中心支持以下4种类型Zookeeper(目前在生产环境使用,需要安装zookeeper注册中心服务)Redis(可用于生产)Multicast(缺省配置,只适合测试环境,不能跨网段)Simple(OnlyforTest)15©湖南智博旭诺科技有限公司版权所有Dubbo常用配置介绍(服务提供者)配置通讯协议(重要)!--用dubbo协议在20880端口暴露服务--dubbo:protocolname=“dubbo”port=“20880”serialization=“hessian2”threads=“100”register=“true”charset=“UTF-8”threadpool=“fixed”accepts=“1000”server=“netty”client=“netty”codec=“dubbo”/name协议名称:默认为dubbo,支持rmi,hessian2,http,ws,thrift,memcached,redisport:暴露服务的端口号。(如何为-1表示随机产生端口号)serialization:支持dubbo,hessian2,java,json默认为hessian2register:该协议的服务是否注册到注册中心,默认为trueThreads服务线程池大小server:协议的服务端实现类型client:协议的客户端实现类型…..16©湖南智博旭诺科技有限公司版权所有Dubbo常用配置介绍(服务提供者)配置需要暴露的服务接口(重要)dubbo:serviceinterface=com.alibaba.dubbo.demo.DemoServiceref=demoService/常用可选项有:retries:默认为2,如果不需要设置重试设为0timeout:超时设置executes:服务器端并发执行(或占用线程数)不超过设置个数actives:每客户端并发执行(或占连接的请求数)不超过设置个数deprecated:默认为false,如果需要设置服务过时,设置为true,消费者调用时会打印警告日志。provider:指定provider,值为dubbo:provider的id属性17©湖南智博旭诺科技有限公司版权所有Dubbo常用配置介绍(服务消费者)配置应用程序名称配置注册中心(重要)dubbo:registryprotocol=zookeeperaddress=127.0.0.1:2182“/配置远程服务代理18©湖南智博旭诺科技有限公司版权所有Dubbo管理工具-zookeeper介绍Zookeeper为新华现场使用的注册中心实现下载压缩包后直接解压即可,常用的配置如下(${root}/conf/zoo.cfg):dataDir:zookeeper数据文件存放地址。默认在c:/tmp下,需要定时清理。clientPort:端口号,这个在dubbo注册中心配置中需要用到maxClientCnxns:连接到ZooKeeper的客户端的数量参考资料://blog.csdn.net/shenlan211314/article/details/618517619©湖南智博旭诺科技有限公司版权所有Dubbo管理控制台管理控制台安装手册管理控制台功能路由规则,动态配置,服务降级。访问控制,权重调整,负载均衡,等管理功能。开发环境管理控制台地址:©湖南智博旭诺科技有限公司版权所有Dubbo简易监控中心简易监控中心安装手册简易监控中心说明需要安装linux服务器上用于监控服务方法调用情况挂掉不会对生产环境造成影响开发环境监控中心地址:©湖南智博旭诺科技有限公司版权所有Dubbo项目实战总结问题一:对象序列化问题,Cpoe中由于历史原因domain中存在父类与子类都存在同一属性的情况,导致默认的hessian2序列化无法设值成功。解决方案:dubbo:protocolname=“dubbo”port=“-1”serialization=“dubbo”/将序列化方式改为dubbo。Java也可以,不过性能差点。问题二:患者查询中存在一个方法的入参为Map,map里面放置的是复杂数据类型。导致无法调用成功。解决方案:dubbo:protocolname=“dubbo”port=“-1”serialization=“java”/将序列化方式改为java。22©湖南智博旭诺科技有限公司版权所有Dubbo项目实战总结问题三:jboss7不支持按顺序启动,导致后台服务中提供者和消费者的启动顺序得不到保障,因此报错。解决方案:dubbo:consumercheck=false/问题四:Jboss7热部署后台服务时,不会把暴露的端口号给注销掉,会导致出现端口号被占用的错误。临时解决方案:dubbo:protocolname=“dubbo”port=“-1”/将端口改为-1。23©湖南智博旭诺科技有限公司版权所有Dubbo项目实战总结问题五:引入dubbo机制后,很多服务是抛的FrameworkBusinessException(该异常是运行时异常),dubbo远程调用时会在原来异常上再包装一层,导致原来给用户的提示信息变成了500错误。临时解决方案:在接口方法上声明需要抛出的异常。终极解决方案:采用SPI方式扩展Dubbo异常处理过滤器,(参考git@192.168.66.28:earth/earth-dubbo-extension.git)另外需要添加以下配置dubbo:providerfilter=-exception,frameworkExceptionFilter/Dubbo扩展参考资料Javaspi机制浅谈24©湖南智博旭诺科技有限公司版权所有Dubbo项目实战总结问题六:为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行。解决方案:可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务。实现步骤:1.dubbo:registryaddress=10.20.153.10:9090register=false/2.dubbo:referenceid=xxxServiceinterfa
本文标题:深入浅出Dubbo
链接地址:https://www.777doc.com/doc-2240502 .html