SpringCloud微服务项目集成Nacos

1、下载安装Nacos

nacos : http://ip:8848/nacos/index.html
默认用户名密码:nacos/nacos

2、项目集成Nacos

pom.xml添加依赖:



     com.alibaba.cloud
     spring-cloud-starter-alibaba-nacos-discovery

application.yml 添加配置:

server:
  port: 9000
​
# ip是自己的服务器ip
spring:
  application:
    name: video-service
  cloud:
    nacos:
      discovery:
        server-addr: ip:8848

启动类添加注解:

@EnableDiscoveryClient

需要用到nacos的服务都要执行上述步骤。

3、服务之间的调用

import com.zxw.domain.Video;
import com.zxw.domain.VideoOrder;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("api/v1/order")
@Api(value="订单服务")
@Slf4j
public class OrderController {

    @Autowired
    private DiscoveryClient discoveryClient;

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("/save")
    @ApiOperation("保存视频订单")
    public Object save(int videoId){
        List list = discoveryClient.getInstances("video-service");
        ServiceInstance serviceInstance = list.get(0);
        String url = "http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+
                "/api/v1/video/findById?videoId="+videoId;
        log.info("url:【{}】",url);
        Video video = restTemplate.getForObject(url, Video.class);
        VideoOrder videoOrder = new VideoOrder();
        videoOrder.setVideoId(video.getId());
        videoOrder.setVideoTitle(video.getTitle());
        videoOrder.setCreateTime(new Date());

        return videoOrder;
    }
}

目前服务都注册到nacos了。

SpringCloud微服务项目集成Nacos_第1张图片

4、Nacos理论知识

什么是Nacos

Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 支持如下核心特性:

1)服务发现: 支持 DNS 与 RPC 服务发现,也提供原生 SDK 、OpenAPI 等多种服务注册方式和 DNS、HTTP 与 API 等多种服务发现方式。
2)服务健康监测: Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。
3)动态配置服务: Nacos 提供配置统一管理功能,能够帮助我们将配置以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
4)动态 DNS 服务: Nacos 支持动态 DNS 服务权重路由,能够让我们很容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。
5)服务及其元数据管理: Nacos 支持从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

主流的注册中心

zookeeper、Eureka、consul、etcd、Nacos
AlibabaCloud搭配最好的是Nacos,且服务的注册发现之外,还支持动态配置服务

什么是注册中心(服务治理)

服务注册:服务提供者provider,启动的时候向注册中心上报自己的网络信息
服务发现:服务消费者consumer,启动的时候向注册中心上报自己的网络信息,拉取provider的相关网络信息
核心:服务管理,是有个服务注册表,心跳机制动态维护,服务实例在启动时注册到服务注册表,并在关闭时注销。

为什么要用

微服务应用和机器越来越多,调用方需要知道接口的网络地址,如果靠配置文件的方式去控制网络地址,对于动态新增机器,维护带来很大问题

你可能感兴趣的:(spring,cloud,微服务,java)