分布式微服务2

目录

Nacos注册中心

下载

启动

快速入门

1.在父工程中添加spring-cloud-alilbaba的管理依赖子模块添加nacos的客户端依赖

 2.子模块添加nacos的客户端依赖

3.子模块配置文件 

4.启动

Nacos服务分级存储模型

集群配置

nacos的负载均衡

Nacos环境隔离

新建命名空间

Nacos配置管理

1.在nacos中添加配置文件

2.从微服务拉取配置

配置热更新

1.方式一

 2.方式二

配置共享

1.添加一个共享的配置

2.运行两个服务,会有不同的结果

搭建Nacos集群

 1.复制三份nacos,更改他们的配置文件

 2.然后修改application.properties文件,添加数据库配置

3.修改conf/nginx.conf文件


Nacos注册中心

下载

在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码

 Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。

更改端口:

 

启动

cd到nacos\bin目录下,执行 startup.cmd -m standalone

 Nacos 默认账号密码都是nacos

快速入门

1.在父工程中添加spring-cloud-alilbaba的管理依赖子模块添加nacos的客户端依赖

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  <version>2.2.6.RELEASE</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>

 2.子模块添加nacos的客户端依赖

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

3.子模块配置文件 

此时要注释掉Eureka注册中心的配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/order-service?useSSL=false
    username: root
     password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: localhost:8848 #nacos服务地址

 

4.启动

 去nacos的服务页查看

 

 

Nacos服务分级存储模型

 

 

集群配置

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

nacos的负载均衡

修改配置文件,加入负载均衡的配置信息

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 

 

NacosRule负载均衡策略

1.优先选择统同集群服务实例列表

2.本地集群找不到提供者,才会去其它集群寻找,并且会警告

3.确定了实例列表后,再采用随机负载均衡挑选实例

Nacos环境隔离

Nacos提供了namespace来实现环境隔离功能。

- nacos中可以有多个namespace

- namespace下可以有group、service等

- 不同namespace之间相互隔离,例如不同namespace的服务互相不可见

新建命名空间

 

 

 

修改配置文件,添加namespaces信息

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID

 

 

Nacos配置管理

1.在nacos中添加配置文件

 

 

2.从微服务拉取配置

微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动。

但如果尚未读取application.yml,又如何得知nacos地址呢?

因此spring引入了一种新的配置文件:bootstrap.yaml文件,会在application.yml之前被读取,流程如下:

引入依赖

<!--nacos配置管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

 添加bootstrap.yaml

spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: dev #开发环境,这里是dev 
  cloud:
    nacos:
      server-addr: localhost:8848 # Nacos地址
      config:
        file-extension: yaml # 文件后缀名

添加逻辑读取配置

 

配置热更新

 

我们最终的目的,是修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是**配置热更新**。

要实现配置热更新,可以使用两种方式:

1.方式一

在@Value注入的变量所在类上添加注解@RefreshScope:

 2.方式二

使用@ConfigurationProperties注解代替@Value注解。

在user-service服务中,添加一个类,读取patterrn.dateformat属性:

package com.tledu.user.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}

在UserController中使用这个类代替@Value:


import com.tledu.user.config.PatternProperties;
import com.tledu.user.pojo.User;
import com.tledu.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @Autowired
    private PatternProperties patternProperties;

    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));
    }


}

配置共享

1.添加一个共享的配置

 

 

2.运行两个服务,会有不同的结果

 

搭建Nacos集群

 1.复制三份nacos,更改他们的配置文件

 2.然后修改application.properties文件,添加数据库配置

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123

再分别修改他们的端口

3.修改conf/nginx.conf文件

下载nginx并解压

配置如下:

upstream nacos-cluster {
  server 127.0.0.1:8845;
  server 127.0.0.1:8846;
  server 127.0.0.1:8847;
}

server {
  listen       80;
  server_name  localhost;

  location /nacos {
    proxy_pass http://nacos-cluster;
  }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值