springcloud 使用 nacos作为注册中心和配置中心

1. nacos下载,解压,启动。下载地址: 官网

2.springcloud项目 pom文件:

    

        <!--nacos依赖-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-discovery-spring-boot-starter</artifactId>
            <version>0.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.2.2.RELEASE</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>0.2.2.RELEASE</version>
        </dependency>

3.yml文件配置:

   

server:
  port: 8080
spring:
  application:
    name: demo
  cloud:
    nacos:
      ##使用nacos的配置中心
      config:
        server-addr: localhost:8848
        file-extension: yaml
      ##以项目名称作为服务名注册
      discovery:
        server-addr: localhost:8848
        service: ${spring.application.name}

nacos配置中心格式和项目中yml配置格式一样。 

 

4.启动类添加 :

@RefreshScope  自动刷新配置
@EnableDiscoveryClient  开启注册

 5.

可以使用默认分组,也可以创建自己的命名空间,yml配置命名空间。

6. 

7.服务间调用:

@Configuration
public class RibbonConfig {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean
    public IRule ribbonRule(){
        return new RandomRule();
    }

}

使用restTemplate调用,可以起到负载均衡效果。

@Autowired
private TestService testService;
restTemplate.getForObject("http://demo/get", String.class); 
第一个参数uri:http://服务名/方法,第二个参数,返回值类型。

也可以使用LoadBalancerClient

@Autowired
private LoadBalancerClient loadBalancerClient;
ServiceInstance serviceInstance = loadBalancerClient.choose("demo");
String uri = serviceInstance.getUri() + "/get";
 restTemplate.getForObject(uri, String.class); 

8.问题1:

springloud 如果集成zipkin,由于zipkin的链路追踪,nacos会将zipkin的地址作为一个服务访问,会一直检测zipkin服务,不影响但是会一直打堆栈,目前没有找到方法解决(解决方法,将zipkin的ip作为服务名添加到nacos能够解决,不知道会不会有为问题。), 如果大佬们有方法解决请告知,有偿

9.问题2:

如果调用不存在的服务,仍然会一直调用服务,报错,打堆栈,和ipkin错误一样 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值