Dubbo基础培训课件_第1页
Dubbo基础培训课件_第2页
Dubbo基础培训课件_第3页
Dubbo基础培训课件_第4页
Dubbo基础培训课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

功能介绍Dubbo基础培训Dubbo简要介绍Dubbo-RPC基本功能Dubbo-RPC高级功能最佳实践大纲分布式服务框架–高性能和透明化的RPC远程服务调用方案–SOA服务治理方案Dubbo是什么Dubbo可以选择协议Dubbo可选用多种序列化方式Dubbo是一种RPC本地服务如何使用Dubbo<beanid=“xxxService”class=“com.xxx.XxxServiceImpl”/><beanid=“xxxAction”class=“com.xxx.XxxAction”><propertyname=“xxxService”ref=“xxxService”/></bean><beanid=“xxxService”class=“com.xxx.XxxServiceImpl”/><dubbo:serviceinterface=“com.xxx.XxxService”ref=“xxxService”/><dubbo:referenceid=“xxxService”interface=“com.xxx.XxxService”/><beanid=“xxxAction”class=“com.xxx.XxxAction”><propertyname=“xxxService”ref=“xxxService”/></bean>远程服务透明化的远程方法调用–就像调用本地方法一样调用远程方法–只需简单配置,没有任何API侵入。软负载均衡及容错机制–可在内网替代F5等硬件负载均衡器服务自动注册与发现–不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者Dubbo能做什么Dubbo基本原理Dubbo-RPC基本功能配置•配置继承•可配置可编程服务匹配•服务分组、多版本•指定调用•只订阅多协议•不同服务不同协议•同一服务多协议•本地服务调用集群&容错•集群原理•容错规则Gracefulshutdown优雅停机

实际使用中发现,服务提供者比消费者更清楚一个方法的执行时间,是否允许重试等信息,所以增加允许服务提供者为消费者设置缺省值,并采用继承风格:基本功能-配置继承基本功能-可编程配置–暴露服务//服务实现XxxServicexxxService=newXxxServiceImpl();//当前应用配置ApplicationConfigapplication=newApplicationConfig();application.setName("xxx");//连接注册中心配置RegistryConfigregistry=newRegistryConfig();registry.setAddress("30:9090");registry.setUsername("aaa");registry.setPassword("bbb");//服务提供者协议配置ProviderConfigprovider=newProviderConfig();provider.setProtocol("dubbo");provider.setPort(12345);provider.setThreads(200);//服务提供者暴露服务配置ServiceConfigservice=newServiceConfig();service.setApplication(application);service.setRegistry(registry);//多个注册中心可以用setRegistries()service.setProvider(provider);//多个提供者可以用setProviders()service.setInterfaceClass(XxxService.class);service.setRef(xxxService);service.setVersion("1.0.0");service.export();//触发服务注册<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:dubbo="/schema/dubbo"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/dubbo/schema/dubbo/dubbo-component-2.0.xsd"><!--服务实现--><beanid="xxxService"class="com.alibaba.xxx.XxxServiceImpl"/><!--当前应用配置--><dubbo:applicationname="morgan"/><!--连接注册中心配置--><dubbo:registryaddress="30:9090"username="admin"password="hello1234"/><!--服务提供者协议配置--><dubbo:providerprotocol="dubbo"port="12345"threads="200"/><!--服务提供者暴露服务配置--><dubbo:serviceinterface="com.alibaba.xxx.XxxService"version="1.0.0"ref="xxxService"/></beans>编程配置:Schema配置:基本功能-可编程配置-引用服务//当前应用配置ApplicationConfigapplication=newApplicationConfig();application.setName("yyy");//连接注册中心配置RegistryConfigregistry=newRegistryConfig();registry.setAddress("30:9090");registry.setUsername("aaa");registry.setPassword("bbb");//服务消费者缺省值配置ConsumerConfigconsumer=newConsumerConfig();consumer.setTimeout(5000);consumer.setRetries(2);//引用远程服务ReferenceConfigreference=newReferenceConfig();reference.setApplication(application);reference.setRegistry(registry);//多个注册中心可以用setRegistries()reference.setConsumer(consumer);reference.setInterfaceClass(XxxService.class);reference.setVersion("1.0.0");XxxServicexxxService=reference.get();//获取远程xxxService代理<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:dubbo="/schema/dubbo"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/dubbo/schema/dubbo/dubbo-component-2.0.xsd"><!--当前应用信息配置--><dubbo:applicationname="kylin"/><!--连接注册中心配置--><dubbo:registryaddress="30:9090"username="admin"password="hello1234"/><!--服务消费者缺省值配置--><dubbo:consumertimeout="5000"retries="2"/><!--引用远程服务--><dubbo:referenceid="xxxService"interface="com.alibaba.xxx.XxxService"version="1.0.0/></beans>编程配置:Schema配置:当一个接口有多种实现时,可以用group区分基本功能–服务分组服务提供者<dubbo:servicegroup="feedback"interface="com.xxx.IndexService"/><dubbo:servicegroup="member"interface="com.xxx.IndexService"/>服务消费者<dubbo:referenceid=“fservice"group="feedback"interface="com.xxx.IndexService"/><dubbo:referenceid=“mservice"group="member"interface="com.xxx.IndexService"/>基本功能–服务分组服务提供者<dubbo:serviceinterface="com.foo.BarService"version="1.0.0"/><dubbo:serviceinterface="com.foo.BarService"version="2.0.0"/>服务消费者<dubbo:referenceid="barService"interface="com.foo.BarService"version="1.0.0"/><dubbo:referenceid="barService"interface="com.foo.BarService"version="2.0.0"/>当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用点对点直连/指定调用需求(开发/测试环境)方式一Spring配置

<dubbo:referenceinterface="com.alibaba.xxx.XxxService"url="dubbo://localhost:20890"/>方式二Java–D参数方式 java-Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890方式三映射文件方式 java-Ddubbo.resolve.file=perties com.alibaba.xxx.XxxService=dubbo://localhost:20890基本功能–指定调用基本功能–只订阅共用注册中心,开发人员机器上的服务提供者被误调,影响其他开发人员(开发、测试环境)<dubbo:registryregister="false"/>基本功能–集群&容错FeatureMaturityStrengthProblemAdviseUserRandomLoadBalanceStable随机,按权重设置随机概率(推荐使用)在一个截面上碰撞的概率高,重试时,可能出现瞬间压力不均可用于生产环境AlibabaRoundRobinLoadBalanceStable轮循,按公约后的权重设置轮循比率存在慢的机器累积请求问题,极端情况可能产生雪崩可用于生产环境

LeastActiveLoadBalanceStable最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差,使慢的机器收到更少请求不支持权重,在容量规划时,不能通过权重把压力导向一台机器压测容量可用于生产环境

ConsistentHashLoadBalanceStable一致性Hash,相同参数的请求总是发到同一提供者,当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动压力分摊不均可用于生产环境

基本功能–集群&容错FeatureMaturityStrengthProblemAdviseUserFailoverClusterStable失败自动切换,当出现失败,重试其它服务器,通常用于读操作(推荐使用)重试会带来更长延迟可用于生产环境AlibabaFailfastClusterStable快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作如果有机器正在重启,可能会出现调用失败可用于生产环境AlibabaFailsafeClusterStable失败安全,出现异常时,直接忽略,通常用于写入审计日志等操作调用信息丢失可用于生产环境MonitorFailbackClusterTested失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作不可靠,重启丢失可用于生产环境RegistryForkingClusterTested并行调用多个服务器,只要一个成功即返回,通常用于实时性要求较高的读操作需要浪费更多服务资源可用于生产环境

BroadcastClusterTested广播调用所有提供者,逐个调用,任意一台报错则报错,通常用于更新提供方本地状态速度慢,任意一台报错则报错可用于生产环境

基本功能–多协议FeatureMaturityStrengthProblemAdviseUserHessianSerializationStable性能较好,多语言支持(推荐使用)Hessian的各版本兼容性不好,可能和应用使用的Hessian冲突,Dubbo内嵌了hessian3.2.1的源码可用于生产环境AlibabaDubboSerializationTested通过不传送POJO的类元信息,在大量POJO传输时,性能较好当参数对象增加字段时,需外部文件声明试用

JsonSerializationTested纯文本,可跨语言解析,缺省采用FastJson解析性能较差试用

JavaSerializationStableJava原生支持性能较差可用于生产环境

数据序列化格式FeatureMaturityStrengthProblemAdviseUserDubbo协议Stable采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)在大文件传输时,单一连接会成为瓶颈可用于生产环境AlibabaRmi协议Stable可与原生RMI互操作,基于TCP协议偶尔会连接失败,需重建Stub可用于生产环境AlibabaHessian协议Stable可与原生Hessian互操作,基于HTTP协议需hessian.jar支持,http短连接的开销大可用于生产环境

传输数据协议不同服务不同协议比如:不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议基本功能–多协议<!--多协议配置--><dubbo:protocolname="dubbo"port="20880"/><dubbo:protocolname="rmi"port="1099"/><!--使用dubbo协议暴露服务--><dubbo:serviceinterface="com.alibaba.hello.api.HelloService"version="1.0.0"ref="helloService"protocol="dubbo"/><!--使用rmi协议暴露服务--><dubbo:serviceinterface="com.alibaba.hello.api.DemoService"version="1.0.0"ref="demoService"protocol="rmi"/>不同服务不同协议比如:不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议。<!--多协议配置--><dubbo:protocolname="dubbo"port="20880"/><dubbo:protocolname="hessian"port="8080"/><!--使用多个协议暴露服务--><dubbo:referenceid="helloService"interface="com.alibaba.hello.api.HelloService"version="1.0.0"protocol="dubbo,hessian"/>•InJvm调用•同一个jvm内部的服务调用采用短路的方式•先本地服务化,再做物理远程调用基本功能–多协议<dubbo:protocolname=“injvm”><dubbo:providerinterface=“HelloService”injvm=“true”/><dubbo:consumerinterface=“Helloservice”injvm=“true”>基本功能–GracefulShutdownDubbo是通过JDK的ShutdownHook来完成优雅停机的,所以如果用户使用"kill-9PID"等强制关闭指令,是不会执行优雅停机的,只有通过"killPID"时,才会执行D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论