概念
Dubbo是一个分布式的远程服务调用框架
Dubbo服务调用关系
- 服务器容器负责启动,加载,运行服务提供者
- 服务提供者在启动时,向注册中心注册自己所提供的服务
- 服务消费者在启动时,向注册中心订阅自己所需要的服务
- 注册中心返回服务提供者地址列表给消费者,如果列表有变更(服务提供者下线或宕机,服务不可用),注册中心将基于长连接推送变更数据给消费者
- 服务消费者从提供列表中,基于均衡算法,选择一台提供者进行调用,如果调用失败,再选择其他一台
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
Dubbo各个节点角色
- Provider:暴露服务的服务提供方
- Consumer:调用远程服务的服务消费方
- Registry:服务注册与发现的注册中心
- Monitor:统计服务的调用次数和调用时间的监控中心
- Container:服务运行的容器
其他节点 - application:表示项目在分布式架构中的唯一名称
- protocol:服务发布的时候dubbo所依赖的协议(dubbo,Hessain,http等)
- service:具体发布的服务接口,interface是接口的包路径,ref是是配置的具体bean的的id
<!-- 当前项目的名称-->
<dubbo:application name="user" owner="user"/>
<!-- 服务注册地址 -->
<dubbo:registry address="zookeeper://localhost:2181" check="false" />
<!-- 当前服务所依赖的协议 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 服务发布的配置,需要暴露的服务接口 -->
<dubbo:service interface="com.market. UserService" ref="userService" />
<!-- Bean的定义 -->
<bean id="userService" class="com.market.UserServiceImpl"/>
<!-- 消费端配置区别 不需要配置地址 -->
<dubbo:reference id="provider" interface="com.market.userService" />