周末两天在家准备把dubbo相关知识系统过一下,顺便写个demo以备以后不时之需,什么时候写demo都是先在网上找一下有没有别人总结好的,有的话直接拿过来修改修改就ok了。通过《一个简单的dubbo服务》
这篇文章在github上找到了对应的demo示例,直接clone下来对照着文章看了一遍没问题尝试着启动dubbo服务。
启动provider:
C:\Program Files\Java\jdk1.8.0_101\bin\java"
......
[27/08/17 10:48:39:039 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Notify urls for subscribe url provider://192.168.1.101:20880/api.PermissionService?anyhost=true&application=demotest-provider&category=configurators&check=false&dubbo=2.4.10&interface=api.PermissionService&methods=getPermissions&organization=dubbox&owner=programmer&pid=7436&side=provider×tamp=1503802117211, urls: [empty://192.168.1.101:20880/api.PermissionService?anyhost=true&application=demotest-provider&category=configurators&check=false&dubbo=2.4.10&interface=api.PermissionService&methods=getPermissions&organization=dubbox&owner=programmer&pid=7436&side=provider×tamp=1503802117211], dubbo version: 2.4.10, current host: 127.0.0.1
[27/08/17 10:48:39:039 CST] main INFO container.Main: [DUBBO] Dubbo SpringContainer started!, dubbo version: 2.4.10, current host: 127.0.0.1
[2017-08-27 10:48:39] Dubbo service server started!
启动consumer:
"C:\Program Files\Java\jdk1.8.0_101\bin\java"
......
[27/08/17 10:50:58:058 CST] main INFO config.AbstractConfig: [DUBBO] Refer dubbo service api.PermissionService from url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?anyhost=true&application=demotest-consumer&check=false&connected=true&dubbo=2.4.10&inside.invoker.count=1&inside.invokers=dubbo%3A%2F%2F192.168.1.101%3A20880%2Fapi.PermissionService%3Fanyhost%3Dtrue%26application%3Ddemotest-provider%26dubbo%3D2.4.10%26interface%3Dapi.PermissionService%26methods%3DgetPermissions%26organization%3Ddubbox%26owner%3Dprogrammer%26pid%3D7436%26side%3Dprovider%26timestamp%3D1503802117211&interface=api.PermissionService&methods=getPermissions&organization=dubbox&owner=programmer&pid=8096&side=consumer×tamp=1503802256832, dubbo version: 2.4.10, current host: 192.168.1.101
[Permission_0, Permission_1, Permission_2]
[27/08/17 10:50:58:058 CST] DubboShutdownHook INFO config.AbstractConfig: [DUBBO] Run shutdown hook now., dubbo version: 2.4.10, current host: 192.168.1.101
[27/08/17 10:50:58:058 CST] DubboShutdownHook INFO support.AbstractRegistryFactory: [DUBBO] Close all registries [zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=demotest-consumer&dubbo=2.4.10&interface=com.alibaba.dubbo.registry.RegistryService&organization=dubbox&owner=programmer&pid=8096×tamp=1503802256900], dubbo version: 2.4.10, current host: 192.168.1.101
[27/08/17 10:50:58:058 CST] DubboShutdownHook INFO zookeeper.ZookeeperRegistry: [DUBBO] Destroy registry:zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=demotest-consumer&dubbo=2.4.10&interface=com.alibaba.dubbo.registry.RegistryService&organization=dubbox&owner=programmer&pid=8096×tamp=1503802256900, dubbo version: 2.4.10, current host: 192.168.1.101
......
问题来了,在消费完provider端服务后自动关停消费者端服务!
折腾了一番,替换dubbo版本号(2.8.4)后,正常运行了!
......
[27/08/17 10:37:10:010 CST] main INFO config.AbstractConfig: [DUBBO] Refer dubbo service api.PermissionService from url zookeeper://localhost:2181/com.alibaba.dubbo.registry.RegistryService?anyhost=true&application=demotest-consumer&check=false&dubbo=2.8.4&generic=false&interface=api.PermissionService&methods=getPermissions&organization=dubbox&owner=programmer&pid=11580&side=consumer×tamp=1503801428993, dubbo version: 2.8.4, current host: 192.168.1.101
[Permission_0, Permission_1, Permission_2]
1、为什么要替换原文示例项目pom.xml指定的dubbo版本号?
其实不止是替换掉了dubbo版本号,示例项目中pom.xml中的dubbo框架依赖本身框架里的spring,里面的spring依赖关系混乱,在替换的时候同时把dubbo的版本号由2.8.4替换成了2.4.10,正是由于低版本的框架bug导致问题的产生,改回2.8.4版本后完美运行!完整pom.xml:
<properties>
<org.springframework.version>4.0.3.RELEASE</org.springframework.version>
<alibaba.dubbo.version>2.8.4</alibaba.dubbo.version>
<zkclient.version>0.1</zkclient.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>dubbotest</groupId>
<artifactId>api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- alibaba dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${alibaba.dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>${zkclient.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
分享到:
相关推荐
在分布式服务框架中,Dubbo是一个非常重要的...总结,理解并熟练使用Dubbo应用的启动与停止脚本是运维工作中的基本技能,有助于提高服务的稳定性和运维效率。同时,结合有效的监控和管理策略,可以确保应用的高效运行。
在IT行业中,Spring Boot是一个备受推崇的框架,它简化了基于Spring的应用开发,而Dubbo则是一个高性能、轻量级的Java服务治理框架。Zookeeper是Apache的一个分布式协调服务,常用于分布式应用中的配置管理、命名...
在本文中,我们将深入探讨Dubbo服务提供者常见的启动方法,并结合源码分析其工作原理。 首先,Dubbo服务提供者的基础是Spring框架,因此最常见的方式是通过Spring容器来启动。这需要一个`pom.xml`文件来管理项目...
总结来说,基于Dubbo平台的服务自动启停方法是通过服务注册与发现机制实现的,这涉及到服务的启动、健康检查和停止。服务器的选择和配置对服务性能至关重要,而存储介质则保障了服务元数据的安全和高效访问。通过...
服务熔断是借鉴了电路保护器的设计理念,当服务调用连续多次失败时,系统会自动进入熔断状态,停止对服务的调用,快速返回错误结果,以减少系统的连锁反应。在熔断期间,系统可以尝试恢复服务,或者切换到备用方案...
Scala编写的Dubbo自动化部署工具是一款高效且便捷的软件,旨在简化Dubbo服务的部署流程。这个工具利用了Scala的强大功能和灵活性,结合了Dubbo的微服务框架,为开发人员提供了一种自动化的方式来管理他们的服务部署...
启动脚本是Dubbo应用部署中的重要组成部分,它能够自动化完成应用的启动过程。 #### 二、Dubbo应用部署结构 Dubbo应用的部署通常采用配置分离的方式,即通过Maven打包工具结合assemble插件生成一个包含所有必要...
6. **服务治理**:Dubbo提供服务的生命周期管理,包括服务的启动、停止、上下线等操作,以及服务版本控制、灰度发布等功能,便于进行持续集成和交付。 在实际操作中,我们需要按照以下步骤进行服务化改造: 1. **...
当某个服务调用失败率达到一定阈值时,Dubbo可以自动执行降级操作,即停止对该服务的调用,并返回默认值或错误信息,以防止故障扩散。 ##### 4.3 熔断机制 熔断机制类似于电路中的保险丝,当服务调用失败率超过...
4. **运行脚本**:可能包含启动和停止服务的Shell脚本(如`start.sh`和`stop.sh`),方便在Linux环境下操作,以及批处理脚本(如`start.bat`和`stop.bat`)适应Windows环境。 5. **示例测试**:可能包含单元测试或...
- **高性能和透明化的RPC远程服务调用方案**:Dubbo通过提供高性能的RPC(Remote Procedure Call)机制,使得服务调用像调用本地方法一样简单,极大地降低了分布式系统的开发难度。 - **SOA服务治理方案**:Dubbo...
Listener主要用于监听服务的生命周期事件,例如服务启动、停止、异常等。Filter则用于在服务调用前后执行自定义逻辑,实现对调用链的控制和修改。这些机制增强了Dubbo的可扩展性和灵活性。 ### 注册中心 注册中心...
3. Spring整合:Dubbo与Spring框架深度集成,可以通过Spring配置文件或注解来管理服务提供者,使得服务的启动、停止、销毁等生命周期管理更加便捷。 三、服务消费者(Consumer) 1. 引用服务:在服务消费者端,...
Dubbo的服务生命周期包括启动、运行、停止和销毁四个阶段。 接着,让我们来看一下如何进行基于属性配置的Dubbo服务发布。在服务提供者端,我们需要在Spring配置文件中定义服务接口、实现类以及服务暴露的相关属性。...
开发者可能需要了解如何在Windows上配置Java环境,以及如何使用命令行工具启动和停止Dubbo服务。同时,由于项目提供了模板示例,因此可能包含了测试用例或者样例代码,帮助开发者快速理解和验证Dubbo和Zookeeper的...
- **服务容器**:用于装载服务的容器,提供服务的启动、管理等功能。 ##### 14. ReferenceConfig缓存与分布式事务 - **ReferenceConfig缓存**:缓存已经创建过的远程服务代理对象,以减少重复创建的开销。 - **...
用户可以通过它查看服务提供者和消费者的状态,进行服务配置,如启动、停止服务,查看服务元数据等。此外,它还支持操作日志记录,帮助开发者跟踪和诊断问题。2.8.4版本的Dubbo-Admin已经相对成熟,包含了很多实用...
2. **新API支持**:引入了新的服务治理API,使得开发者能更方便地进行服务的生命周期管理,如服务的启动、停止、禁用等操作。 3. **增强的扩展性**:3.2.6版本增强了对SPI(Service Provider Interface)的支持,...
7. **scripts**:可能包含启动、停止、部署脚本,方便用户操作。 8. **docs**或**doc**:项目文档,可能包括用户手册、API参考等。 9. **tests**:测试代码,用于验证功能的正确性。 Dubbo-ops的主要功能可能包括:...
Spring的生命周期管理则确保了Dubbo组件在合适的时间被创建、初始化、启动和停止。 在服务治理方面,Dubbo提供了丰富的特性,如负载均衡、熔断降级、超时控制、健康检查等,这些都是通过Dubbo的Filter机制实现的。...