springcloud(五)、nacos作为注册中心(springcloud)

一、配置依赖和yml时遇到的问题

1、pom中有配置中心和注册中心时,需要bootstrap.yml文件,写入配置中心和注册中心配置。

参考博客:https://blog.csdn.net/qq_43659751/article/details/112617561
https://www.cnblogs.com/Lvzx233/p/14180867.html

2、遇到org.apache.catalina.LifecycleException: Protocol handler start failed错误。

因为端口被占用

二、跟eruka一样,使用ribbon作为负载均衡,使用Feign作为服务调用

采用Feign+Ribbon的整合方式,是由Feign完成远程调用的整个流程。而Feign集成了Ribbon,Feign使用Ribbon 完成调用实例的负载均衡。

三、Feignclient无法注入的问题

需要在启动类上加入:

@EnableFeignClients(basePackages = "你@FeignClient注解的类的路径")

四、搭建环境

查看 码云地址:https://gitee.com/liushanshan126/project 中nacos-register项目

五、ribbon

本地案例:多个服务提供者,除了端口号的不同,其他都一样,消费者调用服务者的时候,默认是轮询。

六、服务流量权重支持及流量保护

设置实例的权重
在这里插入图片描述

七、熔断器 hystrix (openfeign集成了hystrix)

feign: # 打开熔断器
  hystrix:
    enabled: true

异常类:

package com.bear.excep;

import com.bear.client.ProvideService;
import org.springframework.stereotype.Component;

/**
 * @author LiuShanshan
 * @version V1.0
 * @Description
 */
@Component
public class ExceptionExcep implements ProvideService{
    @Override
    public String provideGet() {
        System.out.println("调用服务失败,此地方进行处理");
        return null;
    }
}

@FientClient后面加上属性:

@FeignClient(value = "nacos-provide", fallback = ExceptionExcep.class)

八、@FeignClient属性的含义

参考博客:https://www.cnblogs.com/MrSi/p/14083773.html

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FeignClient {
    /**
     * 说明:
     * 1、value 与 name 互为别名,两者二选一即可
     * 2、当 contextId 没有值的时候,会默认获取(value/name)的值
     * 3、当未指定 url 请求地址的时候,最终会通过 ribbon-loadbalancer工具,从consul注册节点中选取 service-id 等于 value的服务作为请求地址
     * @return
     */
    @AliasFor("name")
    String value() default "";
    /**
     * 说明:
     * 1、serviceId 已经作废,其目的与 value一致。如果设置了 serviceId,则value/name 皆以 serviceId 为准
     */
    /** @deprecated */
    @Deprecated
    String serviceId() default "";
    /**
     * 说明:
     * 1、当 contextId 没有值的时候,会默认获取(value/name)的值
     * 2、当 qualifier 没有值的时候,会将 '${contextId}FeignClient'作为 feign 的bean组件别名
     */
    String contextId() default "";
    /**
     * 说明:同 value, 二选一
     */
    @AliasFor("value")
    String name() default "";
    /**
     * 说明:
     * 1、feign的bean组件别名,拥有最高优先级;
     * 2、当 qualifier 为空时,取 '${contextId}FeignClient' 作为 bean 的名称
     */
    String qualifier() default "";
    /**
     * 说明:
     * 1、设置 url 以后,后续发起http调用时,直接读取该地址作为请求目标;
     * 2、未设置 url 时,借助 ribbon-loadbalancer 组件,根据 (value/name)从consul的服务列表中选中service-id匹配的目标服务;
     */
    String url() default "";

    boolean decode404() default false;

    Class<?>[] configuration() default {};

    Class<?> fallback() default void.class;

    Class<?> fallbackFactory() default void.class;
    /**
     * 说明:
     * 目标服务器 对应的资源 uri (FeignClient下所有方法相同的path路径)
     */
    String path() default "";

    boolean primary() default true;
}
Spring Cloud可以使用Nacos作为注册中心。以下是使用Nacos作为注册中心的步骤: 1. 添加依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.1.RELEASE</version> </dependency> ``` 2. 配置Nacos地址 在application.properties文件中添加以下配置: ``` spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 ``` 其中,127.0.0.1:8848是Nacos的地址。 3. 服务提供者配置 如果要使用Nacos作为服务注册中心,需要在服务提供者的配置文件中添加以下配置: ``` spring.application.name=service-provider spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.register-enabled=true spring.cloud.nacos.discovery.port=8080 ``` 其中,service-provider是服务的名称,127.0.0.1:8848是Nacos的地址,8080是服务的端口号。 4. 服务消费者配置 如果要使用Nacos作为服务注册中心,需要在服务消费者的配置文件中添加以下配置: ``` spring.application.name=service-consumer spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.port=8080 ``` 其中,service-consumer是服务的名称,127.0.0.1:8848是Nacos的地址,8080是服务的端口号。 5. 启动服务 启动服务提供者和服务消费者,它们将自动注册到Nacos上。 6. 查看服务列表 在Nacos控制台中可以查看已注册的服务列表。可以通过以下URL访问控制台:http://127.0.0.1:8848/nacos。 以上就是使用Nacos作为注册中心的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值