Nacos Ncos-Config Nacos集群和持久化配置

Nacos

nacos = naming configuration service

动态服务发现,配置管理服务平台,注册中心和配置中心的组合
Nacos= Eureka + config + Bus

启动Nacos 默认端口 localhost:8848/nacos 默认账号密码 nacos nacos

注意启动时 ⚠️ 默认集群启动 单机启动 -m standalone


Naocs

新建一个微服务9001

启动类不要忘了加上
@EnableDiscoveryClient
application.yml配置

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #注册进nacos

management:
  endpoints:
    web:
      exposure:
        include: '*' #开启监控端点

Controller

@RestController
@Slf4j
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;
    
    @GetMapping(value = "/payment/nacos/{id}")
    public String getServerPort(@PathVariable("id") Integer id
    )
    {
        return "nacos registry "+serverPort+"\t" + id;
    }
}

去注册中心发现注册成功

Nacos

克隆一个9001或者用虚拟端口映射

虚拟端口映射

虚拟端口映射

启动9002后打开注册中心

实例数变为2

Nacos

Nacos天生支持负载均衡
Nacos天生支持负载均衡

新建Consumer 83

application.yml

server:

  port: 83

spring:

  application:

    name: nacos-order-consumer

  cloud:

    nacos:

      discovery:

        server-addr: localhost:8848

#消费者将要访问的微服务名称(成功注册进nacos的微服务提供者)可写可不写

service-url:

  nacos-user-service: http://nacos-payment-provider

因为Nacos自带了Ribbon

@Configuration
public class ApplicationContextConfig
{
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();
    }
}

Controller

@RestController
@Slf4j
public class OrderNacosController
{
    @Resource
    private RestTemplate restTemplate;
    
    @Value("${service-url.nacos-user-service}")
    private  String serverURL;
    
    @GetMapping(value = "consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Integer id)
    {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }
}

启动83

Nacos

现在测试一下Nacos的轮询负载均衡
http://localhost:83/consumer/payment/nacos/1


Nacos-Config

新建cloudalibaba-config-nacos-client3377

bootstarp.yml

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos作为服务注册中心
      config:
        server-addr: localhost:8848 # nacos作为配置中心
        file-extension: yaml #指定yaml的格式配置

application.yml

spring:
  profiles:
    active: dev # 开发环境 测试 test 生产 prod


Controller

@RestController
@RefreshScope //支持nacos的动态刷新
public class ConfigClientController
{
    @Value("${}config.info")
    private String configInfo;
    
    @GetMapping(value = "/config/info")
    public String getConfigInfo()
    {
        return configInfo;
    }
}

官方文档

Nacos配置文件命名

公式


新建配置
Nacos-Config

命名空间
命名空间

解决多环境多项目管理
dev开发环境
test测试环境
Prod生产环境
保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件
一个大型分布式微服务 系统会有很多微服务子项目,
每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境….
对这些微服务配置进行管理

DataID方案

指定spring.profile.active和配置文件的DatalD来使不同环境下读取不同的配置
默认空间+默认分组+新建dev和test两个DatalD
新建dev配置DataID
新建test配置DataID

Nacos-Config

通过spring.profile.active属性就能进行多环境下配置文件的读取

spring:
  profiles:
    #active: dev # 开发环境 测试 test 生产 prod
    active: test

Group方案

通过Group实现环境区分 新建Group
在nacos图形界面控制台上面新建配置文件DatalD


bootstrap+ application

Namespace方案

新建dev/test的Namespace


回到服务管理-服务列表查看

按照域名配置填写 yml


Nacos集群和持久化配置

VIP可以理解为虚拟ip映射





Nacos默认自带嵌入式数据库derby

Nacos持久化

nacos\conf目录下的sql脚本 nacos-mysql.sql 执行脚本
修改Nacos的application.properties

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=你的root
db.password=你的mysql密码

Nacos集群配置
最少需要1个nginx+3个nacos注册中心+1个mysql
linux 服务器上nacos集群配置 cluster.conf
复制cluster.conf.example


修改cluster 注意只能写hostname
搬家了这个IP不是我了😊

编辑nacos的启动脚本startup.sh 使它能够接受不同的启动端口



配置Nginxs 做负载均衡

⚠️虚拟ip不行的话就用hostname
启动 3333 4444 5555 nacos

访问 nginx的1111端口
服务注册进集群

server:
  port: 9002

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        #换成Nginx的端口1111
         server-addr: 192.168.XXX.XXX:1111

management:
  endpoints:
    web:
      exposure:
        include: '*' #开启监控端点
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342