深入浅出dubbo

上传人:xh****66 文档编号:58913193 上传时间:2018-11-02 格式:PPT 页数:27 大小:2.69MB
返回 下载 相关 举报
深入浅出dubbo_第1页
第1页 / 共27页
深入浅出dubbo_第2页
第2页 / 共27页
深入浅出dubbo_第3页
第3页 / 共27页
深入浅出dubbo_第4页
第4页 / 共27页
深入浅出dubbo_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《深入浅出dubbo》由会员分享,可在线阅读,更多相关《深入浅出dubbo(27页珍藏版)》请在金锄头文库上搜索。

1、深入浅出Dubbo,Smart Chow,Agenda,Dubbo简介 Dubbo快速入门 Dubbo架构设计浅析 Dubbo常用配置介绍 Dubbo管理工具介绍 项目实战经验,Dubbo简介,Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 Dubbo有何特点? 远程通讯:基于长连接的NIO框架抽象封装 集群容错:提供多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,支持平滑减少或增加机器,为什么要使用Dubbo?,作为产品经理

2、,我希望我们的组件高内聚,低耦合,产品具有较高的扩展性。能够像搭积木一样将组件组装成一个个项目。 作为开发人员,当我调用其他的组件服务时,我只需要了解它的API,至于具体实现,干我屁事! 作为实施人员,我希望有个统一的平台能够对我们发布的服务进行监控、治理与性能调优,不然出了问题我找谁呀? 。,为什么要使用Dubbo?,剪掉服务调用的“蜘蛛网”,Dubbo Quick Start,理论上Dubbo不依赖任何第三方包,基于性能与稳定性考虑,缺省依赖以下jar包 log4j.jar和commons-logging.jar日志输出包。 javassist.jar 字节码生成。 spring.jar

3、配置解析。 netty.jar 网络传输。,Dubbo Quick Start(第一步),定义服务接口: (该接口需单独打包,在服务提供方和消费方共享)在服务提供方实现接口:(对服务消费方隐藏实现),Dubbo Quick Start(第二步),配置服务提供者,Dubbo Quick Start(第三步),配置服务消费者,Dubbo架构浅析,节点角色说明 Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Container: 服务运行容器。(e.g.)Spring Monitor: 统计服务的调用次调和

4、调用时间的监控中心。 特性 连通性 健壮性 伸缩性 升级性,Dubbo架构Overview,Dubbo常用配置介绍(Overview), 服务配置,用于暴露服务。引用配置,用于创建一个远程服务代理协议配置,用于配置提供服务的协议信息, 协议由提供方指定,消费方被动接受。应用配置,用于配置当前应用信息, 不管该应用是提供者还是消费者。模块配置,用于配置当前模块信息,可选。注册中心配置,用于配置连接注册中心相关信息。监控中心配置,用于配置连接监控中心相关信息,可选。提供方的缺省值,当ProtocolConfig和ServiceConfig 某属性没有配置时,采用此缺省值,可选。消费方缺省配置, 当

5、ReferenceConfig某属性没有配置时,采用此缺省值,可选。方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。用于指定方法参数配置。,Dubbo常用配置介绍(配置优先级),以timeout为例,显示了配置的查找顺序 方法级优先,接口级次之,全局配置最小 如果级别一样,则消费方优先,提供方次之提供方的配置通过URL经由注册中心传递给消费方 建议服务提供方设置超时,Dubbo常用配置介绍(服务提供者),配置应用程序名称配置注册中心地址(重要) 注册中心支持以下4种类型 Zookeeper (目前在生产环境使用,需要安装zookeeper注册中心服

6、务) Redis (可用于生产) Multicast (缺省配置,只适合测试环境,不能跨网段) Simple (Only for Test),Dubbo常用配置介绍(服务提供者),配置通讯协议(重要) name协议名称:默认为dubbo,支持rmi,hessian2,http,ws,thrift,memcached,redis port:暴露服务的端口号。(如何为-1表示随机产生端口号) serialization :支持dubbo,hessian2,java,json默认为hessian2 register:该协议的服务是否注册到注册中心,默认为true Threads服务线程池大小 ser

7、ver:协议的服务端实现类型 client:协议的客户端实现类型 ,Dubbo常用配置介绍(服务提供者),配置需要暴露的服务接口 (重要) 常用可选项有: retries: 默认为2,如果不需要设置重试设为0 timeout:超时设置 executes:服务器端并发执行(或占用线程数)不超过设置个数 actives: 每客户端并发执行(或占连接的请求数)不超过设置个数 deprecated:默认为false,如果需要设置服务过时,设置为true,消费者调用时会打印警告日志。 provider:指定provider,值为的id属性,Dubbo常用配置介绍(服务消费者),配置应用程序名称配置注册中

8、心(重要) 配置远程服务代理,Dubbo管理工具-zookeeper介绍,Zookeeper为新华现场使用的注册中心实现 下载压缩包后直接解压即可,常用的配置如下($root/conf/zoo.cfg):dataDir:zookeeper数据文件存放地址。默认在c:/tmp下,需要定时清理。clientPort:端口号,这个在dubbo注册中心配置中需要用到maxClientCnxns:连接到 ZooKeeper 的客户端的数量,参考资料 http:/ http:/ http:/ 管理控制台功能 路由规则,动态配置,服务降级。 访问控制,权重调整, 负载均衡,等管理功能。,开发环境管理控制台地

9、址:http:/192.168.1.41:8202,Dubbo简易监控中心,简易监控中心安装手册 http:/ 简易监控中心说明 需要安装linux服务器上 用于监控服务方法调用情况 挂掉不会对生产环境造成影响,开发环境监控中心地址: http:/192.168.66.65:8080/,Dubbo项目实战总结,问题一:对象序列化问题,Cpoe中由于历史原因domain中存在父类与子类都存在同一属性的情况,导致默认的hessian2序列化无法设值成功。解决方案: 将序列化方式改为dubbo。Java也可以,不过性能差点。问题二: 患者查询中存在一个方法的入参为Map,map里面放置的是复杂数据类

10、型。导致无法调用成功。解决方案: 将序列化方式改为java。,Dubbo项目实战总结,问题三:jboss7 不支持按顺序启动,导致后台服务中提供者和消费者的启动顺序得不到保障,因此报错。解决方案:问题四: Jboss7 热部署后台服务时,不会把暴露的端口号给注销掉,会导致出现端口号被占用的错误。临时解决方案: 将端口改为-1。,Dubbo项目实战总结,问题五:引入dubbo机制后,很多服务是抛的Framework BusinessException(该异常是运行时异常),dubbo远程调用时会在原来异常上再包装一层,导致原来给用户的提示信息变成了500错误。临时解决方案:在接口方法上声明需要抛

11、出的异常。终极解决方案:采用SPI方式扩展Dubbo异常处理过滤器,(参考git192.168.66.28:earth/earth-dubbo-extension.git)另外需要添加以下配置,Dubbo扩展参考资料 Java spi 机制浅谈,Dubbo项目实战总结,问题六:为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行。解决方案:可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务。实现步骤:1. 2. ,Dubbo项目实战总结,问题七:Q:如何标识服务?A:通过group,interface,version三个属性来标识是否为同一服务 扩展应用服务分组:当一个接口有多种实现时,可以用group区分。多版本:当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。,Any Question?,谢谢!,课后作业,搭建管理控制台 搭建简易监控中心 搭建基于zookeeper注册中心的集群环境,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 科普读物

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号