如何使用Nacos做注册中心

要解决的问题:假设我有两个服务,分别是服务service-edu(服务调用者)和服务service-vod(服务提供者),想在服务service-edu中调用服务service-vod的方法。

将服务在注册中心中注册

1.下载nacos并成功启动,进入登录页面进行登录。

注意用户名和密码都是nacos

2.点击服务管理下的服务列表,可以发现是空的

如何使用Nacos做注册中心_第1张图片
image.png

3.在这两个服务的父工程中引入服务注册依赖

如何使用Nacos做注册中心_第2张图片
项目结构图.png
        
         
             org.springframework.cloud
             spring-cloud-starter-alibaba-nacos-discovery
         

4.分别给服务service-edu和服务service-vod的配置文件application.properties中添加nacos服务地址

#nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

5.分别给服务service-edu和服务service-vod的启动类上添加注解,注册nacos

@EnableDiscoveryClient

如何使用Nacos做注册中心_第3张图片
启动类.png

启动服务service-edu和服务service-vod,刷新服务列表,会显示当前注册的所有服务,以及每个服务的集群数目、实例数、健康实例数。点击详情,我们还能看到每个服务具体的实例信息,如下图所示:
如何使用Nacos做注册中心_第4张图片
服务列表.png

服务调用者

Feign是SpringCloud中服务消费端的调用框架。
在SpringCloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。

1.在这两个服务的父工程中引入服务调用依赖


             org.springframework.cloud
             spring-cloud-starter-openfeign
         

2.创建一个接口,使用@FeignClient注解,调用服务提供者的方法


@FeignClient("service-vod")//service-vod就是在service-vod服务的配置文件中定义的服务名
@Component
public interface VodClient {


    /**
     * 定义要调用的方法路径
     * 根据视频id删除阿里云中的视频
     * @PathVariable("id")注解一定要指定参数名称,否则出错
     * @param id
     * @return
     */
    @DeleteMapping("/eduvod/video/removeAlyVideo/{id}")
    public R deleteVideoById(@PathVariable("id") String id);
}

3.在控制层调用service-vod服务的方法

注入刚刚创建的接口即可调用方法

 //注入vodClient
@Autowired
private VodClient vodClient;
    vodClient.deleteVideoById(videoId);

你可能感兴趣的:(如何使用Nacos做注册中心)