SpringCloudAlibaba项目之Nacos搭建及服务注册

SpringCloudAlibaba项目之Nacos搭建及服务注册

SpringCloudAlibaba随笔目录

一、SpringCloudAlibaba项目之父工程搭建

二、SpringCloudAlibaba项目之Nacos搭建及服务注册

三、SpringCloudAlibaba项目之生产者与消费者

四、SpringCloudAlibaba项目之Ribbon负载均衡

五、SpringCloudAlibaba项目之OpenFeign远程调用

六、SpringCloudAlibaba项目之

七、SpringCloudAlibaba项目之

 

SpringCloud项目之Nacos搭建及服务注册

1、Nacos简介

Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑

2、Nacos优势

常见的注册中心:

Eureka(原生,2.0遇到性能瓶颈,停止维护)
Zookeeper(支持,专业的独立产品。例如:dubbo)
Consul(原生,GO语言开发)
Nacos
相对于 Spring Cloud Eureka 来说,Nacos 更强大。

Nacos = Spring Cloud Eureka + Spring Cloud Config

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

>>NacosEurekaConsulCoreDNSZookeeper
一致性协议 CP+AP AP CP / CP
健康检查 TCP/HTTP/Mysql/Client Beat Client Beat TCP/HTTP/gRPC/Cmd / Client Beat
负载均衡 权重/DSL/metadata/CMDB Ribbon Fabio RR /
雪崩保护 支持 支持 不支持 不支持 不支持
自动注销实例 支持 支持 不支持 不支持 支持
访问协议 HTTP/DNS/UDP HTTP HTTP/DNS DNS TCP
监听支持 支持 支持 支持 不支持 支持
多数据中心 支持 支持 支持 不支持 不支持
跨注册中心 支持 不支持 支持 不支持 不支持
SpringCloud 支持 支持 支持 不支持 不支持
Dubbo集成 支持 不支持 不支持 不支持 支持
K8s集成 支持 不支持 支持 支持 不支持

3、Nacos安装(注册中心-服务端,使用SaaS,软件即服务)

nacos官网:https://nacos.io/zh-cn/index.html

下载地址:https://github.com/alibaba/nacos/releases

Linux:sh startup.sh
Windows:startup.cmd

根据对应版本关系,Nacos选择版本:2.0.3

演示系统为:windows

Nacos默认为集群模式(cluster),首先我们修改startup.cmd中模式为单机模式(standalone)

我们运行Nacos看看效果,

访问:http://127.0.0.1:8848/nacos,默认账号:nacos,密码:nacos,可以进入Nacos的服务管理页面:

 4、SpringCloud整合Nacos客户端(注册中心-客户端)

项目目录:

 

 父工程pom文件添加:

<modules>
       <module>service-nacos</module>
</modules>

service-nacos项目pom文件添加依赖:

<!-- springweb 启动依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- nacos 服务注册发现(客户端)依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

 application.properties

# 应用名称(nacos会将应用名称当作服务名称)
spring.application.name=service-nacos
# 应用服务 WEB 访问端口
server.port=8020
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
# Nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public

启动类

@SpringBootApplication
@EnableDiscoveryClient //从Spring Cloud Edgware开始,@EnableDiscoveryClient可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。
public class ServiceNacosApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceNacosApplication.class, args);
    }
}

订单服务接口:

/**
 * 订单服务
 */
@RestController
@RequestMapping("/order")
public class OrderController {

    /**
     * 下单
     * @return
     */
    @RequestMapping("/add")
    public String addOrder(){
        System.out.println("下单成功");

        return "订单服务";
    }
}

nacos注册成功效果图:

 

 

参考链接:https://www.jianshu.com/p/39ade28c150d