Nacos集群环境的搭建
参看《基于Docker搭建Nacos集群》:https://lupf.cn/articles/2020/05/21/1590058654840.html ;亦或者通过官方提供的其他方式安装,详情参考:https://nacos.io/zh-cn/docs/quick-start.html
Nacos作为配置中心
apollo配置中心
整理Nacos的服务治理,顺带着整理一下Nacos的配置中心;目前实际的生产使用的是Apollo;个人相比较更加喜欢Apollo一点,如果想了解Apollo的使用可参考:《SpringBoot集成Apollo配置中心(5分钟集成系列)》https://lupf.cn/articles/2019/11/19/1574169822114.html创建一个基础的SpringCloud项目,并添加一下配置
<properties>
Nacos配置
dataId,用于匹配nacos中对应的配置文件 : 默认规则
${spring.application.name}-${spring.profiles.active}.${file-extension}
如: nacos-provider-dev.yml ,如果没有环境区分就是nacos-provider.yml ;dataId允许根据自己的要求进行配置,具体如下# 规则: ${prefix}-${spring.profiles.active}-${spring.profiles.active}.${file-extension}
group: 用于对配置文件进行分组
Nacos配置文件的命名规则
添加nacos-provider.yml
server:
添加nacos-consumer.yml
server:
将启动文件application.yml修改为bootstrap.yml 并添加一下配置
spring:
启动项目
//
添加配置文件获取的工具类 RemoteConfig // @RefreshScope 为自动刷新配置
@Data
添加测试使用的NacosConfigController
@RestController
测试获取及自动刷新
127.0.
//
服务治理
RestFul API
provider就使用上面
echo/conf
接口作为测试接口添加命名空间
配置将服务发布到指定命名空间
spring:
provider和consumer添加配置文件
spring:
provider和consumer启动类添加以下注解
@EnableDiscoveryClient
consumer实例化RestTemplate
@LoadBalanced
测试RestFulController
@RestController
启动服务,nacos中可以看到如下的服务
测试
//127.0.0.1:9113/rest/conf
服务的命名空间 当不同的环境需要进行区分的时候,如开发环境、测试环境、正式环境;那么这些环境下的服务可能是有区别且不能穿插调用,因此我们就可以通过命名空间各个服务进行隔离;
整合feign的服务治理
nacos-api添加fiegn的请求及响应对象已经对应的service
@Data
provider和consumer模块添加api模块
<dependency>
provider和consumer添加以下注解,开启feign
"com.lupf.*")
provider实现FeignService
@Service
provider添加对外暴露的controller;注意,路径、参数需要和FeignService配置的路径一致
@RestController
consumer的调用FeignController
@RestController
测试
//127.0.0.1:9113/feign/hello
dubbo服务的治理
添加dubbo的引用
<spring-cloud-starter-dubbo.version>2.1.1.RELEASE
nacos的nacos-provider.yml和nacos-consumer.yml添加一下配置
dubbo:
dubbo.scan.base-packages 为你的包路径
provider添加Dubbo的具体实现
// 注意,这里的Service为:org.apache.dubbo.config.annotation.Service 不是Spring的service
consumer创建测试DubboController
@RestController
测试
//127.0.0.1:9113/dubbo/hello
sleuth链路追踪
引入sleuth依赖
<spring-cloud-starter-sleuth.version>2.1.0.RELEASE
请求测试
dubbo的链路追踪
添加一个dubbo zipkin的依赖
2.7.0之前的版本
<brave-instrumentation-dubbo-rpc.version>5.10.0
大于等于 2.7.0之前的版本
<brave-instrumentation-dubbo.version>5.10.0
Nacos常见问题
导致log4j2不打印日志日志的问题
错误描述
default ERROR-level Root logger
解决方式,启动类添加配置
public static void main(String[] args) {
Nacos频繁的心跳日志
服务频繁的心跳导致较多无效的日志输出
提升nacos的日志级别,使其不输出
logging.level.com.alibaba.nacos.client.naming=error