2021SC@SDUSC
dubbo介绍
dubbo是一个微服务的开发框架。
如果服务过多,就尽量不要把所有的服务都部署在同一台机器上,而是把服务拆分成不同的微服务,部署在不同的机器上,提高可用性。
因为不同的服务部署在了不同的机器上,而这些服务有可能需要相互通信,就有了RPC的概念。
RPC(Remote Procedure Call)即远程调用过程,实现像原来调用本机上的服务一样,调用不同机器上的远程服务。RPC有不同的实现方式。
而dubbo的两大核心能力,就是RPC通信和微服务治理。因此可用dubbo拆分服务,实现相互通信,同时还可利用dubbo的其他功能实现负载均衡,流量调度等。
dubbo的架构如下:
节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器
- 首先启动容器,加载运行服务提供者。
- 服务提供者向注册中心注册服务。
- 服务消费者启动,向注册中心订阅服务。
- 注册中心给消费者提供所需服务的地址列表
- 根据负载均衡算法,选择服务的一个提供者向消费者服务
- 监控器每隔一段时间接受服务的各项统计数据。
dubbo配置
dubbo提供api使用,不过一般都整合spring进行使用。
- 定义服务接口,如:
package org.apache.dubbo.demo;
public interface DemoService {
String sayHello(String name);
}
- 服务提供方实现接口
package org.apache.dubbo.demo.provider;
import org.apache.dubbo.demo.DemoService;
public class DemoServiceImpl implements DemoService {
public String sayHello(String name) {
return "Hello " + name;
}
}
- spring配置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://dubbo.apache.org/schema/dubbo"
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:application name="hello-world-app" />
<!-- 使用multicast广播注册中心暴露服务地址 -->
<dubbo:registry address="multicast://224.5.6.7:1234" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService" />
<!-- 和本地bean一样实现服务 -->
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl" />
</beans>