微服务nacos简单部署+网关设置+日志管理

目录

1.nacos简单部署

2.网关设置

3日志管理. 


1.nacos简单部署

nacos引用的主要依赖是然后在配置文件进行注册(需要提前启动nacos插件,默认密码都是nacos)

      <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
       </dependency>

在配置文件进行注册 (注册时必须设置服务名)

spring.application.name=shop-product
spring.cloud.nacos.server-addr=localhost:8848

 然后在列表中可以看见对应的服务微服务nacos简单部署+网关设置+日志管理

服务直接可以相互调用,调用方式有三种

1.直接输入服务ip(不灵活)



/**
 * @program: shop-parent3
 * @description:
 * @author: 大鱼
 * @create: 2021-07-07 19:36
 **/
@RestController
public class OrderController {
    @Resource
    OrderMapper orderMapper;
    @Resource
    RestTemplate restTemplate;
    @GetMapping("insert")
    private String insertit(Integer pid, Integer num) {
        Order order = new Order();
        Product prduct = restTemplate.getForObject("http://localhost:8081/product/byid/"+pid,Product.class);
        order.setUsername("xxxx");

        orderMapper.insert(order);
        return "ok";
    }
}

2.从nacos注册中心获取(不符合习惯)

 

@RestController
public class OrderController1 {
    @Resource
    OrderMapper orderMapper;
    @Resource
    RestTemplate restTemplate;
    @Resource
    DiscoveryClient discoveryClient;
    @GetMapping("insert1")
    private String insertit(Integer pid, Integer num) {
        Order order = new Order();
        List<ServiceInstance> instances = discoveryClient.getInstances("shop-product");
        ServiceInstance instance = instances.get(0);
        Product prduct = restTemplate.getForObject(instance.getUri()+"/product/byid/"+pid,Product.class);
        order.setUsername("xxxx");

        orderMapper.insert(order);
        return "ok";
    }
}

 用DiscoveryClient类获取注册中心的集群,然后获取路径

同时在主启动类加入RestTemplate引用类

@SpringBootApplication
@MapperScan(basePackages = "com.dayu.mapper")

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

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

3.引用openfeign依赖

      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

 新建一个接口加注解并且指定注册中心想要获取的服务名以及该服务的方法

@FeignClient(value = "shop-product")
@RequestMapping("product")
public interface Myopen {
    @GetMapping("byid/{id}")
    public Product getit(@PathVariable Integer id);
}

开启注解 @EnableFeignClients生效和  @LoadBalanced(负载均衡)

@SpringBootApplication
@MapperScan(basePackages = "com.dayu.mapper")
@EnableFeignClients

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

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

在配置文件可声明服务负载均衡的方式

shop-product:  # 这里使用服务的名称
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #使用的的负载均衡策略

4.配置文件

微服务的配置文件可以从注册中心进行获取,

 1)首先引入依赖

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

首先定义一个bootstrap.yml文件

#资源配置文件有优先级pro>yaml>yml
#从nacos 获取资源配置文件
spring:
  application:
    name: shop-product#微服务名
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml#文件后缀可变

根据服务名和相应的文件后缀获取配置文件,与配置文件无异微服务nacos简单部署+网关设置+日志管理

 微服务nacos简单部署+网关设置+日志管理

 

2.网关设置

所谓的API网关,就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服 务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控(黑白名单)、路由转发等等。 

首先引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

在配置文件声明调用微服务信息

spring:
  cloud:
    gateway:
      routes:
        - id: shop-product
          uri: lb://shop-product/   #负载均衡服务名ip
          order: 0
          predicates:
            - Path=/product/**   #断言
#            - Age=18,60
          filters:   #过滤器
            - SetStatus=250 #            - StripPrefix=1

3两组追踪

上一篇:手写生产者消费者


下一篇:Mybatis学习第22节 -- 高级结果映射 构造方法映射