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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

dubbo和Zookeeper和SpringMVC的使用.docx

1、dubbo和Zookeeper和SpringMVC的使用互联网的发展,应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。第一:介绍Dubbo背景大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡。(1)当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。此时需要一个服务注册中心,动态的注册和发现服务

2、,使服务的位置透明。并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。(2)当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。(3)接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大

3、的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量,再以此访问量乘以机器数反推总容量。第二:Dubbo的简介Dubbo是一个分布式服务框架,解决了上面的所面对的问题,Dubbo的架构如图所示:节点角色说明:Provider:暴露服务的服务提供方。Consumer:调用远程服务的服务消费方。Registry:服务注册与发现的注册中心。Monitor:统计服务的调用次调和调用时间的监控中心。Container:服务运行容器。调用关系说明:0.服务容器负责启动,加载,运行服务提供者。1.服务提供者在启动时,向注册中心注册自己提供的服务。2.服务消费者在启动时,向注册中心订阅自己所需的

4、服务。3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。Dubbo提供了很多协议,Dubbo协议、RMI协议、Hessian协议,我们查看Dubbo源代码,有各种协议的实现,如图所示:我们之前没用Dubbo之前时,大部分都使用Hessian来使用我们服务的暴露和调用,利用HessianProxyFactory调用远程接口。上面是参考了Dubbo官方

5、网介绍,接下来我们来介绍SpringMVC、Dubbo、Zookeeper整合使用。第三:Dubbo与Zookeeper、SpringMVC整合使用第一步:在Linux上安装ZookeeperZookeeper作为Dubbo服务的注册中心,Dubbo原先基于数据库的注册中心,没采用Zookeeper,Zookeeper一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据,这里能很好的作为Dubbo服务的注册中心,Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅

6、请求。我们先在linux上安装Zookeeper,我们安装最简单的单点,集群比较麻烦。 (1)下载Zookeeper-3.4.6.tar.gz地址.apache.org/dist/zookeeper/ (2) 我们放到Linux下的一个文件夹,然后解压: #tarzxvfzookeeper-3.4.6.tar.gz (3)然后在对应的zookeeper-3.4.6/conf下有一个文件zoo_sample.cfg的这个文件里面配置了监听客户端连接的端口等一些信息,Zookeeper在启动时会找zoo.cfg这个文件作为默认配置文件,所以我们复制一个名称为zoo.cfg的文件,如图所示:我们查看

7、一下这个文件的里面的一些配置信息,如图所示:说明:clientPort:监听客户端连接的端口。tickTime:基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的tickTime。我们可以对配置文件的端口等或者进行高级配置和集群配置例如:maxClientxns:限制连接到ZooKeeper的客户端的数量等(4)启动Zookeeper的服务,如图所示:到这边Zookeeper的安装和配置完成第二步:配置dubbo-admin的管理页面,方便我们管理页面 (1)下载dubbo-admin-2.4.1.war包,在Linux的tomcat部署,先把dubbo-a

8、dmin-2.4.1放在tomcat的webapps/ROOT下,然后进行解压: #jar-xvfdubbo-admin-2.4.1.war (2)然后到webapps/ROOT/WEB-INF下,有一个dubbo.properties文件,里面指向Zookeeper,使用的是Zookeeper的注册中心,如图所示:(3)然后启动tomcat服务,用户名和密码:root,并访问服务,显示登陆页面,说明dubbo-admin部署成功,如图所示:第三步:SpringMVC与Dubbo的整合,这边使用的Maven的管理项目 第一:我们先开发服务注册的,就是提供服务,项目结构如图所示:(1)test-

9、maven-api项目加入了一个服务接口,代码如下:public interface TestRegistryService public String hello(String name); (2)test-maven-console在pom.xml加入Dubbo和Zookeeper的jar包、引用test-maven-api的jar包,代码如下: .testtest-maven-api0.0.1-SNAPSHOT .alibaba dubbo 2.5.3 org.apache.zookeeperzookeeper3.4.6 .github.sgroschupf zkclient 0.1 (

10、3)test-maven-console实现具体的服务,代码如下: Service(testRegistryService)public class TestRegistryServiceImpl implements TestRegistryService public String hello(String name) return hello+name;(4)我们服务以及实现好了,这时要暴露服务,代码如下:beans xmlns=.springframework.org/schema/beansxmlns:xsi=.w3.org/2001/XMLSchema-instance xmlns

11、:jee=.springframework.org/schema/jeexmlns:tx=.springframework.org/schema/txxmlns:dubbo=code.alibabatech./schema/dubboxmlns:context=.springframework.org/schema/contextxsi:schemaLocation=.springframework.org/schema/beans .springframework.org/schema/beans/spring-beans-3.1.xsd.springframework.org/schema

12、/tx .springframework.org/schema/tx/spring-tx-3.1.xsd.springframework.org/schema/jee .springframework.org/schema/jee/spring-jee-3.1.xsdcode.alibabatech./schema/dubbo code.alibabatech./schema/dubbo/dubbo.xsd.springframework.org/schema/context .springframework.org/schema/context/spring-context-3.1.xsdd

13、efault-lazy-init=false 说明:dubbo:registry标签一些属性的说明:1)register是否向此注册中心注册服务,如果设为false,将只订阅,不注册。2)check注册中心不存在时,是否报错。3)subscribe是否向此注册中心订阅服务,如果设为false,将只注册,不订阅。4)timeout注册中心请求超时时间(毫秒)。5)address可以Zookeeper集群配置,地址可以多个以逗号隔开等。 dubbo:service标签的一些属性说明:1)interface服务接口的路径2)ref引用对应的实现类的Bean的ID3)registry向指定注册中心注册

14、,在多个注册中心时使用,值为的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A4)register默认true,该协议的服务是否注册到注册中心。 (5)启动项目,然后我们在Dubbo管理页面上显示,已经暴露的服务,但显示还没有消费者,因为我们还没实现消费者服务,如图所示:第二:我们在开发服务消费者,就是调用服务,我们在新建一个新的消费者项目结构如图所示:(1)test-maven-server-console的pom.xml引入Dubbo和Zookeeper的jar包、test-maven-api的jar包,因为引入test-maven-api

15、的jar包,我们在项目中调用像在本地调用一样。代码如下: .testtest-maven-api0.0.1-SNAPSHOT .alibaba dubbo 2.5.3 org.apache.zookeeperzookeeper3.4.6 .github.sgroschupf zkclient 0.1 (2)test-maven-server-console项目的具体实现,代码如下:Controllerpublic class IndexController Autowiredprivate TestRegistryService testRegistryService;RequestMappi

16、ng(/hello)public String index(Model model) String name=testRegistryService.hello(zz); System.out.println(xx=+name);return ; (3)我们要引用的地址,代码如下:beans xmlns=.springframework.org/schema/beansxmlns:xsi=.w3.org/2001/XMLSchema-instance xmlns:jee=.springframework.org/schema/jeexmlns:tx=.springframework.org/s

17、chema/txxmlns:dubbo=code.alibabatech./schema/dubboxmlns:context=.springframework.org/schema/contextxsi:schemaLocation=.springframework.org/schema/beans .springframework.org/schema/beans/spring-beans-3.1.xsd.springframework.org/schema/tx .springframework.org/schema/tx/spring-tx-3.1.xsd.springframewor

18、k.org/schema/jee .springframework.org/schema/jee/spring-jee-3.1.xsdcode.alibabatech./schema/dubbo code.alibabatech./schema/dubbo/dubbo.xsd.springframework.org/schema/context .springframework.org/schema/context/spring-context-3.1.xsddefault-lazy-init=false 说明:dubbo:reference的一些属性的说明:1)interface调用的服务接口2)check启动时检查提供者是否存在,true报错,false忽略3)registry从指定注册中心注册获取服务列表,在多个注册中心时使用,值为的id属性,多个注册中心ID用逗号分隔4)loadbalance负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用(4)项目启动,Dubbo管理页面,能看到消费者,如图所示:(5)然后访问消费者项目,Controller层能像调用本地一样调用服务的具体实现,如图所示:Dubbo提供了多种容错方案,包括负载均衡这些,如图所示:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1