java微服务学习记录Nacos

动态配置服务:动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

服务发现及管理:动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。

动态DNS服务:通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。

服务及其元数据管理:Nacos能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA以及最首要的metrics 统计数据。
 

Nacos配置负载均衡

yml中配置:

#userservice: # 给需要调用的微服务配置负载均衡规则,orderservice服务去调用userservice服务
#  ribbon:
#    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则

启动器类中配置

    @Bean
    public IRule iRule(){
        //默认为轮询规则,这里自定义为轮询规则
        return new RoundRobinRule();
    }

关于Nacos控制台

可以设置服务的权重值在0-1之间

 权重控制

同个集群内的实例,权重越高被访问的频率越高

权重设置为0则完全不会访问

######平滑升级服务######

可以先将单个服务权重调低至0,然后停止服务进行服务更新,重启服务后给到低权重放入用户进行测试是否有问题.

环境隔离

是由namespace来做的

每一个namespace都有一个自己唯一的id

不同的namespace下的实例服务不可见

  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        cluster-name: HZ
        ephemeral: false
        namespace: 385f44ed-fcea-4f8a-945b-516685f44e23 # 命名空间ID

1. Nacos与eureka的共同点

①都支持服务注册和服务拉取

②都支持服务提供者心跳方式做健康检测

2. Nacos与Eureka的区别

①Nacos支持服务端主动检测提供者状态:临时实例采 用心跳模式,非临时实例采用主动检测模式② 临时实例心跳不正常会被剔除,非临时实例则不会被剔除

③Nacos支持服务列表变更的消息推送模式,服务列表 更新更及时

④Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

Nacos配置管理

 Data ID为配置文件的名字一般服务名称+开发环境.ymal

Nacos微服务拉取

先要让项目启动时候优先读取nacos的地址所以要创建一个优先级比application.yml更高的配置文件bootstrap.yml

第一步先导入依赖

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

第二步创建bootstrap.yml配置文件

spring:
  application:
    name: userservice #文件名
  profiles:
    active: dev #环境
  cloud:
    nacos:
      server-addr: localhost:8848
      config:
        file-extension: yaml #后缀
      discovery:
        cluster-name: HZ
# 配置组成:userservice-dev.yaml

检测是否能成功获取配置文件进行测试

在web的controller中

@Value("${pattern.dateformat}")
    private String dateformat;
    @GetMapping("now")
    public String now(){
        //格式化时间
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }

然后访问  http://localhost:8081/user/now获得返回结果

配置热更新

第一种方式

在@value注解所在的类上加上@RefreshScope

第二种方式

新建一个config包类patternproperties类

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

然后在controller层调用config类

先注入

    @Autowired
    private PatternProperties patternProperties;

再调用格式化

    @GetMapping("now2")
    public String now2(){
        //格式化时间
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.dateformat));
    }

注意

不是所有的配置都适合放到配置中心,维护起来比较麻烦
建议将一些关键参数,需要运行时调整的参数放到nacos配
置中心,一般都是自定义配置

Nacos的多环境配置共享

先配置Nacos的配置

 然后idea中注入

在web层调用

 

 更改一个userservice的配置dev改成test让原本的获取不到dataformat

然后进行测试

 

服务配置的优先级

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值