dubbo的通讯方式几种配置方式

分布式服务框架Dubbo总结-0x02 dubbo常用配置 - 简书
分布式服务框架Dubbo总结-0x02 dubbo常用配置
常用功能配置
&dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100" /&&!--指定了线程池和最大线程数,拦截对象是所有--&
服务提供端
&!-- 声明需要暴露的服务接口 --&
&!--executes=10 服务器端并发执行(或占用线程池线程数)不能超过10个--&
&!--actives="10" 每客户端并发执行(或占用连接的请求数)不能超过10个--&
&dubbo:service interface="com.m1.dubboFunction.api.IProviderAPI" ref="providerImpl" executes="10" actives="10"&
&!-- &dubbo:method name="dosomething" actives="10"/&--& &!--dosomething方法每客户端并发执行(或占用连接的请求数)不能超过10个--&
&/dubbo:service&
服务消费端
&!--actives="10" 每客户端并发执行(或占用连接的请求数)不能超过10个--&
&dubbo:reference id="providerImpl" check="false" timeout="25000" retries="0" actives="10"
interface="com.m1.dubboFunction.api.IProviderAPI"&
&!-- &dubbo:method name="dosomething" actives="10"/& --&&!--dosomething方法每客户端并发执行(或占用连接的请求数)不能超过10个--&
&/dubbo:reference&
如果&dubbo:service&和&dubbo:reference&都配了actives,&dubbo:reference&优先
负载均衡策略
配置loadbalance属性为leastactive,[更多配置](http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1)
&!--actives="10" 每客户端并发执行(或占用连接的请求数)不能超过10个--&
&!--loadbalance="leastactive" 此Loadbalance会调用并发数最小的Provider(Consumer端并发数)--&
&dubbo:reference id="providerImpl" check="false" timeout="25000" retries="0" actives="10" loadbalance="leastactive"
interface="com.m1.dubboFunction.api.IProviderAPI"&
&!-- &dubbo:method name="dosomething" actives="10"/& --&&!--dosomething方法每客户端并发执行(或占用连接的请求数)不能超过10个--&
&/dubbo:reference&
然而并没有什么卵用,上面的有些东西,都是可以用注解一行搞掂
主要注解有两个:
com.alibaba.dubbo.config.annotation.Service
com.alibaba.dubbo.config.annotation.Reference
consumer.xml配置
dubbo:annotation 是自动扫描包,与spring的雷同
&dubbo:application name="dubbo-test-consumer"/&
&dubbo:registry address="zookeeper://x.x.x.x:2181" /&
&dubbo:protocol name="dubbo" port="21101" /&
&dubbo:annotation package="com.m1.dubboFunction.consumer" /&
consumer.java
public class Consumer {
private Long count = 0L;
@Autowired
@Reference(version = "1.0.0", actives = 10, loadbalance = "leastactive")//直接采用注解
private IProviderAPI providerAPI;
@Scheduled(cron = "0-59 * * * * ?")//定时
@Scheduled(fixedDelay = 1000 * 5, initialDelay = 1000)//心跳更新,5000毫秒执行一次,延迟1秒后才执行
public void doSomething() {
System.out.println(providerAPI.dosomething("now is " + count, count++));
provider.xml配置 除扫描包路径和协议端口不同外,其余一致
ProviderImpl .java
@Service("providerImpl")
@com.alibaba.dubbo.config.annotation.Service(executes=10,version = "1.0.0",actives = 10,loadbalance="leastactive")
public class ProviderImpl implements IProviderAPI {
public String dosomething(String json, long logId) {
System.out.println(json);
return "i finish doing "+json +" where logid=="+logId;
Tip1:虽然注解里面也有registry,application,protocol,但完全不会用...官方文档里面也没有提及
Tip2:如果启用了version 属性,版本号必须一致,才能调用
在死线上挣扎的咸鱼
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
0 准备 安装注册中心:Zookeeper、Dubbox自带的dubbo-registry-simple;安装DubboKeeper监控:https://github.com/dubboclub/dubbokeeper; 以上两点准备,不是本文重点,不做详细介绍,安装比较简...
架构师之路:从无到有搭建中小型互联网公司后台服务架构与运维架构http://www.roncoo.com/course/view/ae1dbbaf7d10b 概述dubbo支持多种远程调用方式,例如dubbo RPC(二进制序列化 + ...
概述 dubbo支持多种远程调用方式,例如dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议,至少在开源版本没发现对文本序列化的支持)、hessian(二进制序列化 + http协议)、WebServices (文本...
概述 dubbo支持多种远程调用方式,例如dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议,至少在开源版本没发现对文本序列化的支持)、hessian(二进制序列化 + http协议)、WebServices (文本...
RandomAccessFile
相关API的使用 writeInt()方法源码,每次写入一位 IO流(输入流,输出流)字节流,字符流1.字节流1)InputStream、OutputStreamInputStream抽象了应用程序读取数据的方式OutputStream抽...
1 初遇野夫的文字,是《1980年代的爱情》,那个时候就觉得很惊艳:一个原本有些俗套的故事,却在他的笔下变得如此动人心魄,让人读后念念不忘扼腕不已。有这样的效果,如果不是情节的原因,那必然是作者的文字和讲述方式的缘故,记得那本书的序言里,有人说野夫的文字“充分展示了土地的特...
这个2016年遇见了非常多的非常棒的人,像我可爱的大六子吾狗老锦鲤一言不合就揉乱她头发的小炉子等等等等性格非常好的大家。喜欢和各位打打闹闹,为所欲为的扔节操。【非常享受和大家开小火车:D】 在漫长又短暂的2016里,因为大大小小的原因弄丢了一些原来很喜欢的孩子,对于曾经犯下...
1 第一次听说“仪式感”这个词是在《小王子》这本书里。 狐狸说:“你每天最好在相同的时间来,比如说你定在下午四点来,那么到了三点我就会开始很高兴。时间越是接近,我就越高兴。等到四点,我会很焦躁,坐立不安;我已经发现了幸福的代价。但如果你每天在不同的时间来,我就不知道该在什么...Dubbo 同步、异步调用的几种方式
Dubbo 同步、异步调用的几种方式
主要讲述了 Dubbo 在底层异步通信机制的基础上实现的同步调用、异步调用、参数回调以及事件通知几种方式及示例。
我们知道,Dubbo 缺省协议采用单一长连接,底层实现是 Netty 的 NIO 异步通讯机制;基于这种机制,Dubbo 实现了以下几种调用方式:
同步调用是一种阻塞式的调用方式,即 Consumer 端代码一直阻塞等待,直到 Provider 端返回为止;
通常,一个典型的同步调用过程如下:
Consumer 业务线程调用远程接口,向 Provider 发送请求,同时当前线程处于阻塞状态;
Provider 接到 Consumer 的请求后,开始处理请求,将结果返回给 Consumer;
Consumer 收到结果后,当前线程继续往后执行。
这里有 2 个问题:
Consumer 业务线程是怎么进入阻塞状态的?
Consumer 收到结果后,如果唤醒业务线程往后执行的?
其实,Dubbo 的底层 IO 操作都是异步的。Consumer 端发起调用后,得到一个 Future 对象。对于同步调用,业务线程通过Future#get(timeout),阻塞等待 Provider 端将结果返回;timeout则是 Consumer 端定义的超时时间。当结果返回后,会设置到此 Future,并唤醒阻塞的业务线程;当超时时间到结果还未返回时,业务线程将会异常返回。
基于 Dubbo 底层的异步 NIO 实现异步调用,对于 Provider 响应时间较长的场景是必须的,它能有效利用 Consumer 端的资源,相对于 Consumer 端使用多线程来说开销较小。
异步调用,对于 Provider 端不需要做特别的配置。下面的例子中,Provider 端接口定义如下:
public interface AsyncService {
String goodbye(String name);
Consumer 配置
&dubbo:reference id="asyncService" interface="com.alibaba.dubbo.samples.async.api.AsyncService"&
&dubbo:method name="goodbye" async="true"/&
&/dubbo:reference&
需要异步调用的方法,均需要使用 &dubbo:method/&标签进行描述。
Consumer 端发起调用
AsyncService service = ...;
String result = service.goodbye("samples");// 这里的返回值为空,请不要使用
Future&String& future = RpcContext.getContext().getFuture();
... // 业务线程可以开始做其他事情
result = future.get(); // 阻塞需要获取异步结果时,也可以使用 get(timeout, unit) 设置超时时间
Dubbo Consumer 端发起调用后,同时通过RpcContext.getContext().getFuture()获取跟返回结果关联的Future对象,然后就可以开始处理其他任务;当需要这次异步调用的结果时,可以在任意时刻通过future.get(timeout)来获取。
一些特殊场景下,为了尽快调用返回,可以设置是否等待消息发出:
sent="true" 等待消息发出,消息发送失败将抛出异常;
sent="false" 不等待消息发出,将消息放入 IO 队列,即刻返回。
默认为fase。配置方式如下:
&dubbo:method name="goodbye" async="true" sent="true" /&
如果你只是想异步,完全忽略返回值,可以配置 return="false",以减少 Future 对象的创建和管理成本:
&dubbo:method name="goodbye" async="true" return="false"/&
此时,RpcContext.getContext().getFuture()将返回null。
整个异步调用的时序图如下:
此示例代码位于:
参数回调有点类似于本地 Callback 机制,但 Callback 并不是 Dubbo 内部的类或接口,而是由 Provider 端自定义的;Dubbo 将基于长连接生成反向代理,从而实现从 Provider 端调用 Consumer 端的逻辑。
Provider 端定义 Service 和 Callback
public interface CallbackService {
void addListener(String key, CallbackListener listener);
public interface CallbackListener {
void changed(String msg);
Provider 端 Service 实现
public class CallbackServiceImpl implements CallbackService {
private final Map&String, CallbackListener& listeners = new ConcurrentHashMap&String, CallbackListener&();
public CallbackServiceImpl() {
Thread t = new Thread(new Runnable() {
public void run() {
while (true) {
for (Map.Entry&String, CallbackListener& entry : listeners.entrySet()) {
entry.getValue().changed(getChanged(entry.getKey()));
} catch (Throwable t) {
listeners.remove(entry.getKey());
Thread.sleep(5000); // timely trigger change event
} catch (Throwable t) {
t.printStackTrace();
t.setDaemon(true);
t.start();
public void addListener(String key, CallbackListener listener) {
listeners.put(key, listener);
listener.changed(getChanged(key)); // send notification for change
private String getChanged(String key) {
return "Changed: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Provider 端暴露服务
&bean id="callbackService" class="com.alibaba.dubbo.samples.callback.impl.CallbackServiceImpl"/&
&dubbo:service interface="com.alibaba.dubbo.samples.callback.api.CallbackService" ref="callbackService" connections="1" callbacks="1000"&
&dubbo:method name="addListener"&
&dubbo:argument index="1" callback="true"/&
&!--&dubbo:argument type="com.demo.CallbackListener" callback="true" /&--&
&/dubbo:method&
&/dubbo:service&
这里,Provider 需要在方法中声明哪个参数是 Callback 参数。
Consumer 端实现 Callback 接口
CallbackService callbackService = ...;
callbackService.addListener("foo.bar", new CallbackListener() {
public void changed(String msg) {
System.out.println("callback1:" + msg);
Callback 接口的实现类在 Consumer 端,当方法发生调用时,Consumer 端会自动 export 一个 Callback 服务。而 Provider 端在处理调用时,判断如果参数是 Callback,则生成了一个 proxy,因此服务实现类里在调用 Callback 方法的时候,会被传递到 Consumer 端执行 Callback 实现类的代码。
上述示例代码位于:此示例代码位于:
这种调用方式有点像消息的发布和订阅,但又有区别。比如当 Consumer 端 完成了Callback 服务的 export 后,如果后续重启了,这时 Provider 端就会调不通;同时 Provider 端如何清理掉这个 proxy 也是一个问题。
事件通知允许 Consumer 端在调用之前、调用正常返回之后或调用出现异常时,触发 oninvoke、onreturn、onthrow 三个事件。
可以通过在配置 Consumer 时,指定事件需要通知的方法,如:
&bean id="demoCallback" class="com.alibaba.dubbo.samples.notify.impl.NotifyImpl" /&
&dubbo:reference id="demoService" check="false" interface="com.alibaba.dubbo.samples.notify.api.DemoService" version="1.0.0" group="cn"&
&dubbo:method name="sayHello" onreturn="demoCallback.onreturn" onthrow="demoCallback.onthrow"/&
&/dubbo:reference&
其中,NotifyImpl 的代码如下:
public class NotifyImpl implements Notify{
public Map&Integer, String& ret = new HashMap&Integer, String&();
public void onreturn(String name, int id) {
ret.put(id, name);
System.out.println("onreturn: " + name);
public void onthrow(Throwable ex, String name, int id) {
System.out.println("onthrow: " + name);
这里要强调一点,自定义 Notify 接口中的三个方法的参数规则如下:
oninvoke 方法参数与调用方法的参数相同;
onreturn方法第一个参数为调用方法的返回值,其余为调用方法的参数;
onthrow方法第一个参数为调用异常,其余为调用方法的参数。
上述配置中,sayHello方法为同步调用,因此事件通知方法的执行也是同步执行。可以配置 async=true让方法调用为异步,这时事件通知的方法也是异步执行的。特别强调一下,oninvoke方法不管是否异步调用,都是同步执行的。
事件通知的示例代码请参考:
原文出处:
用云栖社区APP,舒服~
【云栖快讯】云栖社区技术交流群汇总,阿里巴巴技术专家及云栖社区专家等你加入互动,老铁,了解一下?&&
用配置管理(Application Configuration Management,简称 ...
支持以数据库为核心的结构化存储产品之间的数据传输。 它是一种集数据迁移、数据订阅及数据实时同...
消息队列(Message Queue,简称MQ)是阿里云商用的专业消息中间件,是企业级互联网...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...请问dubbo开发的程序时如何进行分布式部署的,比如一个项目用maven分成的provider,web,consumer模块,这几个模块是如何打包部署?
[问题点数:40分,无满意结帖,结帖人u]
本版专家分:0
结帖率 50%
CSDN今日推荐
本版专家分:0
结帖率 50%
本版专家分:0
结帖率 50%
匿名用户不能发表回复!|
CSDN今日推荐dubbo配置及使用 - 简书
dubbo配置及使用
曾国藩说的"既往不恋,当下不杂,未来不迎"
dubbo的一直说要来记载下,写了又一直没有完整的整理下,今天加班把这篇整理了下,公司最近我们改的项目都使用了dubbo,但是分布式事物这一块还是没有处理,就类型一个http调用失败那么如何处理样,这事需要思考的,这篇算是入门篇了,后续会在记载更多知识,后面的dubbo启动方式很多人的选择应该不一样的吧,我感觉dubbo自带的用命令启动就很不错,现在类似的springboot模块,打包成jar的模式,直接运行jar启动也是可以的。看个人需要了。
三、dubbo配置
3.1、dubbo的配置
maven的jar如下:
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&dubbo&/artifactId&
&version&${dubbo.version}&/version&
&exclusions&
&exclusion&
&groupId&org.springframework&/groupId&
&artifactId&spring&/artifactId&
&/exclusion&
&/exclusions&
&/dependency&
&dependency&
&groupId&org.apache.zookeeper&/groupId&
&artifactId&zookeeper&/artifactId&
&version&${zookeeper.version}&/version&
&/dependency&
&dependency&
&groupId&com.github.sgroschupf&/groupId&
&artifactId&zkclient&/artifactId&
&version&${zkclient.version}&/version&
&/dependency&
根据dubbo官网&a href="http://dubbo.io/User+Guide-zh.htm"&用户教程&/a&中的配置可以自己搭建一个dubbo项目,当然,dubbo在&a href=" https://github.com/alibaba/dubbo.git "&github&/a&上的源码里面也有demo的,那么现在看看我自己搭建的项目
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"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"&
&!-- 读入配置属性文件 --&
&context:property-placeholder location="classpath*:service.properties" /&
&!-- 提供方应用信息,用于计算依赖关系 --&
&dubbo:application name="mouse-moon-app-web"/&
&!-- 使用multicast广播注册中心暴露服务地址 --&
&dubbo:registry address="zookeeper://127.0.0.1:2181" /&
&!-- &dubbo:registry address="zookeeper://127.0.0.1:2181" /& --&
&!-- 用dubbo协议在20880端口暴露服务 --&
&dubbo:protocol name="dubbo" port="20880" /&
&!-- 声明需要暴露的服务接口 --&
&dubbo:service interface="com.mouse.moon.api.UserService" ref="userService" /&
&!-- 和本地bean一样实现服务 --&
&bean id="userService" class="com.mouse.moon.service.UserServiceImpl" /&
使用main方法进行发布暴露代码
package com.mouse.moon.
import org.springframework.context.support.ClassPathXmlApplicationC
public class AppMain {
public static void main(String[] args) throws Exception{
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/provider-test/spring-mybatis.xml"});
context.start();
System.in.read();
配置消费端dubbo-consumer.xml的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="consumer-mouse-monn"
&!-- 使用multicast广播注册中心暴露发现服务地址 --&
&dubbo:registry
protocol="zookeeper"
address="127.0.0.1:2181" /&
&!--用户查询
&dubbo:reference id="userService" interface="com.mouse.moon.api.UserService"/&
消费端代码如下
package org.mouse.
import org.springframework.context.support.ClassPathXmlApplicationC
import com.mouse.moon.api.UserS
public class Client {
public static void main(String args[]){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/consumer-test/dubbo-consumer.xml"});
context.start();
UserService userService = (UserService)context.getBean("userService");
System.out.println(userService.getUserInfoById("1"));
发布接口的日志:
Paste_Image.png
暴露接口列表
Paste_Image.png
暴露接口的详情:
Paste_Image.png
消费端在监控平台显示:
Paste_Image.png
调用端查询数据的相关日志:
Paste_Image.png
集群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="mouse-moon-app-web"/&
&!-- 使用multicast广播注册中心暴露服务地址 --&
&dubbo:registry address="zookeeper://121.12.60.22:2183?backup=121.12.60.22:.60.22:2182" /&
&dubbo:registry address="zookeeper://121.12.60.22:2181" /& --&
&!-- 用dubbo协议在20880端口暴露服务 --&
&dubbo:protocol name="dubbo" port="20881" /&
&!-- 声明需要暴露的服务接口 --&
&dubbo:service interface="com.mouse.moon.api.UserService" ref="userService"
&!-- 和本地bean一样实现服务 --&
&bean id="userService" class="com.mouse.moon.service.UserServiceImpl" /&
上面的集群地址是在我的这篇&a href="http://www.jianshu.com/p/950fb55ea53a"&zookeeper集群配置&/a&文章中配置的。
上面给的是集群配置,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="consumer-of-helloworld-app" /&
&!-- 使用multicast广播注册中心暴露发现服务地址 --&
&dubbo:registry protocol="zookeeper" address="121.12.60.22:.60.22::.60.22::2182" /&
其实这里面主要就是这些xml的配置,其他代码就是分了模块的,比如我这项目结构如下
Paste_Image.png
新建module时候可以如此,在父项目上右键(我的IDE是eclipse),然后根据自己的需要新建不同的module
Paste_Image.png
上面的监控的说明见下面的说明
3.2 dubbo监控
将dubbo源码下的dubbo-admin项目编译后的war包放到tomcat下,访问项目提示需要输入账号密码
用户名:root
密码:root
dubbo-admin.png
监控中的账号面属性在源码里面可以看到为止如下图位置
Paste_Image.png
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
四、有关启动的方式
4.1、启动方式
上面看到了,我其实是使用main方法来启动暴露dubbo,这事一种方式。dubbo源码中自带了可以转成命令的形式操作,也是用main方式,只是加载固定位置的配置文件,以shell脚本的形式启动。
package com.mouse.moon.
public class AppMain {
public static void main(String[] args) throws Exception{
com.alibaba.dubbo.container.Main.main(args);
以上述方式启动代码,下面是打印的日志
-----------&[Ljava.lang.S@15db9742
log4j:WARN No appenders could be found for logger (com.alibaba.dubbo.common.logger.LoggerFactory).
log4j:WARN Please initialize the log4j system properly.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/tool/repository/ch/qos/logback/logback-classic/1.1.3/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/tool/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
.14:59:41.307 DEBUG [main] org.springframework.core.env.StandardEnvironment[109] - Adding [systemProperties] PropertySource with lowest search precedence
.14:59:41.311 DEBUG [main] org.springframework.core.env.StandardEnvironment[109] - Adding [systemEnvironment] PropertySource with lowest search precedence
.14:59:41.311 DEBUG [main] org.springframework.core.env.StandardEnvironment[127] - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
.14:59:41.312 INFO [main] org.springframework.context.support.ClassPathXmlApplicationContext[581] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@14bf9759: startup date [Tue Feb 14 14:59:41 CST 2017]; root of context hierarchy
.14:59:41.342 DEBUG [main] org.springframework.core.env.StandardEnvironment[109] - Adding [systemProperties] PropertySource with lowest search precedence
.14:59:41.343 DEBUG [main] org.springframework.core.env.StandardEnvironment[109] - Adding [systemEnvironment] PropertySource with lowest search precedence
.14:59:41.343 DEBUG [main] org.springframework.core.env.StandardEnvironment[127] - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment]
.14:59:41.351 DEBUG [main] org.springframework.core.io.support.PathMatchingResourcePatternResolver[317] - Resolved classpath location [META-INF/spring/] to resources []
.14:59:41.352 DEBUG [main] org.springframework.core.io.support.PathMatchingResourcePatternResolver[483] - Resolved location pattern [classpath*:META-INF/spring/*.xml] to resources []
.14:59:41.352 DEBUG [main] org.springframework.beans.factory.xml.XmlBeanDefinitionReader[224] - Loaded 0 bean definitions from location pattern [classpath*:META-INF/spring/*.xml]
.14:59:41.354 DEBUG [main] org.springframework.context.support.ClassPathXmlApplicationContext[615] - Bean factory for org.springframework.context.support.ClassPathXmlApplicationContext@14bf9759: org.springframework.beans.factory.support.DefaultListableBeanFactory@6fb0d3ed: defining beans []; root of factory hierarchy
.14:59:41.384 DEBUG [main] org.springframework.context.support.ClassPathXmlApplicationContext[728] - Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@6cc7b4de]
.14:59:41.386 DEBUG [main] org.springframework.context.support.ClassPathXmlApplicationContext[752] - Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@2bbaf4f0]
.14:59:41.387 DEBUG [main] org.springframework.beans.factory.support.DefaultListableBeanFactory[744] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@6fb0d3ed: defining beans []; root of factory hierarchy
.14:59:41.388 DEBUG [main] org.springframework.context.support.ClassPathXmlApplicationContext[779] - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@]
.14:59:41.388 DEBUG [main] org.springframework.beans.factory.support.DefaultListableBeanFactory[251] - Returning cached instance of singleton bean 'lifecycleProcessor'
.14:59:41.390 DEBUG [main] org.springframework.core.env.PropertySourcesPropertyResolver[91] - Could not find key 'spring.liveBeansView.mbeanDomain' in any property source
.14:59:41.396 DEBUG [main] org.springframework.beans.factory.support.DefaultListableBeanFactory[251] - Returning cached instance of singleton bean 'lifecycleProcessor'
[ 14:59:41] Dubbo service server started!
所以,如果使用这种方式启动发布,那么我们需要将dubbo的配置文件配置到[classpath:META-INF/spring/.xml]**下,我们现在的dubbo项目的配置就是如此的。
Paste_Image.png
\/\_/ |____/|___|
任何事情都是要靠努力和用心。
No one is really busy in this world, it’s always about priorities. You will always find time for the things you feel important.
概述 dubbo支持多种远程调用方式,例如dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议,至少在开源版本没发现对文本序列化的支持)、hessian(二进制序列化 + http协议)、WebServices (文本...
架构师之路:从无到有搭建中小型互联网公司后台服务架构与运维架构http://www.roncoo.com/course/view/ae1dbbaf7d10b 概述dubbo支持多种远程调用方式,例如dubbo RPC(二进制序列化 + ...
概述 dubbo支持多种远程调用方式,例如dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议,至少在开源版本没发现对文本序列化的支持)、hessian(二进制序列化 + http协议)、WebServices (文本...
Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgbook/spring-boot-reference-guide-zh/details带目录浏览地址:http://www.maoyupeng.com/sprin...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
今天技术合伙人被坑的文章很火,冯大辉前辈写了一段文字,我觉得挺好,就转出来了。 By @Fenng 给创业公司的技术合伙人们一些人生忠告 今天,你可能被一篇《就算老公一毛钱股份都没拿到,在我心里,他依然是最牛逼的创业者》的文章刷屏了。你,你可能是某创业公司的技术合伙人,你可...
文/曾曾是一匹野马 此地的雨确有些频繁 被打湿的人,揣着两兜心事 又有些失眠。像这雨总不消停 踢踏和猫叫交替控制着气旋 床像块蘸水的吸音海绵 坐起来陷入夜色,加倍想你 你说: “爱情总是不公平, 但又无法抑制。” 我们结伴忘却了退路 的确,一如雪中束手就擒的兔子 听凭命运。...
孤不知道好的朋友的定义是什么,但总归有一条是必须有的吧,那就是起码你心中还有孤,你还在乎孤的喜怒哀乐吧!孤曾经不计功利的交了那么多朋友,只有这么一个让我太心寒了!完全不在乎我的感受。真他妈瞎了孤的狗眼。 兄弟是真的真的很想和你当基友,一辈子的那种,你哭我陪你喝酒,你笑我陪你...
MPMoviePlayerController 与AVAudioPlayer有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMoviePlayerController 可以直接通过远程URL初始化,而AVAudioPlayer则不可以。不过大体上用起来感觉差不多...
有句俗话说:“爹矮矮一个,娘矮矮一窝”。于是对于孩子的身高,民间一直有这样一个说法:如果母亲的身高不高,子女的身高肯定也不会高。这种说法就让那些原本矮个子的女性对于生小孩比较担忧,担心自己的身高会影响到孩子?但是这个说话靠谱吗? 孩子身高受父母遗传因素比较大 临床数据显示,...}

我要回帖

更多关于 dubbo的集群方式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信