dubbo入门示例(二)

目录

一、Dubbo入门示例(二)

二、zookeeper安装

1. 安装 java环境

2. 安装 zookeeper

2.1 安装步骤

三、dubbo项目配置

1. Maven 项目结构

1.1 dubbo-common

1.2 dubbo-server

1.3 dubbo-client

1.4 启动


一、Dubbo入门示例(二)

Dubbo入门示例(一)

本章演示 Dubbo+Zookeeper demo

dubbo 版本 2.6.2

zookeeper 版本 3.4.10

curator-recipes 版本 4.0.0

二、zookeeper安装

zookeeper单机安装步骤

1. 安装 java环境

yum -y install java-1.8.0-openjdk*

2. 安装 zookeeper

网址 http://mirror.bit.edu.cn/apache/zookeeper/

2.1 安装步骤

1.  linux 安装目录 /usr/local/zookeeper

mkdir -p /usr/local/zookeeper
cd /usr/local/zookeeper

2. 上传压缩包至/usr/local/zookeeper 并解压

/usr/local/zookeeper/zookeeper-3.4.10.tar.gz

tar -zxvf zookeeper-3.4.10.tar.gz 

3. 复制配置文件

cd zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg

4. 修改配置文件:默认配置即可启动,端口 2181

vim zoo.cfg  

参数

意义

tickTime

2000

syncLimit

Leader 和 follower 之间的通讯时长最长不能超过 initLimt*ticktime

initLimt

接受客户端链接 zk 初始化的最长等待心跳时长 initLimt*ticktime

dataDir

数据目录 

dataLogDir

日志文件

clientPort

客户端链接服务端端口号

Server.A=B:C:D

A 第几号服务器

B 服务 IP

C 代表 Leader 和 follower 通 讯端口

D 备用选 leader 端口

5. 启动

cd /usr/local/zookeeper/zookeeper-3.4.10/bin
// 启动
sh zkServer.sh start  
// 停止
sh zkServer.sh stop 

6. 验证

jps

25264 Jps
25247 QuorumPeerMain
sh zkServer.sh status

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: standalone // 单机模式

7. 链接

输入 ls / 查看节点

quit 退出

cd /usr/local/zookeeper/zookeeper-3.4.10/bin
sh zkCli.sh

[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]

 

三、dubbo项目配置

1. Maven 项目结构

  • dubbo-common 公共组件
  • dubbo-client 客户端
  • dubbo-server 服务端

1.1 dubbo-common

项目结构

pom文件

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.6.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.10</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>4.0.0</version>
		</dependency>

com.core.common.entity.Order

import java.io.Serializable;

public class Order implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private Integer id;
	private String orderNo;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getOrderNo() {
		return orderNo;
	}
	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}
	@Override
	public String toString() {
		return "Order [id=" + id + ", orderNo=" + orderNo + "]";
	}
	
}

com.core.common.entity.User

public class User implements Serializable{

    private static final long serialVersionUID = 1L;
    private Integer id;
    private String name;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + "]";
    }
}

com.core.common.service.OrderService

import com.core.common.entity.Order;

public interface OrderService {
	
	public Order getOrder(Integer id);
	
}

com.core.common.service.UserService

import com.core.common.entity.User;

public interface UserService {
	public User getUser();
	
	public User getUser(Integer id);
}

1.2 dubbo-server

项目结构

pom

		<dependency>
			<groupId>com.core</groupId>
			<artifactId>dubbo-common</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

com.core.service.OrderServiceImpl

import java.util.UUID;

import com.core.common.entity.Order;
import com.core.common.service.OrderService;

public class OrderServiceImpl implements OrderService{

	@Override
	public Order getOrder(Integer id) {
		Order order = new Order();
		order.setId(id);
		order.setOrderNo(UUID.randomUUID().toString().replaceAll("-", "")+id);
		return order;
	}

}

com.core.service.UserServiceImpl

import com.core.common.entity.User;
import com.core.common.service.UserService;

public class UserServiceImpl implements UserService{

	@Override
	public User getUser() {
		User user = new User();
		user.setId(1);
		user.setName("zhangsan");
		return user;
	}
	
	@Override
	public User getUser(Integer id) {
		User user = new User();
		user.setId(id);
		user.setName("zhangsan"+id);
		return user;
	}
}

com.core.dubbo.SpringServerApplication

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;


public class SpringServerApplication {
    public static void main(String[] args) throws IOException {
        ApplicationContext context = new ClassPathXmlApplicationContext("/spring-provide.xml");
        ((ClassPathXmlApplicationContext) context).start();
        System.in.read();
    }
}

spring-provide.xml

<?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://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
       
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="spring-dubbo-server"/>
	
	<!-- 设置注册中心 -->
    <dubbo:registry protocol="zookeeper" address="192.168.149.140:2181"></dubbo:registry>
    
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880"/>

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.core.common.service.UserService" ref="userService" />
    <dubbo:service interface="com.core.common.service.OrderService" ref="orderService" />
    
    <!-- 和本地bean一样实现服务 -->
    <bean id="userService" class="com.core.service.UserServiceImpl"/>
    <!-- 和本地bean一样实现服务 -->
    <bean id="orderService" class="com.core.service.OrderServiceImpl"/>
    
</beans>

1.3 dubbo-client

项目结构

pom

		<dependency>
			<groupId>com.core</groupId>
			<artifactId>dubbo-common</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

com.core.dubbo.SpringClientApplication

import java.io.IOException;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.core.common.entity.Order;
import com.core.common.entity.User;
import com.core.common.service.OrderService;
import com.core.common.service.UserService;

public class SpringClientApplication {
	
	private static int id ;
    public static void main(String[] args) throws IOException {
    	
        ApplicationContext context = new ClassPathXmlApplicationContext("/spring-consumer.xml");
        UserService userService = context.getBean(UserService.class);
        OrderService orderService = context.getBean(OrderService.class);
        

		while (!read().equals("exit")) {
            User user = userService.getUser(id);
            System.out.println(user);
            Order order = orderService.getOrder(id);
            System.out.println(order);
        }
    }

    private static String read() throws IOException {
        byte[] b = new byte[1024];
        int size = System.in.read(b);
        String trim = new String(b, 0, size).trim();
        try {
        	id = Integer.parseInt(trim);
		} catch (Exception e) {}
        return trim;

    }

}

spring-consumer.xml

<?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://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

	<!-- 设置服务名 -->
    <dubbo:application name="spring-dubbo-client"/>
   
   	<!-- 设置注册中心 -->
    <dubbo:registry protocol="zookeeper" address="192.168.149.140:2181"></dubbo:registry>
    
    <!-- 调用端口 -->
    <dubbo:protocol name="dubbo" port="20880"/>
    <dubbo:reference id="userService" interface="com.core.common.service.UserService" />
    <dubbo:reference id="orderService" interface="com.core.common.service.OrderService" />
    
</beans>

1.4 启动

启动提供者  com.core.dubbo.SpringServerApplication

启动消费者  com.core.dubbo.SpringClientApplication

zookeeper 节点变化:增加dubbo节点

[zk: localhost:2181(CONNECTED) 4] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 5] ls /
[dubbo, zookeeper]
[zk: localhost:2181(CONNECTED) 6] ls /dubbo
[com.core.common.service.OrderService, com.core.common.service.UserService]
[zk: localhost:2181(CONNECTED) 7] 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值