ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:820.23KB ,
资源ID:5856162      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5856162.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(阿里云产品Dubbo文档格式.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

阿里云产品Dubbo文档格式.docx

1、3 原理逻辑示意图节点角色说明: Provider:暴露服务的服务提供方。 Consumer:调用远程服务的服务消费方。 Registry:服务注册与发现的注册中心。 Monitor:统计服务的调用次调和调用时间的监控中心。 Container:服务运行容器。调用关系说明:1. 服务容器负责启动,加载,运行服务提供者。2. 服务提供者在启动时,向注册中心注册自己提供的服务。3. 服务消费者在启动时,向注册中心订阅自己所需的服务。4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供

2、者进行调用,如果调用失败,再选另一台调用。6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。4 应用框架(说明该产品的应用模式)集群容错各节点关系: 这里的Invoker是Provider的一个可调用Service的抽象,Invoker封装了Provider地址及Service接口信息。 Directory代表多个Invoker,可以把它看成List,但与List不同的是,它的值可能是动态变化的,比如注册中心推送变更。 Cluster将Directory中的多个Invoker伪装成一个Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,

3、重试另一个。 Router负责从多个Invoker中按路由规则选出子集,比如读写分离,应用隔离等。 LoadBalance负责从多个Invoker中选出具体的一个用于本次调用,选的过程包含了负载均衡算法,调用失败后,需要重选负载均衡在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用。Random LoadBalance 随机,按权重设置随机概率。 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。RoundRobinLoadBalance 轮循,按公约后的权重设置轮循比率。 存在慢的提供者累积请求问题,比如:第二

4、台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。LeastActiveLoadBalance 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。 使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。ConsistentHashLoadBalance 一致性Hash,相同参数的请求总是发到同一提供者。 当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。 算法参见:http:/en.wikipedia.org/wiki/Consistent_hashing。 缺省只对第一个参数Hash,如果要修

5、改,请配置 缺省用160份虚拟节点,如果要修改,请配置hash.nodes320线程模型事件处理线程说明 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求,比如只是在内存中记个标识,则直接在IO线程上处理更快,因为减少了线程池调度。 但如果事件处理逻辑较慢,或者需要发起新的IO请求,比如需要查询数据库,则必须派发到线程池,否则IO线程阻塞,将导致不能接收其它请求。 如果用IO线程处理事件,又在事件处理过程中发起新的IO请求,比如在连接事件中发起登录请求,会报“可能引发死锁”异常,但不会真死锁。5 使用限制Dubbo运行JDK1.5之上。6 部署依赖关系依赖系统缺省依赖javassist、

6、netty、spring等包,但不是必须依赖,通过配置Dubbo可不依赖任何三方库运行。DUBBO缺省依赖: log4j.jar和commons-logging.jar日志输出包。 可以直接去掉,dubbo本身的日志会自动切换为JDK的java.util.logging输出。 但如果其它三方库比如spring.jar间接依赖commons-logging,则不能去掉。 javassist.jar 字节码生成。 如果provider proxy=jdk或consumer proxy=,以及grizzly,则换成mina.jar或grizzly.jar。protocol name=rmiDUBBO

7、可选依赖:以下依赖,在主动配置使用相应实现策略时用到,需自行加入依赖。 mina: 1.1.7 grizzly: 2.1.4 httpclient: 4.1.2 hessian_lite: 3.2.1-fixed xstream: 1.4.1 fastjson: 1.1.8 zookeeper: 3.3.3 jedis: 2.0.0 xmemcached: 1.3.6 jfreechart: 1.0.13 hessian: 4.0.7 jetty: 6.1.26 hibernate-validator: 4.2.0.Final zkclient: 0.1 curator: 1.1.10 cxf

8、: 2.6.1 thrift: 0.8.0项目的Maven的POM文件增加DUBBO的依赖如果想将此发布包用于你的Maven项目, 请在你项目的Maven的POM文件中加上以下依赖:如果: Dubbo已发布到Maven中央仓库中: http:/central.maven.org/maven2/com/alibaba/dubboPom.xml文件如下:dependenciesdependencygroupIdcom.alibabaartifactIddubboversion2.5.3/dependency/dependencies/project系统间数据流关系服务提供者暴露一个服务的详细过程图

9、是服务提供者暴露服务的主过程:首先ServiceConfig类拿到对外提供服务的实际类ref(如:HelloWorldImpl),然后通过ProxyFactory类的getInvoker方法使用ref生成一个AbstractProxyInvoker实例,到这一步就完成具体服务到Invoker的转化。接下来就是Invoker转换到Exporter的过程。Dubbo处理服务暴露的关键就在Invoker转换到Exporter的过程(如上图中的红色部分),下面我们以Dubbo和RMI这两种典型协议的实现来进行说明: Dubbo的实现Dubbo协议的Invoker转为Exporter发生在DubboPr

10、otocol类的export方法,它主要是打开socket侦听服务,并接收客户端发来的各种请求,通讯细节由Dubbo自己实现。 RMI的实现RMI协议的Invoker转为Exporter发生在RmiProtocol类的export方法,它通过Spring或Dubbo或JDK来实现RMI服务,通讯细节这一块由JDK底层来实现,这就省了不少工作量。服务消费者消费一个服务的详细过程上图是服务消费的主过程:首先ReferenceConfig类的init方法调用Protocol的refer方法生成Invoker实例(如上图中的红色部分),这是服务消费的关键。接下来把Invoker转换为客户端需要的接口(

11、如:HelloWorld)。关于每种协议如RMI/Dubbo/Web service等它们在调用refer方法生成Invoker实例的细节和上一章节所描述的类似。7 产品环境要求开发环境基础样例开发指南1. 服务提供者(1)定义服务接口: (该接口需单独打包,在服务提供方和消费方共享)DemoService.javapackagecom.alibaba.dubbo.demo; publicinterfaceDemoService String sayHello(String name);(2)在服务提供方实现接口:(对服务消费方隐藏实现)DemoServiceImpl.javapackagec

12、om.alibaba.dubbo.demo.provider;importcom.alibaba.dubbo.demo.DemoService;publicclassDemoServiceImpl implementsDemoService publicString sayHello(String name) returnHello + name; (3)用Spring配置声明暴露服务:provider.xml?xmlversion=1.0encoding=UTF-8beansxmlns=/www.springframework.org/schema/beansxmlns:xsi=/www.w

13、3.org/2001/XMLSchema-instancedubbo=xsi:schemaLocation=/www.springframework.org/schema/beans /www.springframework.org/schema/beans/spring-beans.xsd !- 提供方应用信息,用于计算依赖关系 -applicationname=hello-world-app- 使用multicast广播注册中心暴露服务地址 -registryaddress=multicast:/224.5.6.7:1234- 用dubbo协议在20880端口暴露服务 -protocoln

14、ame=dubboport=20880- 声明需要暴露的服务接口 -serviceinterface=com.alibaba.dubbo.demo.DemoServiceref=demoService- 和本地bean一样实现服务 -beanid=class=com.alibaba.dubbo.demo.provider.DemoServiceImpl/beans(4)加载Spring配置Provider.javaimportorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassProvide

15、r publicstaticvoidmain(String args) throwsException ClassPathXmlApplicationContext context = newClassPathXmlApplicationContext(newString provider.xml);context.start();System.in.read(); / 按任意键退出2. 服务消费者(1)通过Spring配置引用远程服务consumer.xml- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -consumer-of-helloworld-app- 使用mul

16、ticast广播注册中心暴露发现服务地址 - 生成远程服务代理,可以和本地bean一样使用demoService -referenceid=interface=(2)加载Spring配置,并调用远程服务:(也可以使用IoC注入)Consumer.javapublicclassConsumer consumer.xmlDemoServicedemoService = (DemoService)context.getBean(); / 获取远程服务代理String hello = demoService.sayHello(world / 执行远程方法System.out.println( hell

17、o ); / 显示调用结果部署环境部署方式3. 部署DUBBO注册中心(必选)ZOOKEEPER注册中心安装: 建议使用dubbo-2.3.3以上版本的zookeeper注册中心客户端 Zookeeper是Apache Hadoop的子项目,强度相对较好,建议生产环境使用该注册中心 Dubbo未对Zookeeper服务器端做任何侵入修改,只需安装原生的Zookeeper服务器即可,所有注册中心逻辑适配都在调用Zookeeper客户端时完成安装:wget http:/www.apache.org/dist/zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar

18、.gz tarzxvf zookeeper-3.3.3.tar.gz cd zookeeper-3.3.3 cpconf/zoo_sample.cfgconf/zoo.cfg配置:viconf/zoo.cfg如果需要集群,zoo.cfg的内容如下:(其中data目录和server地址需改成你真实部署机器的信息)如果不需要集群,zoo.cfg的内容如下:(其中data目录需改成你真实输出目录)zoo.cfgtickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/dubbo/zookeeper-3.3.3/data clientPort=2181c

19、lientPort=2181 server.1=10.20.153.10:2555:3555 server.2=10.20.153.11:3555并在data目录下放置myid文件:(上面zoo.cfg中的dataDir)mkdir data vi myidmyid指明自己的id,对应上面zoo.cfg中server.后的数字,第一台的内容为1,第二台的内容为2,内容如下:myid14. 部署DUBBO监控中心(可选)管理控制台为阿里内部裁剪版本,开源部分主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能/wget tar zxvf apache-tomcat-6.0.35.tar.gz cd apache-tomcat-6.0.35 rm -rfwebapps/ROOTunzip dubbo-admin-2.4.1.war -d webapps/ROOT配置: (或将dubbo.properties放在当前用户目录下)vi webapps/ROOT/WEB-INF/dubbo.propertiesdubbo.propertiesdubbo.registry.address=zookeeper:/127.0.0.1:2181dubbo.admin.root.password=root dubbo.admin.gu

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2