了解dubbo和dubbo的配置

原创
04/15 17:06
阅读数 486

dubbo官网地址: http://dubbo.apache.org/zh-cn/

官网什么都有

Dubbo的简介:

分布式服务架构,致力于提供高性能和透明化的RPC远程服务调用方式,以及SOA服务治理方案。简单的说,dubbo就是个远程调用分布式框架,告别web service模式中的wsdl,以服务者提供方和服务消费者的方式在dubbo上注册。

其核心部分包含:

1.远程通讯:提供多种基于长连接的NIO框架抽象封装,包括多线程模型、序列化、以及“请求-响应”的信息交换方式。

2.集群容错:提供基于接口方法的远程透明过程调用,包括多协议支持,以及负载均衡,失败容器、地址路由,动态配置等集群支持。

3.自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明、使服务提供方可以平滑增加和减少机器

Dubbo能做什么?

1.透明化的远程方法调用,就像调用服务本身的service方法一样远程调用其他服务的方法,只需简单配置,没有任何api的侵入。

2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。

3.服务自动注册与发现,不再需要写死服务提供方的地址,注册中心基于接口名查询服务提供者的ip地址,可以使服务提供者平滑的增加,减少机器。

4.dubbo才用全spring配置方式,透明化接入应用,对应用没有任何api侵入,只需用spring加载dubbo配置即可,dubbo等于spring的schema扩展进行加载。

Dubbo架构设计图

连通性

1.注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小

2. 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示

3. 服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销

4. 服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销

5. 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外。

6. 注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者。

7. 注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表。

8. 注册中心和监控中心都是可选的,服务消费者可以直连服务提供。

健壮性

1.监控中心宕掉不影响使用,只是丢失部分采样数据

2. 数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务

3. 注册中心对等集群,任意一台宕掉后,将自动切换到另一台

4. 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯

5. 服务提供者无状态,任意一台宕掉后,不影响使用

6. 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

伸缩性

1.注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心

2. 服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者

升级性

当服务集群规模进一步扩大,带动IT治理结构进一步升级,需要实现动态部署,进行流动计算,现有分布式服务架构不会带来阻力。下图是未来可能的一种架构:

Dubbo的配置

Dubbo有四种配置方式:基于xml,基于api,基于属性配置,基于注解配置。

基于xml配置

dubbo基于xml的配置,可以很好的被spring当做schema文件扩展,因为dubbo有服务提供者和服务消费者两种角色,所以它的配置也区分服务提供者和服务消费者。此种方式引入dubbo,不会涉及到api的侵入。

provider.xml 示例

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    <dubbo:application name="demo-provider"/>
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <dubbo:protocol name="dubbo" port="20890"/>
    <bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/>
    <dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>
</beans>

consumer.xml示例

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    <dubbo:application name="demo-consumer"/>
    <dubbo:registry group="aaa" address="zookeeper://127.0.0.1:2181"/>
    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.basic.api.DemoService"/>
</beans>

所有标签都支持自定义参数,用于不同扩展点实现的特殊配置,如:

<dubbo:protocol name="jms">
    <dubbo:parameter key="queue" value="your_queue" />
</dubbo:protocol>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">  
    <dubbo:protocol name="jms" p:queue="your_queue" />  
</beans>

配置之间的关系

   

不同粒度配置的覆盖关系

  1. 2.1.0 开始支持,注意声明:xmlns:p="http://www.springframework.org/schema/p" ↩︎

  2. 引用缺省是延迟初始化的,只有引用被注入到其它 Bean,或被 getBean() 获取,才会初始化。如果需要饥饿加载,即没有人引用也立即生成动态代理,可以配置:<dubbo:reference ... init="true" /> ↩︎

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部