前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Dubbo

作者头像
晚上没宵夜
发布2022-05-09 21:11:13
4830
发布2022-05-09 21:11:13
举报
文章被收录于专栏:Howl同学的学习笔记

正式步入分布式的学习了

1. Dubbo是什么

Dubbo是一个RPC框架,简单来说就是实现不同主机间的功能调用的框架,其中需要建立网络连接以及参数传递需要的序列化操作,这二者影响了RPC框架的速度,RPC介绍

From Dubbo文档

我们开发的架构发展:

  • 单一应用架构:站点流量小,只需一个所有功能都部署在一起的应用,此时关键用ORM框架可简化开发
  • 垂直应用架构:访问量增大,单一应用的集群部署带来的加速度减缓,此时关键将应用拆分成互不相干的几个应用独立部署到不同机器上,此时应用上了MVC框架
  • 分布式服务架构:垂直应用增多,应用之间存在交互,那么应将交互的核心业务抽取出来作为独立的服务形成服务中心,此时关键用提高业务复用及整合的分布式服务框架
  • 流动计算架构(SOA):服务越来越多,不同服务的访问压力和占有资源容易出现浪费,此时关键增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率(哪个服务压力大就对应就增加几台机器)

2. 架构流程

  1. RPC框架容器启动,然后初始化服务
  2. 提供者把服务注册到注册中心
  3. 消费者向注册中心订阅所需服务
  4. 若服务功能有所改变,那么会通过长连接推送给消费者
  5. 远程调用(同步的)
  6. 调用信息,调用时间会定时异步发给监控中心

3. 环境搭建

3.1 注册中心

官方推荐使用 ZooKeeper 来作为注册中心

3.2 监控中心

Dubbo的监控中心是前后端分离的,前端Vue,后端SpringBoot

具体可参考 官方文档部署

笔者在本地搭建全部环境,然后端口弄了一团糟,这里需要注意:

  • ZooKeeper启动占用2181,8080端口
  • 监控中心的后端SpringBoot默认也是8080,需要自行修改,比如:server.port=8088
  • 监控中心的前端Vue默认代理8080,自行修改vue.config.js,要和后端端口一致:target: ''http://localhost:8088/''

4. SpringBoot搭建Dubbo

使用注解和配置文件方式来配置

4.1 添加依赖、开启Dubbo注解

代码语言:javascript
复制
<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>
代码语言:javascript
复制
// 主应用函数上添加注解
@EnableDubbo
@SpringBootApplication
public class XXXXApplication {

    public static void main(String[] args) {
        SpringApplication.run(XXXXApplication.class, args);
    }
}

4.2 Provider

  • 编写接口及其实现类(举例一个两数之和)
代码语言:javascript
复制
@Service    // 向注册中心暴露服务,是Dubbo的注解
@Component  // IOC加入容器,别和@Service的业务层搞混
public class SumServiceImpl implements SumService {
    @Override
    public int sum(int a, int b) {
        return a+b;
    }
}
  • 配置文件properties
代码语言:javascript
复制
# 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

4.3 Consumer

  • 在需要远程调用的属性上加入@Reference注解,则会进行动态代理
代码语言:javascript
复制
@RestController
public class SumController {

    @Reference
    SumService sumService;

    @GetMapping("/")
    public String sum(Integer a,Integer b){
        return String.valueOf( sumService.sum(a,b) );
    }
}
  • 配置文件properties
代码语言:javascript
复制
# consumer的应用信息,用于计算依赖关系
dubbo.application.name=com.howl.dubbo.consumer

# 注册中心地址、协议
dubbo.registry.address=zookeeper://127.0.0.1:2181

注意: Consumer的接口全限定类名一定要和Provider的一致,否则Zookeeper里面路径不同,找不到提供者 Dubbo推荐将服务接口、服务模型、服务异常等均放在 API 包中,这样二者就实现共享

至此Dubbo的简单入门就完成了,下一篇会加入Dubbo的配置、高可用等笔记

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Dubbo是什么
  • 2. 架构流程
  • 3. 环境搭建
    • 3.1 注册中心
      • 3.2 监控中心
      • 4. SpringBoot搭建Dubbo
        • 4.1 添加依赖、开启Dubbo注解
          • 4.2 Provider
            • 4.3 Consumer
            相关产品与服务
            微服务引擎 TSE
            微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档