博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dubbo服务运行的三种方式
阅读量:5266 次
发布时间:2019-06-14

本文共 14197 字,大约阅读时间需要 47 分钟。

  dubbo服务运行,也就是让生产服务的进程一直启动。如果生产者进程挂掉,也就不存在生产者,消费者不能进行消费。

 

Dubbo服务运行的三种方式如下:

1、使用Servlet容器运行(Tomcat、Jetty等) -不可用
  缺点:增加复杂性(端口、管理)
  浪费资源(内存)
  需要占用多个端口和内存,这种方式是不可取的

2、自己建立Main方法类运行(Srping容器)

  缺点:Dobbo本省提供的高级特性没用上,自己的启动类可能有缺陷

3、使用Dubbo框架提供的Main方法类来运行(Spring 容器) 建议使用

  优点:框架本身提供(com.alibaba.dubbo.container.Main),可是现优雅关机(ShutdownHook)。

  这个不存在缓存,生产者开启或者关闭之后dubbo-admin可以马上感知到。

 

下面测试方法2和方法3。

1.自建类发布服务:(简单-重要)

pom.xml如下:

4.0.0
cn.qlq
zookeper
0.0.1-SNAPSHOT
org.apache.zookeeper
zookeeper
3.4.8
org.apache.curator
curator-framework
2.12.0
org.apache.curator
curator-recipes
2.12.0
com.alibaba
dubbo
2.6.6
org.javassist
javassist
3.20.0-GA
io.netty
netty-all
4.1.34.Final
com.101tec
zkclient
0.2
org.apache.curator
curator-framework
2.12.0
log4j
log4j
1.2.16
org.slf4j
slf4j-api
1.7.25
commons-lang
commons-lang
2.6
org.apache.maven.plugins
maven-compiler-plugin
3.5.1
1.7
1.7
UTF-8
org.springframework.boot
spring-boot-maven-plugin

1.1 xml配置格式的发布

provider.xml

 

provider.java发布服务:

package dubbo;import java.io.IOException;import java.util.concurrent.CountDownLatch;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Provider {    public static void main(String[] args) throws IOException, InterruptedException {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "provider.xml" });        context.start();        CountDownLatch countDownLatch = new CountDownLatch(1);        countDownLatch.await();    }}

启动之后查看dubbo-admin管理界面:

 

2.API格式的发布

package dubbo.api;import java.util.concurrent.CountDownLatch;import com.alibaba.dubbo.config.ApplicationConfig;import com.alibaba.dubbo.config.ProtocolConfig;import com.alibaba.dubbo.config.RegistryConfig;import com.alibaba.dubbo.config.ServiceConfig;import dubbo.DubboService;import dubbo.DubboServiceImpl;public class Provider {    public static void main(String[] args) throws InterruptedException {        CountDownLatch countDownLatch = new CountDownLatch(1);        // 服务实现        DubboService dubboService = new DubboServiceImpl();        // 当前应用配置        ApplicationConfig application = new ApplicationConfig();        application.setName("provider");        // 连接注册中心配置        RegistryConfig registry = new RegistryConfig();        registry.setAddress("zookeeper://127.0.0.1:2181");        registry.setUsername("aaa");        registry.setPassword("bbb");        // 服务提供者协议配置        ProtocolConfig protocol = new ProtocolConfig();        protocol.setName("dubbo");        protocol.setPort(12345);        protocol.setThreads(200);        // 注意:ServiceConfig为重对象,内部封装了与注册中心的连接,以及开启服务端口        // 服务提供者暴露服务配置        ServiceConfig
service = new ServiceConfig
(); // 此实例很重,封装了与注册中心的连接,请自行缓存,否则可能造成内存和连接泄漏 service.setApplication(application); service.setRegistry(registry); // 多个注册中心可以用setRegistries() service.setProtocol(protocol); // 多个协议可以用setProtocols() service.setInterface(DubboService.class); service.setRef(dubboService); service.setVersion("1.0.0"); // 暴露及注册服务 service.export(); countDownLatch.await(); }}

3.注解方式的发布

   参考:

 

补充:自建类打成jar包的方式运行:

修改pom.xml

4.0.0
cn.qlq
zookeper
0.0.1-SNAPSHOT
org.apache.zookeeper
zookeeper
3.4.8
org.apache.curator
curator-framework
2.12.0
org.apache.curator
curator-recipes
2.12.0
com.alibaba
dubbo
2.6.6
org.javassist
javassist
3.20.0-GA
io.netty
netty-all
4.1.34.Final
com.101tec
zkclient
0.2
org.apache.curator
curator-framework
2.12.0
log4j
log4j
1.2.16
org.slf4j
slf4j-api
1.7.25
commons-lang
commons-lang
2.6
junit
junit
4.9
org.apache.maven.plugins
maven-compiler-plugin
3.5.1
1.7
1.7
UTF-8
org.apache.maven.plugins
maven-jar-plugin
target/classes/
dubbo.Provider
false
true
lib/
.
org.apache.maven.plugins
maven-dependency-plugin
copy-dependencies
package
copy-dependencies
jar
jar
false
${project.build.directory}/lib

 

  maven-jar-plugin 可以设置打包的一些信息。设置jar包运行的主类是dubbo.Provider

  maven-dependency-plugin是打包项目所依赖的jar包,上面配置是生成依赖的jar包到target的lib目录下。

 

运行maven install命令生成jar包和对应的lib目录:

 

cmd运行下面命令即可:

E:\xiangmu\zookeper\target>set classpath=%classpath%;./lib;E:\xiangmu\zookeper\target>java -jar zookeper-0.0.1-SNAPSHOT.jar

 

dubbo-admin查看项目:

2.   使用dubbo提供的类来发布

  使用com.alibaba.dubbo.container.Main类来发布

修改pom.xml即可:

4.0.0
cn.qlq
zookeper
0.0.1-SNAPSHOT
junit
junit
4.12
org.apache.zookeeper
zookeeper
3.4.8
org.apache.curator
curator-framework
2.12.0
org.apache.curator
curator-recipes
2.12.0
com.alibaba
dubbo
2.6.6
org.javassist
javassist
3.20.0-GA
io.netty
netty-all
4.1.34.Final
com.101tec
zkclient
0.2
org.apache.curator
curator-framework
2.12.0
log4j
log4j
1.2.16
org.slf4j
slf4j-api
1.7.25
commons-lang
commons-lang
2.6
ch.qos.logback
logback-core
1.1.11
dubboService
${project.build.directory}/classes
src/main/resources
true
**/*.xml
**/*.properties
${project.build.directory}/classes/META-INF/spring
src/main/resources/
true
provider.xml
org.apache.maven.plugins
maven-compiler-plugin
3.5.1
1.7
1.7
UTF-8
org.eclipse.m2e
lifecycle-mapping
1.0.0
org.apache.maven.plugins
maven-dependency-plugin
[2.0,)
copy-dependencies
org.apache.maven.plugins
maven-jar-plugin
target/classes/
com.alibaba.dubbo.container.Main
false
true
lib/
.
org.apache.maven.plugins
maven-dependency-plugin
copy-dependencies
package
copy-dependencies
jar
jar
false
${project.build.directory}/lib

  ${project.build.directory} 构建目录,缺省为target。 

 

运行maven install 或者package打包即可,然后到target目录下运行该jar包:

PS E:\xiangmu\zookeper\target> java -jar .\dubboService.jar[2019-03-18 18:52:29] Dubbo service server started!

 

dubbo-admin查看项目:

 

   简单的方式还是自己编写类发布服务。

 

转载于:https://www.cnblogs.com/qlqwjy/p/10554081.html

你可能感兴趣的文章
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
一种高效的序列化方式——MessagePack
查看>>
2019年春季学期第四周作业
查看>>
2019春第十周作业
查看>>
解决ThinkPHP关闭调试模式时报错的问题汇总
查看>>
【APT】SqlServer游标使用
查看>>
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>
PAT——1060. 爱丁顿数
查看>>