Nacos的下载配置和启动 项目注册

1. 文件下载

https://github.com/alibaba/nacos/releases

2. 修改配置文件

Nacos 快速开始 | Nacos 官网

在2.2.0.1和2.2.1版本时,必须执行此变更,否则无法启动;其他版本为建议设置。

修改conf目录下的application.properties文件。

修改 nacos.core.auth.enabled=true

设置其中的nacos.core.auth.plugin.nacos.token.secret.key值,详情可查看鉴权-自定义密钥.

注意,文档中的默认值SecretKey012345678901234567890123456789012345678901234567890123456789VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=为公开默认值,可用于临时测试,实际使用时请务必更换为自定义的其他有效值。

 sh startup.sh -m standalone

3. 服务注册 流程代码

pom 依赖

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2022.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2022.0.0.0-RC2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    # 新版调用方需要添加
    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
</dependencies>

yml 配置 修改

spring:
  # 微服务名称
  application:
    name: depart-consumer
  # nacos 注册中心地址
  cloud:
    nacos:
      server-addr: 192.168.244.128:8848
      username: nacos
      password: nacos

调用方添加负载均衡

@Configuration
public class DepartConfig {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}


<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

4. 程序中获取 服务实例信息

    @Autowired
    private DiscoveryClient discoveryClient;

    @GetMapping("/discovery")
    public List<String> discovery() {
        // 服务
        List<String> services = discoveryClient.getServices();
        for (String serviceName : services) {
            // 服务所有实例
            List<ServiceInstance> instances = discoveryClient.getInstances(serviceName);
            for (ServiceInstance instance : instances) {
                Map<String,Object> map = new HashMap<>();
                map.put("serviceName", serviceName);
                map.put("serviceId", instance.getServiceId());
                map.put("serviceHost", instance.getHost());
                map.put("servicePort", instance.getPort());
                map.put("uri", instance.getUri());
                System.out.println(map);
            }
        }
        return services;
    }

{serviceHost=192.168.1.3, servicePort=8080, serviceName=depart-consumer, serviceId=depart-consumer, uri=http://192.168.1.3:8080}
{serviceHost=192.168.1.3, servicePort=8081, serviceName=depart-provider, serviceId=depart-provider, uri=http://192.168.1.3:8081}

5. 数据库持久化

nacos 配置文件修改

spring.datasource.platform=mysql
db.num=1

### Connect URL of DB:
# db.url.0=jdbc:mysql://http://192.168.244.128/:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# db.user.0=root
# db.password.0=xxxx

6. 集群部署

在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip

(请配置3个或3个以上节点)

# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848

多个文件配置 修改端口号

开启默认鉴权插件(可选)

之后修改conf目录下的application.properties文件。

设置其中

nacos.core.auth.enabled=true
nacos.core.auth.system.type=nacos
nacos.core.auth.plugin.nacos.token.secret.key=${自定义,保证所有节点一致}
nacos.core.auth.server.identity.key=${自定义,保证所有节点一致}
nacos.core.auth.server.identity.value=${自定义,保证所有节点一致}

上述内容详情可查看权限认证.

注意,文档中的默认值SecretKey012345678901234567890123456789012345678901234567890123456789VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=为公开默认值,可用于临时测试,实际使用时请务必更换为自定义的其他有效值。

各个服务启动

最后修改yml配置文件

server-addr: 192.168.244.128:8849,192.168.244.128:8851,192.168.244.128:8853
spring:
  # 微服务名称
  application:
    name: depart-consumer
  # nacos 注册中心地址
  cloud:
    nacos:
      # server-addr: 192.168.244.128:8848
      server-addr: 192.168.244.128:8849,192.168.244.128:8851,192.168.244.128:8853
      username: nacos
      password: nacos

常见面试题

1. 注册表缓存

Nacos宕机 消费者还是能调用提供者 。 发生调用时会缓存注册表到本地

2. 临时实例和持久实例

实例存储位置和健康检测机制不同

临时实例: 会注册到nacos内存, client主动想server上报健康状态,心跳间隔默认5s,15s未收到为不健康。30s内收到心跳,恢复健康,否则进行清除

持久实例: 直接持久化到磁盘,server主动去检测Client健康状态,20s一次,检测失败标记为不健康,不会清除

3. nacos集群数据一致性 CAP模式

默认AP,也支持CP

通过PUT请求修改

http://localhost:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP

4. Nacos数据模型、隔离服务

Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP。通过这个隔离服务

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值