分布式系统_进程间通信_dubbo使用入门
来源:互联网 发布:怎么自学java 编辑:程序博客网 时间:2024/04/30 06:59
Dubbo简介
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
Dubbo RPC框架不同于一般的RPC框架的地方在于,Dubbo RPC的目的在于实现SOA服务的治理和服务管理。其通过服务注册中心来发现服务,并通过服务中心来分发服务来实现服务的负载均衡,通过服务发现来解耦服务,使得整个服务能力可以高效地进行扩展。
Dubbo使用入门
本章节结合Spring Boot 1.3.12.RELEASE和Dubbo来讲解,Dubbo的使用说明。Dubbo RPC的基本结构中包括了,服务提供者和服务消费者。下面分别从服务提供者和服务消费者来说明。
dubbo-provider
基本的代码结构说明
dubbo-provider src main com.egoo service Demo.java DemoImpl.java Application.java resources dubbo provider.xml
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.egoo</groupId> <artifactId>dubbo-provider</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.7</java.version> <dubbo.version>2.4.10</dubbo.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <!-- RPC --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>${dubbo.version}</version> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>1.3.2.RELEASE</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.3.2.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <fork>true</fork> <meminitial>512m</meminitial> <maxmem>1048m</maxmem> </configuration> </plugin> </plugins> </build></project>
应用配置
resources->dubbo->provider.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="DemoProvider" /> <!-- 使用multicast广播注册中心暴露服务地址 --> <dubbo:registry address="multicast://224.5.6.7:1234" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <bean id="demoImpl" class="com.egoo.service.DemoImpl" /> <!-- service --> <!--将接口暴露给服务中心--> <dubbo:service interface="com.egoo.service.Demo" version="1.0.0" ref="demoImpl" id="demo" /></beans>
创建对应的服务
服务接口package com.egoo.service;/** * Created by fiboliu on 16-5-3. */public interface Demo { String greeting(String message);}服务实现package com.egoo.service;/** * Created by fiboliu on 16-5-3. */public class DemoImpl implements Demo { public String greeting(String message) { return message; }}
Application.java //main function
package com.egoo;import org.springframework.boot.SpringApplication;import org.springframework.context.annotation.ImportResource;import java.io.IOException;/** * Created by fiboliu on 16-5-3. */@ImportResource({"classpath:dubbo/provider.xml"})public class Application { public static void main(String args[]) { SpringApplication.run(Application.class, args); try { System.out.println("启动成功,按任意键关闭"); System.in.read(); } catch (IOException e) { e.printStackTrace(); } }}
dubbo-consumer
基本的代码结构说明
dubbo-consumer src main com.egoo service Demo.java Application.java resources dubbo.properties dubbo consumer.xml
pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.egoo</groupId> <artifactId>dubbo-consumer</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.7</java.version> <dubbo.version>2.4.10</dubbo.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <!-- RPC --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>${dubbo.version}</version> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>1.3.2.RELEASE</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.3.2.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <fork>true</fork> <meminitial>512m</meminitial> <maxmem>1048m</maxmem> </configuration> </plugin> </plugins> </build></project>
resources文件
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://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="DemoConsumer" /> <!-- 使用multicast广播注册中心暴露服务地址 --> <dubbo:registry address="multicast://224.5.6.7:1234" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:reference id="demo" interface="com.egoo.service.Demo" version="1.0.0" /></beans>
dubbo.properties
### Copyright 1999-2011 Alibaba Group.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.##dubbo.container=log4j,springdubbo.application.name=consumerdubbo.application.owner=egoodubbo.registry.address=multicast://224.5.6.7:1234#dubbo.registry.address=zookeeper://127.0.0.1:2181#dubbo.registry.address=redis://127.0.0.1:6379#dubbo.registry.address=dubbo://127.0.0.1:9090#dubbo.monitor.protocol=registrydubbo.log4j.file=logs/dubbo-demo-consumer.logdubbo.log4j.level=WARN
接口文件(保证和provider接口文件一致)
package com.egoo.service;/** * Created by fiboliu on 16-5-3. */public interface Demo { String greeting(String message);}
Application.java
package com.egoo;import com.egoo.service.Demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.ImportResource;/** * Created by fiboliu on 16-5-3. */@SpringBootApplication@ImportResource({"classpath:dubbo/consumer.xml"})public class Application { public static void main(String args[]) { ApplicationContext context = SpringApplication.run(Application.class, args); Demo demo = (Demo) context.getBean("demo"); System.out.println(demo.greeting("hello world!!")); }}
0 0
- 分布式系统_进程间通信_dubbo使用入门
- 分布式系统中的进程通信
- 分布式系统阅读笔记(四)-----进程间通信
- 分布式系统概念与设计-CH4进程间通信t
- 分布式系统中进程通信的理解
- 分布式计算(二)进程间通信
- 分布式 分布式系统入门
- linux 系统下使用socket进行本地进程间通信
- Windows系统进程间通信
- Android系统进程间通信
- Binder进程间通信系统
- UNIX系统调用_管道/父子进程通信
- 15.2 进程间通信_管道
- 15.7 进程间通信_消息队列
- 15.8 进程间通信_信号量
- 15.9 进程间通信_共享存储
- linux高级程序_进程间通信
- 进程通信_剪贴板
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_1_顶点照明
- BZOJ 2005([Noi2010]能量采集-数论)
- Elisp 入门笔记(1)
- swift 懒加载
- java网络socket编程
- 分布式系统_进程间通信_dubbo使用入门
- lexical_cast
- GDOI2016再次滚粗记
- GDOI2016旅行记
- Linux内核工程导论——进程:ELF文件执行原理(2)
- Caffe fine-tuning 微调网络
- server.xml配置文件简介
- SWIFT中的单行代码
- springmvc中数据绑定,controler开发细节,以及与struts2对比