spring-cloud-alibaba Nacos配置启动

1. 为什么叫Nacos :

前四个字母分别是Naming 和 Configuration 的前两个字母,最后的s为Service。

Nacos 就是注册中心 + 配置中心的组合


  • Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。

  • Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。java项目www.fhadmin.org


    6937285ceb2b4f72304a59472b1d7990.webp

    在这里插入图片描述

安装并运行nacos

在docker上安装nacos

拉取nacos镜像:

docker pull nacos/nacos-server

运行nacos:

扫描二维码关注公众号,回复: 12962316 查看本文章
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

在浏览器输入:http://ip地址:8848/nacos/
账号和密码都是nacos。

3f4703e959622be0a1eadb692e4b9ba5.webp

在这里插入图片描述


38f59f4da5312d368440fa6dcdffbdb2.webp

在这里插入图片描述

Nacos作为服务注册中心演示

  1. 新建模块cloudalibaba-provider-payment9001
  2. pom
<dependencies>
    <!--SpringCloud Alibaba nacos-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
  1. yml
server:
  port: 9001


spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: 120.92.164.250:8848  #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址)


management:
  endpoints:
    web:
      exposure:
        include: '*'
  1. 主启动类
//java项目www.fhadmin.org
@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain9001 {

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

}
  1. 新建controller包,包下新建PaymentController
//java项目www.fhadmin.org
@RestController
public class PaymentController {

    @Value("${server.port}")
    private String serverPort;


    @GetMapping("/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id){
        return "nacos registry, serverPort: " + serverPort + "\t id: " + id;
    }

}
  1. 启动9001

2376a75508e41203cbfcffb21943f5f9.webp

在这里插入图片描述

消费者 (整合Feign)

  1. 新建 cloudalibaba-consumer-nacos-order83
  2. pom
<dependencies>
        <!--SpringCloud Alibaba nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 引用自己定义的api通用包,可以使用Payment支付Entity -->
        <dependency>
            <groupId>com.angenin.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- openfeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
  1. 建yml
server:
  port: 83


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 120.92.164.250:8848  #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址)


#消费者要访问的微服务名称(成功注册进nacos的服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider
  1. 主启动类
@EnableDiscoveryClient
@EnableFeignClients
@SpringBootApplication
public class OrderNacosMain83 {

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

}
  1. 新建 feign包 ,包下新增接口 PaymentFeignService
@Component
@FeignClient(value = "nacos-payment-provider")
public interface PaymentFeignService {

    @GetMapping("/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id);

}
  1. 新建controller
@RestController
public class OrderNacosController {

    @Resource
    private PaymentFeignService paymentFeignService;

    @GetMapping("/consumer/payment/feign/nacos/{id}")
    public String paymentInfo2(@PathVariable("id") Integer id){
        return paymentFeignService.getPayment(id);
    }

}
  1. 启动


    5c030ee36f8380fc59d20fca35907d37.webp


猜你喜欢

转载自blog.51cto.com/14622073/2675264