Dubbo分布式服务搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DT_Zhangshuo/article/details/88920690

目录

概述

什么是RPC

什么是Dubbo

搭建实例

Jar包

生产者xml

配置文件

消费者xml

安装zookeeper并启动服务


概述

什么是RPC

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

什么是Dubbo

Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。 Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,Dubbo自2011年开源后,已被许多非阿里系公司使用。

搭建实例

Jar包

<dependency>
	<groupId>com.alibaba</groupId>
		<artifactId>dubbo</artifactId>
			<version>2.5.3</version>
            <exclusions>
               <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
             </exclusions>
</dependency>

生产者xml

这些配置最终还是要引入到Spring的大配置文件中

<?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">
	
    <!-- 读入配置属性文件 -->
	<context:property-placeholder location="classpath*:conf/*.properties"  ignore-unresolvable="true" />

	<!-- 提供方应用信息,用于计算依赖关系 -->
	<dubbo:application name="qingniao-system-service" />
	
	<!-- 超时时间,重试次数 -->
	<dubbo:provider delay="-1" timeout="120000" retries="0" threadpool="fixed" threads="100"/>
	<dubbo:consumer timeout="300000" retries="0" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" />

	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="${dubbo.system.port}" />
  
	<!--
		interface:服务接口名(包名+类名),必填
		ref:服务对象实现引用(spring注册BeanID),必填
		group:服务分组,当一个接口有多个实现,可以用分组区分,可选(有多实现介意必填)
		version:服务版本,建议使用两位数字版本,通常在接口不兼容时版本号才需要升级,建议配置 -->
	<!-- 暴露后台管理admin_role服务  -->
	<dubbo:service interface="com.qingniao.test.system.service.RoleService" ref="roleServiceImpl" version="1.0"/>
	<dubbo:service interface="com.qingniao.test.system.service.UserService" ref="userServiceImpl" version="1.0"/>
    <dubbo:service interface="com.qingniao.test.system.service.FunctionService" ref="functionServiceImpl" version="1.0"/>
    <dubbo:service interface="com.qingniao.test.system.service.RoleFunctionService" ref="roleFunctionServiceImpl" version="1.0"/>
    <dubbo:reference interface="com.qingniao.test.system.service.RoleFunctionService" id="roleFunctionService" check="false"  version="1.0"/>
</beans>  

配置文件

dubbo.registry.address=127.0.0.1:2181
dubbo.system.port=40901
dubbo.solr.port=40902
dubbo.newHouse.port=40903

消费者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://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:application name="qinniao-back" />

	<!-- 超时时间,重试次数 -->
	<dubbo:provider delay="-1" timeout="300000" retries="0"/>
	<dubbo:consumer timeout="300000" retries="0" />

	<!-- 使用zookeeper注册中心暴露服务地址 -->
	<!-- 注册中心地址 -->
	<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
	
    <dubbo:reference interface="com.qingniao.test.system.service.UserService" id="userService" check="false" version="1.0" />
	<dubbo:reference interface="com.qingniao.test.system.service.RoleService" id="roleService" check="false" version="1.0" />
	<dubbo:reference interface="com.qingniao.test.system.service.FunctionService" id="functionService" check="false" version="1.0" />
	<dubbo:reference interface="com.qingniao.test.system.service.RoleFunctionService" id="roleFunctionService" check="false" version="1.0" />

</beans>

安装zookeeper并启动服务

下载zookeeper,解压后到conf目录下,把zoo_sample.cfg复制一个,改名zoo.cfg就好了。

到bin目录启动zkServer.cmd,别的暂时不用操心,默认端口2181

展开阅读全文

没有更多推荐了,返回首页