网关调用其他项目的方法(RPC实现)

165 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天,点击查看活动详情

网关业务逻辑

问题: 网关项目比较存粹,没有操作数据库的包,并且还要调用我们之前写过的代码?复制粘贴维护麻烦 理想:直接请求到其他项目的方法

怎么调用其他项目的方法?

复制代码和依赖,环境

  1. HTTP请求(提供接口,供其他项目调用)
  2. RPC
  3. 把公共的代码打个jar包,其他项目去引用

HTTP请求怎么调用

  1. 提供方提供一个接口(地址,请求方法,参数,返回值)
  2. 调用方使用HTTP Client之类的代码包去发送HTTP请求

RPC

作用

像调用本地方法一样去调用远程方法

优点

  1. 对开发者更透明,减少很多的沟通成本
  2. RPC向远程服务器发送请求时,未必使用HTTP协议,比如还可以使用TCP/IP,性能更高。(内部服务更实适用) 注意: 这里注册中心只提供信息,并不会帮助调用

Dubbo框架(RPC实现)

常见框架内GRPC,TRPC; 最好的学习方式:阅读官方文档 dubbo.incubator.apache.org/zh/docs3-v2…

两种使用方式:

  1. Spring Boot代码(注解+编程式):写Java接口,服务提供者和消费者都去引用这个接口 偏程导
  2. DL(接口调用语言):创建一个公共的接口定义文件,服务提供者和消费者读取这个文件。优点是跨语言,所有的框架都认识

底层是Triple协议: dubbo.incubator.apache.org/zh/docs3-v2…

使用nacos

整合Nacos注册中:Nacos | Apache Dubbo Nacos下载地址:Nacos 快速开始

Windows

我们找到nacos的bin目录下单机运行

启动命令(standalone代表着单机模式运行,非集群模式): startup.cmd -m standalone

添加依赖

这里的nacos版本应该是你自己拥有的版本

<dependency>  
    <groupId>org.apache.dubbo</groupId>  
    <artifactId>dubbo</artifactId>  
    <version>3.0.9</version>  
</dependency>  
<dependency>  
    <groupId>com.alibaba.nacos</groupId>  
    <artifactId>nacos-client</artifactId>  
    <version>2.1.2</version>  
</dependency>