SpringCloud Nacos + Ribbon 调用服务的实现方式(两种)

网友投稿 496 2022-08-22


SpringCloud Nacos + Ribbon 调用服务的实现方式(两种)

目录1.代码方式调用1.1创建服务提供者:Provider1.2创建服务调用者:Consumer2.注解方式调用注解实现原理分析总结

在 Nacos 中,服务调用主要是通过 RestTemplate + Ribbon 实现的,RestTemplate 是 Spring 提供的 Restful 请求实现类,而 Ribbon 是客户端负载均衡器,通过 Ribbon 可以获取服务实例的具体信息(IP 和端口号),之后再通过 RestTemplate 加服务实例的具体信息就可以完成一次服务调用了。

而 RestTemplate + Ribbon 调用服务的实现方式两种:通过代码的方式调用服务和通过注解方式调用服务。但两种实现方式的原理都是一样的:都是通过注册中心,将可用服务列表拉取到本地(客户端),再通过客户端负载均衡器得到某个服务器的具体信息,然后请求此服务器即可,如下图所示:

1.代码方式调用

通过代码的方式调用服务在实际工作中并不常用,主要是写法太麻烦,但了解它对于后面理解注解调用方式有很大的帮助,所以我们这里重点来看一下。服务调用需要有两个角色:一个是服务提供者(Provider),另一个是服务调用者(Consumer),接下来我们来创建一下这两个角色。

1.1 创建服务提供者:Provider

第一步:先创建一个 Spring Boot 项目(Spring Cloud 项目是基于 Spring Boot 创建的),添加 spring-web 和 nacos-discovery 依赖,具体依赖信息如下:

org.springframework.boot

spring-boot-starter-web

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

第二步:设置 Nacos 相关配置,在 application.yml 中添加以下配置:

spring:

application:

name: springcloud-nacos-provider # 项目名称(nacos 注册的服务名)

cloud:

nacos:

discovery:

username: nacos # nacos 登录用户名

password: nacos666 # nacos 密码

server-addr: 127.0.0.1:8848 # nacos 服务端地址

server:

port: 8081 # 项目启动端口号

第三步:添加服务方法,如下代码所示:

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication

@RestController

public class HttpProviderApplication {

publicepAtLuqdYb static void main(String[] args) {

SpringApplication.run(HttpProviderApplication.class, args);

}

/**

* 为客户端提供可调用的接口

*/

@RequestMapping("/call/{name}")

public String call(@PathVariable String name) {

return "I'm Provider. Received a message from: " + name;

}

}

然后使用相同的方法再创建 2 个服务提供者,最终对应的端口号分别为:

127.0.0.1:8081 127.0.0.1:8082 127.0.0.1:8083

这 3 个服务提供者分别打印的内容是“I'm Provider...”、“I'm Provider2...”、“I'm Provider3...”,如下图所示:

1.2 创建服务调用者:Consumer

本文的核心是服务调用者的实现代码,它的创建方式和服务提供者的创建方式类似。第一步:创建一个 Spring Boot 项目,添加 spring-web 和 nacos-discovery 依赖,具体依赖内容如下:

org.springframework.boot

spring-boot-starter-web

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:深入了解Java Synchronized锁升级过程
下一篇:mybatis报Query was Empty异常的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~