Dubbo分布式服务治理框架

Dubbo分布式服务治理框架1 Dubbo Dubbox 简介 1 1 什么是 Dubbo DubboxDUBBO 是一个分布式服务治理框架 致力于提供高性能和透明化的 RPC 远程服务调用方案 可以和 Spring 框架无缝集成 是阿里巴巴 SOA 服务化治理方案

大家好,欢迎来到IT知识分享网。

1. Dubbo/Dubbox简介

1.1. 什么是Dubbo/Dubbox

1.2. Dubbo核心架构

1.3. Dubbo核心要点

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

1.4. Dubbo的获取(官网hello world)

2. Dubbo本地服务化实现

2.1. Dubbo服务化架构包含的内容

2.2. 服务提供者实现

 <!-- junit测试包 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.16.RELEASE</version> </dependency> </dependencies> 

dubbo-provider.xml

<?xml version="1.0" encoding="UTF-8"?> 

<dubbo:application name="dubbo-test-provider" owner="sampson"></dubbo:application> <dubbo:protocol name="dubbo" port="20880" ></dubbo:protocol> <!-- 局域网广播注册中心 --> <dubbo:registry address="multicast://239.5.6.7:1234" /> <!-- 配置式发布 --> <bean id="userService" class="cn.itsource.dubbo.provider.service.UserServiceImpl"></bean> <dubbo:service interface="cn.itsource.dubbo.core.service.IUserService" ref="userService"></dubbo:service> 
<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 --> <dubbo:annotation package="cn.itsource.dubbo.provider.service" /> 

启动服务监听

String configLocation = "classpath*:/dubbo-provider.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(configLocation); System.out.println("dubbo-server服务正在监听,按任意键退出"); System.in.read(); 

<?xml version=”1.0″ encoding=”UTF-8″?>

<dubbo:application name="dubbo-test-consumer"></dubbo:application> <!-- 局域网广播注册中心 --> <dubbo:registry address="multicast://239.5.6.7:1234" /> <!-- 配置式调用服务 --> <!-- <dubbo:reference id="helloService" interface="cn.itsource.dubbo.core.service.IHelloService"></dubbo:reference> --> <!-- 注解式调用服务 --> <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 --> <dubbo:annotation package="cn.itsource.dubbo.consumer" /> 

JUnit4调用dubbo服务测试类

import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.alibaba.dubbo.config.annotation.Reference; import cn.itsource.dubbo.core.service.IHelloService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath*:/dubbo-consumer.xml"}) public class DubboServiceTest { @Reference private IHelloService helloService; @Test public void testHello(){ String sayHi = helloService.sayHi("老宋"); System.out.println(sayHi); } 

}

2.4. 直连调试模式

<dubbo:registry address="N/A" check="false"/> 
<dubbo:registry address="N/A" check="false"/> 

url 配置属性

<dubbo:reference id="demoService" interface="cn.itsource.dubbo.DemoService" url="dubbo://localhost:20881" /> 

2.5. Dubbo服务打包

2.5.1. Dubbo服务的运行方式有三种

Pom.xml

在这里插入图片描述

<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 打包jar详细配置 --> <build> <!-- jar包名字 --> <finalName>provder</finalName> <!-- 打包资源配置,如配置文件 --> <resources> <resource> <targetPath>${project.build.directory}/classes</targetPath> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>/*.xml</include> <include>/*.properties</include> </includes> </resource> <!-- 结合com.alibaba.dubbo.container.Main 官方文档:dubbo会自动在classes/META-INF/spring下去加载spring的配置文件 因此打包时需要将spring配置文件复制到该目录 --> <resource> <targetPath>${project.build.directory}/classes/META-INF/spring</targetPath> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>applicationContext.xml</include> </includes> </resource> </resources> <pluginManagement> <plugins> <!-- 解决Maven插件在Eclipse内执行了一系列的生命周期引起冲突 --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <versionRange>[2.0,)</versionRange> <goals> <goal>copy-dependencies</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <classesDirectory>target/classes/</classesDirectory> <archive> <manifest> <mainClass>com.alibaba.dubbo.container.Main</mainClass> <!-- 重要:打包时 MANIFEST.MF文件不记录的时间戳版本 --> <useUniqueVersions>false</useUniqueVersions> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </manifest> <manifestEntries> <Class-Path>.</Class-Path> </manifestEntries> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <type>jar</type> <includeTypes>jar</includeTypes> <useUniqueVersions>false</useUniqueVersions> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> <dependencies> </dependencies> 

2.5.3. dubbo服务jar包运行

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/111269.html

(0)
上一篇 2026-01-25 22:15
下一篇 2026-01-25 22:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信