nacos

Nacos注册中心与配置中心

nacos官方文档
Nacos 有三大主要功能:

  • 服务发现和服务健康监测
    Nacos 提供对服务的实时健康监测,阻止向不健康的主机或服务实例发送请求。
  • 动态配置管理
  • 动态 DNS 服务
    服务发现的未来一定是基于标准的 DNS 协议,而不是像 Eureka 或者像 ZooKeeper 这样的私有 API 或者协议, 同时在云上,在服务发现场景中,注册中心更关注的是可用性而不是数据一致性

除了对于阿里开源生态体系如 Dubbo 等自身的支持,Nacos 也非常强调融入其它的开源生态,包括 Java 的微服务生态体系 Spring Cloud,Kubernetes云原生生态体系。Nacos 无缝支持 Spring Cloud,为 Spring Cloud 用户其提供更简便的配置中心和注册中心的解决方案。

未来会有越来越多 java 生态的用户会选择 Kubernetes+Spring Cloud 组合,但不幸的是,在服务发现和配置管理的解决方案上,这 2 个体系都采用了完全不同的方案,这给同时采用 2 个体系的用户在注册中心和配置中心的需求上带来了非常大的不必要的复杂性。

nocos优点与缺点

Nacos 极易上手,几乎免安装,只需要简单的解压包(建议用1.0以上版本),启动服务即可。
Spring Cloud支持使用Eureka、Zookeeper、Consul实现服务发现的能力。Eureka 是其默认的也是推荐的服务注册中心组件。但从Eureka切换成Zookeeper、consul只需要改个依赖,加两行配置就可以了。

辟谣

  • Eureka没有闭源,是Eurkea 2.x分支不再维护!
  • Spring Cloud并不强依赖Eureka,不要过分解读

nacos依赖

<!-- Dubbo Nacos registry dependency -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo-registry-nacos</artifactId>
        <version>0.0.1</version>
    </dependency>   
    
    <!-- Dubbo dependency -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.6.5</version>
    </dependency>
    
    <!-- Alibaba Spring Context extension -->
    <dependency>
        <groupId>com.alibaba.spring</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>1.0.2</version>
    </dependency>

xml方式配置provider和consumer时只需将

<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
或<dubbo:registry  address="zookeeper://127.0.0.1:2181" />
<!-- 使用 Nacos 注册中心 -->
<dubbo:registry address="nacos://127.0.0.1:8848"/>

启动docker镜像

docker search nacos
docker pull nacos/nacos-server
//单机方式启动
docker run --name nacos-standalone -e MODE=standalone -p 8848:8848 nacos/nacos-server:latest

测试

http://192.168.99.100:8848/nacos

linux/windows下单机启动

修改配置项conf/application.properties

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow

nohup sh startup.sh -m standalone &
startup.cmd -m standalone

应用启动个报错

    java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([127.0.0.1:8848]) tried

本地应用启动时报错,说明不是单机启动

nacos如何修改用户名密码

默认情况下用户名密码为:nacos/nacos
生产使用:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>
public static void main(String[] args) {
    //每次执行生成密文不同
    System.out.println(new BCryptPasswordEncoder().encode("nacos123"));
}

分别在usersroles增加一条记录


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐