大家好,欢迎来到IT知识分享网。
1. Dubbo/Dubbox简介
1.1. 什么是Dubbo/Dubbox
1.2. Dubbo核心架构
1.3. Dubbo核心要点
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
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
