您的位置:首页 > 房产 > 家装 > 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十三)- 微服务(3)

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十三)- 微服务(3)

2024/10/6 16:22:24 来源:https://blog.csdn.net/qq_64663346/article/details/139294334  浏览:    关键词:山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十三)- 微服务(3)

6. Eureka 和 Nacos 对比

共同点 :

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

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

不同点 :

1.nacos支持服务端主动检测提供者状态,临时实例采用心跳模式,非临时实例采用主动检测模式

  1. 临时实例心跳不正常会被剔除,非临时实例则不会被剔除

  2. nacos支持服务列表变更的消息推送模式,服务列表更新及时

  3. nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式 Eureka默认采用AP

  4. nacos临时实例一旦关闭服务后就会被剔除,非临时的不会

配置为非临时实例 :

order-service 的 yml文件中 :

  cloud:nacos:server-addr: localhost:8848    # nacos服务地址discovery:cluster-name: HZ  # 集群名称   HZ代指杭州namespace: 9d2976a6-9560-46b7-a680-260801971b01   #   命名空间的idephemeral: false   # 是否为临时实例

order-service因为设置为了非临时实例所以会一直存在并且不会被剔除

7. Nacos配置管理

7.1 统一配置管理

新建配置 :

Data ID 一般是 服务名称-profile.后缀名

7.2 微服务配置读取

bootstrap.yml优先级高于application.yml

引入Nacos的配置管理依赖

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

resources目录下新建bootstrap.yml

  spring:application:name: userserviceprofiles:active: dev       #   环境cloud:nacos:server-addr: localhost:8848         # nacos地址config:file-extension: yaml          # 拼接的文件后缀名

在nacos中找配置文件最后是拼接application下的name 和 profiles下的active的环境 以及 file-extension 的后缀名 : userservice-dev.yaml

测试 :

  @Value("${pattern.dataform}")private String dataformat;​@GetMapping("/now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dataformat));}

7.3 配置热更新

配置自动更新 :

方法一 : 在用上了配置的类上加上@RefreshScope注解

  @Slf4j@RestController@RequestMapping("/user")@RefreshScope

方法二 : 新建配置类

  @Data@ConfigurationProperties(prefix = "pattern")@Componentpublic class PatternProperties {private String dataform;}

在usercontroller中

  @Autowiredprivate PatternProperties properties;​@GetMapping("/now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDataform()));}

7.4 微服务配置共享

配置的优先级 :

服务名-profile.yaml > 服务名.yaml > 本地配置

如user-service服务中 : userservice-dev.yaml > userservice.yaml > application.yml

7.5学成在线的配置文件案例

  #微服务配置spring:application:name: content-apicloud:nacos:server-addr: localhost:8848# discovery是把该服务注册到nacosdiscovery:# 注册到指定的命名空间namespace: 61954b13-8e66-4b83-abaf-c673a8525f39# 注册时的分组group: xuecheng-plus-project# config是配置文件管理config:file-extension: yaml          # 文件后缀名namespace: 61954b13-8e66-4b83-abaf-c673a8525f39group: xuecheng-plus-project# extension-configs是直接依赖某个配置文件,如下是直接依赖了content-service-dev.yaml中的内容extension-configs:- data-id: content-service-dev.yamlgroup: xuecheng-plus-projectrefresh: true# shared-configs:是读取一些公共配置文件shared-configs:- data-id: swagger-dev.yamlgroup: xuecheng-plus-commonrefresh: true- data-id: logging-dev.yamlgroup: xuecheng-plus-commonrefresh: true# profile指定环境profiles:active: dev

最终该模块会读取的文件有 :

  1. 自身的application的name 组合profiles的active 再组合 file-extension形成的content-api-dev.yaml文件

  2. 依赖的content-service-dev.yaml文件

  3. 公共配置文件 swagger-dev.yaml , logging-dev.yaml

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com