zoukankan      html  css  js  c++  java
  • Spring Cloud Alibaba:Nacos服务注册

    安装(docker)

    docker pull nacos/nacos-server
    #备注:MODE=standalone 单机模式运行
    docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
    

    然后访问http://192.168.10.137:8848/nacos/,账号密码默认都是nacos

    服务注册

    引入nacos依赖

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    

    配置文件properties:

    server.port=9001
    spring.application.name=nacos-payment-provider
    spring.cloud.nacos.discovery.server-addr=192.168.10.137:8848
    management.endpoints.web.exposure.include=*
    

    主启动类,以及controller

    @SpringBootApplication
    @EnableDiscoveryClient
    public class PaymentMain9001 {
        public static void main(String[] args) {
            SpringApplication.run(PaymentMain9001.class,args);
        }
    }
    
    @RestController
    public class PaymentController {
        @Value("${server.port}")
        private String port;
    
        @GetMapping(value = "/payment/nacos/{id}")
        public String echo(@PathVariable Integer id) {
            return "Hello Nacos Discovery :id ="+id+":port="+port;
        }
    }
    

    启动后,打开nacos,发现服务已经注册进nacos:

    然后拷贝虚拟端口映射,点击copy configuration

    修改一些属性:

    然后Services中出现了刚才配置的一个服务,启动它

    观察nacos,同一个微服务名字下有两个实例。

    nacos负载均衡

    nacos默认是支持负载均衡的,其中依赖了Netflix-Ribbon包

    下面新建一个服务消费者
    配置文件

    server.port=83
    spring.application.name=nacos-order-consumer
    spring.cloud.nacos.discovery.server-addr=192.168.10.137:8848
    management.endpoints.web.exposure.include=*
    

    主启动类省略(需要导入open-feign依赖),controller和service接口如下:

    @RestController
    public class OrderController {
        @Value("${server.port}")
        private String port;
    
        @Autowired
        private PaymentService paymentService;
    
        @GetMapping(value = "/order/nacos/{id}")
        public String echo(@PathVariable Integer id) {
            return paymentService.getPaymentById(id);
        }
    }
    @Component
    @FeignClient("nacos-payment-provider")
    public interface PaymentService {
        @GetMapping("/payment/nacos/{id}")
        public String getPaymentById(@PathVariable("id") Integer id);
    }
    

    运行三个服务提供者以及一个服务消费者,发现三个服务提供者轮流提供服务,也证明了nacos默认支持负载均衡。

    服务注册中心对比


    nacos支持AP和CP模式的切换,C是所有节点在同一时间看到的数据是一致的,A是所有的请求都收到响应

    curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
    
  • 相关阅读:
    vue使用elementui合并table
    使用layui框架导出table表为excel
    vue使用elementui框架,导出table表格为excel格式
    前台传数据给后台的几种方式
    uni.app图片同比例缩放
    我的博客
    【C语言】取16进制的每一位
    SharePoint Solution 是如何部署的呢 ???
    无效的数据被用来用作更新列表项 Invalid data has been used to update the list item. The field you are trying to update may be read only.
    SharePoint 判断用户在文件夹上是否有权限的方法
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/13629969.html
Copyright © 2011-2022 走看看