nacos

  • https://nacos.io/zh-cn/
  • https://github.com/alibaba/nacos/releases
  • https://nacos.io/zh-cn/docs/quick-start.html

1 nacos是什么

一个更易于构建云原生应用的动态服务发现、配置管理服务管理平台。

https://nacos.io/zh-cn/docs/what-is-nacos.html 

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

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

nacos_第1张图片


2 Docker部署单机版的nacos

https://hub.docker.com/r/nacos/nacos-server 

2.1 拉取镜像 

docker pull nacos/nacos-server:1.3.0

2.2 启动nacos

docker run \
--name nacos \
-p 8848:8848 \
-e MODE=standalone \
-d nacos/nacos-server:1.3.0

2.3 web界面访问

http://ip:8848/nacos

登录名/密码 默认是nacos

2.4 版本参考 

nacos_第2张图片


3 集成 spring cloud alibaba


    UTF-8
    UTF-8
    1.8
    
    2.2.0.RELEASE
    Hoxton.SR3
    2.2.0.RELEASE


    
        
        
            org.springframework.boot
            spring-boot-dependencies
            ${spring-boot.version}
            pom
            import
        
        
        
            org.springframework.cloud
            spring-cloud-dependencies
            ${spring-cloud.version}
            pom
            import
        
        
        
            com.alibaba.cloud
            spring-cloud-alibaba-dependencies
            ${spring-cloud-alibaba.version}
            pom
            import
        
    

4 使用nacos

4.1 引依赖

spring-boot-starter-{xxx}

{xxx}-spring-boot-starter

spring-cloud-starter-{spring cloud子项目的名称}-{模块名称}


    
    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-discovery
        2.2.0.RELEASE
    

 


    org.springframework.cloud
    spring-cloud-starter-alibaba-nacos-discovery
    0.2.2.RELEASE

4.2 加注解

nacos无需添加@EnableDiscoveryClient注解

//@EnableDiscoveryClient
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        new SpringApplicationBuilder(App.class)
                .web(WebApplicationType.SERVLET)
                .run(args);
    }
}

4.3 写配置

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 39.106.196.224:8848

2020-04-02 18:05:22.554  WARN 23064 --- [           main] o.s.c.a.n.registry.NacosServiceRegistry  : No service to register for nacos client...

未配置服务名称 (服务名称尽量用 -

spring:
  application:
    name: order-center

2020-04-02 18:10:38.489  INFO 12036 --- [           main] o.s.c.a.n.registry.NacosServiceRegistry  : nacos registry, order-center 192.168.56.1:9761 register finished


5 服务发现的领域模型

命名空间:用于实现隔离;开发环境、生产环境、测试环境;不同的命名空间是互相隔离的

  • Namespace : 实现隔离,默认public
  • Group : 不同服务可以分到一个组,默认DEFAULT_GROUP
  • Service : 微服务
  • Cluster : 对指定微服务的一个虚拟划分,默认DEFAULT
  • Instance : 微服务实例

nacos_第3张图片

在nacos控制台里面点击命名空间选择新建命名空间即可创建命名空间

nacos_第4张图片

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 39.106.196.224:8848
        namespace: d3c16b50-bdb0-4fb6-917d-9fc7a4d5ff04
        cluster-name: NJ

6 元数据

https://nacos.io/zh-cn/docs/concepts.html

Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种自定义标签 (label),从作用范围来看,分为服务级别的元信息、集群的元信息及实例的元信息。

元数据作用

  1. 提供描述信息
  2. 让微服务调用更加灵活

例如:微服务版本控制

  • 内容中心 v1 ---调用-->  用户中心 v1
  • 内容中心 v2 ---调用-->  用户中心 v2

nacos_第5张图片nacos_第6张图片

三种级别的元素据都可以在nacos控制台指定

spring:
  cloud:
    nacos:
      discovery:
        metadata:
          version: 1.5.0.RELEASE
          describe: 用户中心

 

***************************
APPLICATION FAILED TO START
***************************
Description:
The bean 'nacosServiceRegistry', defined in class path resource [org/springframework/cloud/alibaba/nacos/NacosDiscoveryAutoConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.class] and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

nacos/nacos-server: 1.1.4

spring-cloud-starter-alibaba-nacos-discovery: 2.2.0.RELEASE

报错原因:订单中心、用户中心同时引入了spring-cloud-starter-alibaba-nacos-discovery;订单中心依赖了用户中心;这个时候启动订单中心启动的时候就可能会报错;

解决方法:删除订单中心引入的依赖 spring-cloud-starter-alibaba-nacos-discovery

当遇到同样名字的时候,是否允许覆盖注册 

spring:
  main:
    allow-bean-definition-overriding: true

 

你可能感兴趣的:(Docker)