栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

04-Nacos服务注册中心最佳实践

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

04-Nacos服务注册中心最佳实践

Nacos注册中心简介
背景分析
Nacos概述 Nacos 快速开始
构建Nacos服务
准备工作

第一:确保你电脑已配置JAVA_HOME环境变量(Nacos启动时需要)

第二:确保你的MySQL版本为5.7以上(MariaDB10.5以上)
下载与安装

Releases · alibaba/nacos · GitHub


初始化配置

1.在命令行首先登录mysql,然后执行如下指令:

source d:/nacos-mysql.sql 

 第二步:打开/conf/application.properties里打开默认配置,并基于你当前环境配置要连接的数据库,连接数据库时使用的用户名和密码(假如前面有"#"要将其去掉):

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
服务启动与访问

命令:startup.cmd -m standalone

访问    http://localhost:8848/nacos


服务注册与调用入门(重点)

 其中,默认账号密码为nacos/nacos.


业务描述

创建两个项目Module分别为服务提供者和服务消费者,两者都要注册到NacosServer中(这个server本质上就是一个web服务,端口默认为8848),然后服务提供者可以为服务消费者提供远端调用服务(例如支付服务为服务提供方,订单服务为服务消费方),如图所示:


生产者服务创建及注册 编辑provider pom.xml

        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
    

第二步:创建并修改配置文件application.yml(或者application.properties),实现服务注册,关键代码如下:

server:
  port: 8081
spring:
  application:
    name: sca-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #假如你的服务在同一台电脑上,默认向本机的nacos进行注册,这个地址不用配置

第三步:创建启动类,并定义处理请求的控制层对象和方法,关键代码如下:

package com.cy;

@SpringBootApplication
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

    
    @RestController
    public class ProviderController{
        //@Value默认读取项目配置文件中配置的内容
        //8080为没有读到server.port的值时,给定的默认值
        @Value("${server.port:8080}")
        private String server;
        //http://localhost:8081/provider/echo/tedu
        @GetMapping("/provider/echo/{msg}")
        public String doRestEcho1(@PathVariable String msg){
            return server+" say hello "+msg;
        }
    }
  }

第四步:启动启动类,然后刷先nacos服务,检测是否服务注册成功,如图所示:

10秒健康之后不健康 30 秒之后为死亡


消费者服务发现及调用

第一步:创建服务消费者(module名为sca-consumer),继承parent工程(01-sca),其pom.xml文件内容如下:



    
        01-sca
        com.jt
        1.0-SNAPSHOT
    
    4.0.0
    sca-consumer
    
   
    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-discovery
    
    

第二步:修改配置文件application.yml,关键代码如下:

server:
  port: 8090
spring:
  application:
    name: sca-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #从哪里去查找服务

第三步:创建启动类并实现服务消费,关键代码如下:

package com.jt;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class,args);
    }
    //交给spring
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
    @RestController
    public class ConsumerController{

        @Value("${spring.application.name}")
        private String appName;
        @Autowired
        private RestTemplate restTemplate;
        @GetMapping("/consumer/doRestEcho1")
        public String doRestEcho01(){
            String url = "http://localhost:8081/provider/echo/"+appName;
            System.out.println("request url:"+url);
            return restTemplate.getForObject(url, String.class);//string。class//获取了提供方,提供方也需要调用启动类
            //创建restTemplate对象交给spring来传参数
        }
    }
}


小节面试分析
服务负载均衡设计及实现(重点)
入门案例
@LoadBalanced
Ribbon负载均衡策略(了解)
小节面试分析
基于Feign的远程服务调用(重点)
背景分析
Feign是什么
Feign应用实践(掌握)
Feign配置进阶实践
Feign 调用过程分析(了解)
小节面试分析
总结(Summary)
重难点分析
FAQ分析
Bug分析

 作业:

重新创建聚合项目

重新完成注册

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号