美文网首页
Nacos服务发现和配置管理

Nacos服务发现和配置管理

作者: 公子请留步LookMe | 来源:发表于2022-01-10 11:20 被阅读0次

    服务发现:

     就是把所有的服务都暴露给服务注册中心, 可以通过服务方调用其他服务
    LoadBalencerCliet获取服务注册中心的实例实现负载均衡,则消费方通过RestTemplate调用提供方的接口(从LoadBalencerCliet实例中获取对应的ip和端口)
    

    服务发现之RestFul:

    客户端RestFul协议调用->消费者调用(application)->提供者

    package com.itheima.nacos.consumer.controller;
    
    import com.itheima.microservice.service1.api.Service1Api;
    import com.itheima.microservice.service2.api.Service2Api;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.client.ServiceInstance;
    import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    import java.net.URI;
    
    /**
     * @author Administrator
     * @version 1.0
     **/
    @RestController
    public class RestConsumerController {
    
        //要进行远程,需要知识提供方的ip和端口
        @Value("${provider.address}")
        private String provider;
    
        //@GetMapping(value = "/service")
        public String service(){
            //远程调用
            RestTemplate restTemplate = new RestTemplate();
    
            String result = restTemplate.getForObject("http://" + provider + "/service", String.class);
            return "consumer invode|"+result;
        }
    
        //指定服务名
        String serviceId = "nacos-restful-provider";
    
        //通过负载均衡发现地址,流程是从服务发现中心拿nacos-restful-provider服务的列表,通过负载均衡算法获取一个地址
        @Autowired
        LoadBalancerClient loadBalancerClient;
        @org.apache.dubbo.config.annotation.Reference
        private Service2Api service2Api;
        @org.apache.dubbo.config.annotation.Reference
        private Service1Api service1Api;
    
        @GetMapping(value = "/service1")
        public String service1(){
            //远程调用
            RestTemplate restTemplate = new RestTemplate();
            ServiceInstance serviceInstance = loadBalancerClient.choose(serviceId);
            //获取一个http://开头的地址,包括ip和端口
            URI uri = serviceInstance.getUri();
            String result = restTemplate.getForObject(uri + "/service", String.class);
            return "consumer invode|"+result;
        }
        @GetMapping(value = "/service2")
        public String service2(){
            //远程调用service2
            String dubboService2 = service2Api.dubboService2();
    
            return "consumer dubbo invode|"+dubboService2;
        }
        @GetMapping(value = "/service3")
        public String service3(){
            String dubboService1 = service1Api.dubboService1();
            return "consumer dubbo invode"+dubboService1;
        }
    
    }
    
    

    服务发现之dubbo:

    application调用->服务A调用->服务B
    application调用->服务A
    application调用->服务B

    服务发现数据模型

    Namespace(命名空间) service(命名服务)cluster(集群)
    namespace: 服务发现id

    Feign

    对RestTemplate进行封装,

    配置管理:

    相关文章

      网友评论

          本文标题:Nacos服务发现和配置管理

          本文链接:https://www.haomeiwen.com/subject/spsbfrtx.html