正式步入分布式的学习了
Dubbo是一个RPC框架,简单来说就是实现不同主机间的功能调用的框架,其中需要建立网络连接以及参数传递需要的序列化操作,这二者影响了RPC框架的速度,RPC介绍
From Dubbo文档
我们开发的架构发展:
官方推荐使用 ZooKeeper 来作为注册中心
Dubbo的监控中心是前后端分离的,前端Vue,后端SpringBoot
具体可参考 官方文档部署
笔者在本地搭建全部环境,然后端口弄了一团糟,这里需要注意:
使用注解和配置文件方式来配置
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!-- 操作Zookeeper的,starter里面没有自带,因为注册中心自己选择 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
// 主应用函数上添加注解
@EnableDubbo
@SpringBootApplication
public class XXXXApplication {
public static void main(String[] args) {
SpringApplication.run(XXXXApplication.class, args);
}
}
@Service // 向注册中心暴露服务,是Dubbo的注解
@Component // IOC加入容器,别和@Service的业务层搞混
public class SumServiceImpl implements SumService {
@Override
public int sum(int a, int b) {
return a+b;
}
}
# provider的应用名字,用于计算依赖关系
dubbo.application.name=com.howl.dubbo.provider
# 注册中心地址、通信协议
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.protocol=zookeeper
# 与消费者通信的协议、端口号
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
@RestController
public class SumController {
@Reference
SumService sumService;
@GetMapping("/")
public String sum(Integer a,Integer b){
return String.valueOf( sumService.sum(a,b) );
}
}
# consumer的应用信息,用于计算依赖关系
dubbo.application.name=com.howl.dubbo.consumer
# 注册中心地址、协议
dubbo.registry.address=zookeeper://127.0.0.1:2181
注意: Consumer的接口全限定类名一定要和Provider的一致,否则Zookeeper里面路径不同,找不到提供者 Dubbo推荐将服务接口、服务模型、服务异常等均放在 API 包中,这样二者就实现共享
至此Dubbo的简单入门就完成了,下一篇会加入Dubbo的配置、高可用等笔记