Dubbo之生产者

环境步骤:

 

  1. 安装Zookeepr启动
  2. 创建Maven项目搭建生产者和消费者
  3. 安装DubboAdmin平台,实现监控

 

Dubbo注册中心采用的是Zookeeper。为什么采用Zookeeper呢?

Zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心。

Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求

 

创建Maven工程

 

项目结构:

主要分三大模块:

toov5-dubbo-api : 存放公共接口;

toov5-dubbo-consumer : 调用远程服务;

toov5-dubbo-provider : 提供远程服务

 

创建maven  toov5-member-api  

       然后创建子模块   toov5-member-service-impl

 

1、创建maven 父pom文件项目

2、创建两个maven model 一个是a; toov5-member-dubbo-service-api (依赖公用接口 去实现之) 

                                          一个是b: toov5-member-public-dubbo-api (公用接口)

a的pom 要依赖 b

         <dependency>
	    <groupId>com.toov5</groupId>
            <artifactId>toov5-member-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
	  </dependency>

依赖了就可以去实现了哦

 

生产者:

pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.toov5</groupId>
    <artifactId>toov5-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>toov5-member-dubbo-service-api</artifactId>
    <dependencies>
	  <dependency>
	    <groupId>com.toov5</groupId>
        <artifactId>toov5-member-api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
	  </dependency>
	  
	  <dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.10</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>org.jboss.netty</groupId>
			<artifactId>netty</artifactId>
			<version>3.2.5.Final</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.3.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.5.3</version>
			<exclusions>
				<exclusion>
					<groupId>org.springframework</groupId>
					<artifactId>spring</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.jboss.netty</groupId>
					<artifactId>netty</artifactId>
				</exclusion>
			</exclusions>
		</dependency>	  
  </dependencies>
</project>

  

package com.toov5.member.service.impl;

import com.toov5.api.member.service.MemberService;

public class MemberServiceImpl implements MemberService {
     
       public String getUser(Long userId) {
        System.out.println("订单服务调用会员服务:userId"+userId);
        return "toov5";
    }
    
    
}

启动类

package com.toov5.member.service.impl;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AppMember {
   
    public static void main(String[] args) throws IOException {
        
    ClassPathXmlApplicationContext applicationContext  = new ClassPathXmlApplicationContext("dubbo-provider.xml");    
    applicationContext.start();  //发布服务直接
    System.out.println("会员启动成功...");    
    System.in.read();  //服务一直保持运行
    
    }
     
}

dubbo配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
	<!--定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识 -->
	<dubbo:application name="demotest-provider" />
	<!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper -->
	<dubbo:registry address="zookeeper://192.168.91.5:2181" />
	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880" />
	<!--使用 dubbo 协议实现定义好的 api.PermissionService 接口 -->
	<dubbo:service interface="com.toov5.api.member.service.MemberService"
		ref="MemberServiceImpl" protocol="dubbo" />
	<!--具体实现该接口的 bean --> <!-- 包名+类名 -->
	<bean id="MemberServiceImpl" class="com.toov5.member.service.impl.MemberServiceImpl" />
	
</beans>

 

 启动会员服务:

 

privider 下面的节点是经常变换的 所以临时的

 

 

 

 

  

 

posted @ 2018-11-07 17:58  toov5  阅读(606)  评论(0编辑  收藏  举报