Dubbox介绍和简单使用

版权声明:转载请标明出处~~ https://blog.csdn.net/weixin_43231076/article/details/83010242

Dubbox介绍和简单使用

Dubbox定义:

1、dubbox是dubbo的一个版本,它是针对于SOA架构的系统,实现系统表现层和服务层之间的关系调用。
2、dubbox使用rpc协议进行远程调用,直接使用socket通信,传输效率高。
而且它可以计算出系统之间的调用关系,可以管理服务,记录每个服务器被调用的次数,频率,以便于知道哪些服务需要做集群。

dubbox的原理:

     1、存在的节点:服务提供方(服务层)、服务调用方(表现层),服务注册中心,服务运行容器,统计服务的调用次数和调用时间(监控中心)
   			 1)、服务提供方在服务运行容器启动之后,会把所有的服务都在注册中心进行注册
      	 2)、服务调用方在启动是,会向注册中心订阅自己所需要的服务,得到服务地址列表
		 3)、服务调用方从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用
		 4)、表现层和服务层在内存中累计调用次数和调用时间,定时没分钟发送一次统计数据到监控中心,以便知道哪些服务被调用的频率高

dubbox的注册中心:Zookeeper :

	 Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbox 服务的注册中心,工业强度较高,可用于生产环境
     Zookeeper的安装:
	1).使用虚拟机打开linux镜像文件,这是一个linux系统,里面已经装好了jdk
	2).修改虚拟系统的网络适配器  NAT:表示虚拟机中的系统和本机使用相同的网卡,本机能上网,那个系统也能上网
	3).虚拟系统的网络编辑器选择 仅主机类型,子网ip改成25网段

Dubbox的安装

	1).使用SRT软件,连接linux系统,输入用户名和密码后,使用Alt+P键,切换到sftp控制台,将dubbox压缩包上传到linux系统中
  2).解压文件之后,在文件目录下新建一个data文件夹,用来存放zookeeper的数据
  3).进入conf文件夹,将zoo_sample.cfg 改名为 zoo.cfg,再修改 dataDir=/root/zookeeper-3.4.6/data(这里使用绝对路径)
  4).启动zookeeper,进入bin目录,输入./zkServer.sh start启动zookeeper服务
  5).配置eclipse中配置dubbox的离线约束,这里可以在eclipse中使用dubbox时,会有提示。将dubbox目录中的dubbo.xsd文件,配置到eclipse的XML catalog中,地址使用http://code.alibabatech.com/schema/dubbo/dubbo.xsd

dubbox demo

    1).新建一个maven项目,作为服务提供层,打包方式为war包,里面写一个接口和实现类,返回一个String,在实现类上使用@Service注解,但是这个注解不能用原来的,要用alibaba.dubbo下面的 因为这个服务要注册到Zookeeper,不使用这个,注册不了
    2).配置application-service.xml文件,配置这个服务在注册中心注册的名字,注册中心的地址,以及要将哪些包扫面进容器中
    3).新建一个maven项目,作为服务消费层,打包方式war包,在里面创建一个controller类,而且要把服务层的接口也在这里写一遍(注意,是只写接口)
   4).在controller中定义接口的对象实例,就可以调用接口中的方法了(以前使用的是@Autowired,现在要使用@Reference,表示远程注入)
   5).测试dubbox demo,首先要保证zookeeper服务是开启的;然后先启动服务层代码,最后启动访问层代码

注册中心的管理中心

   1).使用dubbox的源代码,对dubbo-admin目录下的代码进行maven 打包,打成war包
   2).将打成的war包和linux系统下使用的tomcat7压缩包,使用SRT软件传到虚拟机系统中
   3).将war包放入tomcat中,运行
   4).在浏览器,访问虚拟机中的tomcat下的程序,使用虚拟机的ip地址,页面出现要输入用户名密码时,都输入root,就能看到管理中心的页面,访问地址:ip:8080/dubbo-admin

dubbox在服务层和表现层的配置使用

1).服务层(spring配置文件中):
	<!-- 设置这个服务在注册中心的名字 -->
	<dubbo:application name="dubboxdemo-service" />

	<!-- 设置注册中心的地址 -->
	<dubbo:registry address="zookeeper://192.168.25.128:2181" />

	<!-- 设置要扫描到容器中的包的路径 -->
	<dubbo:annotation package="com.itheima.demo.service.impl" />

2).表现层(spring配置文件中):
	<!-- 设置这个服务消费方在注册中心的名字 -->
	<dubbo:application name="dubboxdemo-web" />

	<!-- 设置注册中心的地址 -->
	<dubbo:registry address="zookeeper://192.168.25.128:2181" />

	<!-- 设置要扫描到容器中的包的路径 -->
	<dubbo:annotation package="com.itheima.demo.controller" />
	
使用以上的配置的方法,则在接口实现类中,使用@Service注解,但是这个注解不能用原来的,要用alibaba.dubbo下面的,
					    在controller定义接口对象时,则不能使用@Autowired来自动注入,要使用dubbo下的@Refernce注解来远程引用
						
3).如果在服务层加一个配置:
	<!-- 服务配置,暴露一个服务到注册中心,这里指定服务的接口,以及服务这个对象bean的id是userServiceImpl -->
	<dubbo:service interface="com.itheima.demo.service.UserService" ref="userServiceImpl"/>
   在表现层也加一个配置:
    <!-- 引用一个注册中心的服务,这里指定服务的接口,以及bean的id(这个id要和服务层定义的暴露服务的那个ref的值一样) -->
	<dubbo:reference interface="com.itheima.demo.service.UserService" id="userServiceImpl"/>
	
使用3)的方式配置后,则可以使用原来的@Service和@Autowired注解

猜你喜欢

转载自blog.csdn.net/weixin_43231076/article/details/83010242