dubbo+zookeeper+spring整合

 

1.搭建好zookeeper集群平台

     前边转载文章已有,不再赘述

 

2.什么是dubbo

dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,高性能和透明化的RPC远程服务调用方案,完美实现服务的输出和输入功能,可以和Spring框架无缝集成

Provider:服务提供方 
Consumer:服务消费者 
Registry:注册中心 
Monitor:统计服务调用次数和调用时间的监控中心

调用流程 
a.启动服务提供者。 
b.服务提供者在启动时,向注册中心(zookeeper)注册自己提供的服务。 
c.服务消费者在启动时,向注册中心订阅自己所需的服务。 
d.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 
e.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 
f.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
 

3. 服务提供者

  创建dubbo的maven工程

  pom文档部分:

 <!--dubbo start-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.3</version>
        </dependency>
        <!--dubbo end-->

 

spring部分配置:

   <!-- 扫描所有bean  -->
   <context:component-scan base-package="com.wuzl.dubbo.**"/>


    <!-- 提供方应用信息,用于计算依赖关系  -->
	<dubbo:application name="xs_provider"/>
	
	<!-- 使用zk注册中心暴露服务地址 即zk的所在服务器ip地址和端口号 -->
	<dubbo:registry protocol="zookeeper" 
      address="192.168.100.66:2181,192.168.100.69:2181,192.168.100.77:2181" />
	
	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880"/>
	
	<!-- 关闭提供者的检索 -->
	<dubbo:consumer check="false"></dubbo:consumer>
	
	<dubbo:annotation package="com.wuzl.dubbo"/>
	
	<dubbo:provider delay="-1" timeout="60000" retries="0"></dubbo:provider>

 

   服务代码:

@Service
public class DemoServiceImpl implements DemoService{

	@Override
	public String hello(String inputStr) {
		String result = "hello,"+inputStr;
		return result;
	}

}

 

4.服务消费者

同样创建客户端maven工程

pom文件部分内容:

 <!--dubbo start-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.3</version>
        </dependency>
        <!--dubbo end-->

spring配置:

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
	<dubbo:application name="hjy_consumer" />
 
	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<dubbo:registry address="zookeeper://192.168.100.69:2181" />
 
 	<dubbo:annotation package="com.wuzl.dubboClient"/>
 	
 	<dubbo:provider delay="-1" timeout="60000" retries="0"></dubbo:provider>
 
	<!-- 生成远程服务代理,可以像使用本地bean一样使用demoService 包路径要和服务提供者一致-->
	<dubbo:reference id="demoService" 
    interface="com.wuzl.dubbo.provider.service.DemoService" />

消费者代码:

public class DubboClient {

	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "config/applicationContext.xml" });
		context.start();
 
		DemoService demoService = (DemoService) context.getBean("demoService");
		String result = "";
		for(int i=0;i<20;i++){
			result = demoService.hello("哈哈_"+i);
			System.out.println("result:"+result);
		}


	}
}

消费者可以调用zk注册中心的任一地址,zookeeper自动分配转发具体的服务提供者处理消费者的请求

 

5.dubbo-admin搭建

下载地址:
https://itmayun.ctfile.com/fs/3011962-230676583

下载后把war包放入tomcat的webapps目录下,启动tomcat

浏览器输入:http://localhost:8080/dubbo-admin/ 
默认账号: root 密码:root
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值