导航:首页 > 配服务器 > dubbo如何指向一个服务器

dubbo如何指向一个服务器

发布时间:2022-04-26 03:39:39

㈠ bbo泛化调用细节是如何实现的

直连加不发布服务 DUBBO的配置属性里面对消费端提供了不从注册中心发现服务的机制,直接配置远程接口的地址,这样可以保证消费端连接到制定的环境接口。这样消费端是解决了问题,但是服务提供端呢?如上图的B1它即是消费端也是服务提供端,它提供A1所依赖的接口,那么如果B1将它的服务发布到注册中心里面(这里需要提醒,STABLE环境机制里面所有子环境公用一个注册中心),那么势必会导致stable环境里面的A会发现B1提供的服务?势必会导致stable环境的不稳定(stable环境的机制是stable环境只能进不能出,就是不能调用外部其他子环境的服务)?所以B1不能发布服务到注册中心,bbo也提供了相关的配置属性来支持这一点。下面我例举出通过哪些配置可以实现这种方案: 服务消费端: DUBBO在消费端提供了一个url的属性来指定某个服务端的地址 <!--lang:xml--> <bbo:reference interface="com.alibaba.bbo.demo.HelloWorldService" check="false" id="helloWorldService"/> 默认的方式是从注册中心发现接口为com.alibaba.bbo.demo.HelloWorldService的服务,但是如果需要直连,可以在bbo.properties下面配置bbo.reference.helloWorldService.url=bbo://ip:port/com.alibaba.bbo.demo.HelloWorldService可以通过配置bbo.reference.url=bbo://ip:port/来让某个消费者系统的服务都指向制定的服务器地址(关于配置信息可以参考《DUBBO配置规则详解》)

㈡ bbo是如何启动的

已知,在项目启动过程中,我们会将bbo的配置文件写到spring的配置文件里,如下xml文件:

<bbo:application name="anyname_provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<bbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用bbo协议在20880端口暴露服务 -->
<bbo:protocol name="bbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<bbo:service interface="com.shxz130.provider.Provider"
ref="demoService" />

从官方文档中,我们能看到如下:

启动过程.png

也就是说spring启动过程中,随着Spring在初始化过程中,碰到bbo命名的标签,如(<bbo:service>,<bbo:registry>)等标签,会由DubboNamespaceHandler类处理,具体原理见链接Spring自定义标签

DubboBeanDefinitionParser代码如下:

public class DubboNamespaceHandler extends NamespaceHandlerSupport { static {
Version.checkDuplicate(DubboNamespaceHandler.class);
} public void init() {
registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));
registerBeanDefinitionParser("mole", new DubboBeanDefinitionParser(MoleConfig.class, true));
registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));
registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));
registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));
registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));
registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true));
registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));
registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false));
registerBeanDefinitionParser("annotation", new ());
}
}

遇到不同的标签,会由不同的Parser处理,这里重点看服务发布,这行代码:

registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));

也就是说,当Spring容器处理完<bbo:service>标签后,会在Spring容器中生成一个ServiceBean ,服务的发布也会在ServiceBean中完成。不妨看一下ServiceBean的定义:

public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener<ContextRefreshedEvent>, BeanNameAware {
}

该Bean实现了很多接口,关于InitializingBean,DisposableBean,ApplicationContextAware,BeanNameAware,这些接口的使用介绍如下链接:

㈢ JAVA分布开发bbo问题

首先要搞清楚三者的概念
1、Dubbo是阿里开源的默认基于TCP协议RPC远程服务调度框架,简单理解就是服务A使用TCP协议调用服务B的Dubbo接口。
2、Zookeeper是注册中心,在这里主要用于管理bbo服务提供者和消费者的注册信息与服务调度时提供相关依据。
3、Tomcat是WEB应用服务器,可以对外暴露基于HTTP协议的服务接口。
由于用户访问你的应用首先是通过浏览器,也就是基于HTTP协议,所以必须对外暴露HTTP接口作为入口,那么就需要使用WEB应用服务器,比如Tomcat、Jetty、Undertow等等。
关于不启动tomcat,需要哪些配置的问题如下:
Dubbo支持HTTP协议,但原理任然是通过WEB应用服务器暴漏一个端口。从Dubbo本身专注的领域来说,不建议用HTTP协议,所以最终的结论是,服务与服务之间的接口调用使用Dubbo,而对外暴露HTTP接口任然使用WEB应用服务器。

㈣ bbo怎么实现rpc远程调用

在消费者初始化的时候,会生成一个消费者代理注册到容器中,该代理回调中持有一个MockClusterInvoker实例,消费调用服务接口时它的invoke会被调用,此时会构建一个RpcInvocation对象,把服务接口的method对象和参数放到RpcInvocation对象中,作为MockClusterInvoker.invoke方法的参数,在这个invoke方法中,判断请求是否需要mock,是否配置了mock属性,是强制mock还是失败后mock,关于mock这里先不详细展开,这里只看下核心流程。
MockClusterInvoker.invoke会调用FailfastClusterInvoker.invoke,大系统中为了服务高可用同一个服务一般会有多个应用服务器提供,要先挑选一个提供者提供服务。在服务接口消费者初始化时,接口方法和提供者Invoker对应关系保存在RegistryDirectory的methodInvokerMap中,通过调用的方法名称(或方法名称+第一个参数)改方法对应的提供者invoker列表,如注册中心设置了路由规则,对这些invoker根据路由规则进行过滤。
com.alibaba.bbo.registry.integration.RegistryDirectory.doList(Invocation)

这里的sent参数决定是否等待请求消息发出,sent=true 等待消息发出,消息发送失败将抛出异常,sent=false 不等待消息发出,将消息放入IO队列,即刻返回。默认情况下都是false。NettyChannel中有channel属性,这个channel是Netty框架中的组件,负责客户端和服务端链路上的消息传递,channel.write把请求消息写入,这里的message是上面封装的Request对象。这里的IO模型是非阻塞的,线程不用同步等待所有消息写完,而是直接返回。调用Netty框架的IO事件之后会触发Netty框架的IO事件处理链。

㈤ 如何在controller里调用别人的bbo接口

直连加不发布服务DUBBO的配置属性里面对消费端提供了不从注册中心发现服务的机制,直接配置远程接口的地址,这样可以保证消费端连接到制定的环境接口。这样消费端是解决了问题,但是服务提供端呢?如上图的B1它即是消费端也是服务提供端,它提供A1所依赖的接口,那么如果B1将它的服务发布到注册中心里面(这里需要提醒,STABLE环境机制里面所有子环境公用一个注册中心),那么势必会导致stable环境里面的A会发现B1提供的服务?势必会导致stable环境的不稳定(stable环境的机制是stable环境只能进不能出,就是不能调用外部其他子环境的服务)?所以B1不能发布服务到注册中心,bbo也提供了相关的配置属性来支持这一点。下面我例举出通过哪些配置可以实现这种方案:服务消费端:DUBBO在消费端提供了一个url的属性来指定某个服务端的地址默认的方式是从注册中心发现接口为com.alibaba.bbo.demo.HelloWorldService的服务,但是如果需要直连,可以在bbo.properties下面配置bbo.reference.helloWorldService.url=bbo://ip:port/com.alibaba.bbo.demo.HelloWorldService可以通过配置bbo.reference.url=bbo://ip:port/来让某个消费者系统的服务都指向制定的服务器地址(关于配置信息可以参考《DUBBO配置规则详解》)

㈥ bbo 服务器之间通过什么来调用

原理:首先有个服务器,提供注册服务,称之为注册中心。
服务提供方连接注册中心,将对应的服务配置到注册中心中。
服务消费方连接到注册中心,通过注册中心,调用服务提供方提供的方法或服务。

㈦ bbo 远程调用service接口方法必须要写一份服务端service接口代码才能注入吗

Dubbo的Filter是一个调用另一个的,最后再执行业务代码。 在这一行调下一个Filter,那么写在这行代码前面的代码就是在业务代码前拦截了,写在之后的代码就是执行完业务代码后拦截了。

㈧ 如何通过bbo接口调用别人的服务,找不到服务

直连加不发布服务
DUBBO的配置属性里面对消费端提供了不从注册中心发现服务的机制,直接配置远程接口的地址,这样可以保证消费端连接到制定的环境接口。这样消费端是解决了问题,但是服务提供端呢?如上图的B1它即是消费端也是服务提供端,它提供A1所依赖的接口,那么如果B1将它的服务发布到注册中心里面(这里需要提醒,STABLE环境机制里面所有子环境公用一个注册中心),那么势必会导致stable环境里面的A会发现B1提供的服务?势必会导致stable环境的不稳定(stable环境的机制是stable环境只能进不能出,就是不能调用外部其他子环境的服务)?所以B1不能发布服务到注册中心,bbo也提供了相关的配置属性来支持这一点。下面我例举出通过哪些配置可以实现这种方案:
服务消费端:
DUBBO在消费端提供了一个url的属性来指定某个服务端的地址
<!--lang:xml-->
<bbo:reference interface="com.alibaba.bbo.demo.HelloWorldService" check="false" id="helloWorldService"/>

默认的方式是从注册中心发现接口为com.alibaba.bbo.demo.HelloWorldService的服务,但是如果需要直连,可以在bbo.properties下面配置bbo.reference.helloWorldService.url=bbo://ip:port/com.alibaba.bbo.demo.HelloWorldService可以通过配置bbo.reference.url=bbo://ip:port/来让某个消费者系统的服务都指向制定的服务器地址(关于配置信息可以参考《DUBBO配置规则详解》)

㈨ bbo框架 怎么发布到linux服务器

DUBBO的介绍部分我这里就不介绍了,大家可参考官方文档。DUBBO的注册中心安装
DUBBO的注册中心支持好几种,公司用到zookeeper注册中心,所以我这边只说明zookeeper注册中心如何安装。
安装zookeeper注册中心首先得下载zookeeper。大家可到zookeeper的官网

阅读全文

与dubbo如何指向一个服务器相关的资料

热点内容
java线程内存溢出 浏览:185
cad显示顺序的命令 浏览:189
飞度pdf 浏览:177
聚尚美app在哪里 浏览:988
退出全局命令 浏览:648
node命令退出 浏览:817
我的世界怎么做有工会的服务器 浏览:384
程序员达到 浏览:81
万维网如何查看远程服务器账号 浏览:60
怎么报程序员培训班 浏览:959
怎么帮男朋友解压缓解焦虑 浏览:568
java程序员用什么浏览器 浏览:786
禅诗pdf 浏览:629
cprimer英文pdf 浏览:241
两位数乘以两位数的减编算法 浏览:461
选了程序员有错吗 浏览:490
起点app怎么加密 浏览:104
安卓如何设计界面 浏览:878
工商银行app如何查询历史账单 浏览:45
火鸟门户源码版多少钱 浏览:277