微服务与Nacos概述-5

这篇具有很好参考价值的文章主要介绍了微服务与Nacos概述-5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引入OpenFeign

添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacosdiscovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

定义配置

server.port=6083
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
spring.application.name=service-consumer
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=localhost:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public

在主类或者配置类上添加注解以支持OpenClient应用

@EnableFeignClients // 激活 @FeignClient
@EnableDiscoveryClient
@SpringBootApplication
public class Consumer3Application {
    public static void main(String[] args) {
        SpringApplication.run(Consumer3Application.class, args);
    }
}

定义http伪客户端接口

@FeignClient("service-provider") // 指向服务提供者应用
public interface ProviderClient {
    @GetMapping("/users/hello")
    public String sayHello(@RequestParam("username") String username);
}

定义控制器,通过feign接口调用远程的服务提供者

@RestController
@RequestMapping("/consumer")
public class ConsumerController {
    @Autowired
    private ProviderClient providerClient;
    @GetMapping("/{name}")
    public String test(@PathVariable String name){
        String res = providerClient.sayHello(name);
        return res;
    }
}

测试
微服务与Nacos概述-5,微服务,架构,云原生,java

负载均衡策略配置

LB中提供了三种负载均衡策略,同时提供接口允许用户自定义扩展
微服务与Nacos概述-5,微服务,架构,云原生,java

1、定义配置类
public class FeignClientConfiguration {
    @Bean
    public ReactorLoadBalancer
    reactorServiceInstanceLoadBalancer(ObjectProvider
serviceInstanceListSuppliers, Environment environment) {
        String name =
environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new RandomLoadBalancer(serviceInstanceListSuppliers, name);
    }
}
2、可以全局或者局部配置使用设置的负载均衡策略
@EnableFeignClients(defaultConfiguration = FeignClientConfiguration.class)
@EnableDiscoveryClient
@SpringBootApplication
public class Consumer3Application {
    public static void main(String[] args) {
        SpringApplication.run(Consumer3Application.class, args);
    }
}

局部配置

@FeignClient(value="service-provider",configuration =
FeignClientConfiguration.class)
public interface ProviderClient {
    @GetMapping("/users/hello")
    public String sayHello(@RequestParam("username") String username);
}

失败重试机制配置

如果通过使用OpenFeign访问远程的服务提供者,则可以配置由于网络、连接、读取等问题出现访问失败时,自动执行重试处理

1、首先定义配置
public class FeignClientConfiguration {
    @Bean
    public Retryer retryer(){
        return new Retryer.Default(100, 1000, 2);
//表示每间隔100ms,最大间隔1000ms重试一次,最大重试次数是1,因为第三个参数包含了
//第一次请求
    }
}
2、可以在注解中进行全局配置和局部配置

全局配置

@EnableFeignClients(defaultConfiguration = FeignClientConfiguration.class)
@EnableDiscoveryClient
@SpringBootApplication
public class Consumer3Application {
    public static void main(String[] args) {
        SpringApplication.run(Consumer3Application.class, args);
    }
}

局部配置

@FeignClient(value="service-provider",configuration =
FeignClientConfiguration.class)
public interface ProviderClient {
    @GetMapping("/users/hello")
    public String sayHello(@RequestParam("username") String username);
}

服务降级配置

在使用注册中心时,OpenFeign作为服务间通信的组件,它本身集成了负载均衡能力、错误重试、日志、服务熔断等机制,同时也能够支持点对点的通信方式,让开发者感觉更像是调用本地接口,而不是发起HTTP请求

具体的服务降级是依赖Sentinel组件实现的,所以需要添加Sentinel依赖

1、添加依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2、开启服务熔断配置application.properties
feign.circuitbreaker.enabled=true
3、定义对应的Fallback Factory实现
@Component
public class ProviderClientFallbackFactory implements
FallbackFactory<ProviderClient> {
    @Override
    public ProviderClient create(Throwable cause) {
        return new ProviderClient() {
            @Override
            public String sayHello(String username) {
                return cause.getMessage();
            }
        };
    }
}
4、配置使用Fallback降级处理
@FeignClient(value="service-provider",fallbackFactory =
ProviderClientFallbackFactory.class)
public interface ProviderClient {
    @GetMapping("/users/hello")
    public String sayHello(@RequestParam("username") String username);
}

查看日志信息

使用lombok提供的日志记录器,自定义编程查看调试信息

1、引入lombok依赖
2、在application.properties中配置日志输出等级
logging.level.com.yan=debug
3、在控制器中自定义输出日志
@Slf4j
public class ConsumerController {
    @GetMapping("/{name}")
    public String test(@PathVariable String name){
        log.error("name:"+name);//输出error等级的日志信息
        String res = providerClient.sayHello(name);
        return res;
    }
}

控制台上查看日志信息输出

微服务与Nacos概述-5,微服务,架构,云原生,java

查看Feign日志信息

1、添加配置类FeignClientConfiguration

public class FeignClientConfiguration {
    @Bean
    public Logger.Level feignLevel(){
        return Logger.Level.FULL;
    }
}

2、在FeignClient注解上引用该配置类

全局配置日志输出等级

@EnableFeignClients(defaultConfiguration = FeignClientConfiguration.class)
@EnableDiscoveryClient
@SpringBootApplication
public class Consumer3Application {

在控制台上可以输出通过feign调用服务提供者的详细信息

微服务与Nacos概述-5,微服务,架构,云原生,java

局部配置日志输出等级

@FeignClient(value="service-provider",configuration =
FeignClientConfiguration.class)
public interface ProviderClient {
    @GetMapping("/users/hello")
    public String sayHello(@RequestParam("username") String username);
}

Nacos配置管理

将应用中的所有配置信息进行统一管理,同时当修改配置时会自动通知对应的微服务进行热加载。Nacos在微服务集群中充当了配置管理中心的用途。需求例如有个配置 ma.date.format=yyyy-MM-dd

配置中心的思路是:

  • 首先把项目中各种配置全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。

  • 当各个服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。

  • 当配置中心中的各种参数有更新的时候,也能通知到各个服务实时的过来同步最新的信息,使之动态更新。

1、添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacosconfig</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    <version>3.1.5</version>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacosdiscovery</artifactId>
</dependency>

2、新增一个配置文件bootstrap.properties或者yaml格式都可以

spring.cloud.nacos.config.server-addr=localhost:8848 服务配置中心的配置
spring.cloud.nacos.config.file-extension=properties 配置使用的后缀名,一般只使用properties和yaml两种格式
spring.cloud.nacos.config.prefix=nacos-service  #配置DataId名称,默认就是服务名称。
#可以人为指定在Nacos中创建的DataID值
spring.cloud.nacos.config.group=DEFAULT_GROUP #默认分组名称
spring.cloud.nacos.config.namespace=public # 所使用的名空间
# 设置配置中心服务端地址
spring.cloud.nacos.config.server-addr=localhost:8848
# Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
spring.cloud.nacos.config.namespace=public
# 配置自动刷新 对应的格式为nacos:服务名称.properties
spring.config.import=nacos:nacos-config-example.properties?refresh=true

3、核心配置文件application.properties

# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html
spring.application.name=nacos-service
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=localhost:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public
# 应用服务 WEB 访问端口
server.port=8080

4、定义控制器类可以读取配置信息 ma.date.format

@RefreshScope
@RestController
public class HelloController {
    @Value("${yan.date.format}") //SpEL
    private String dateFormat;
    @GetMapping("/hello")
    public String hello(String name) {
        return new SimpleDateFormat(dateFormat).format(new Date()) +
        "said:'hello " + name + "!'";
    }
}

5、在Nacos的webUI中使用图形化界面工具的方式创建一组配置

微服务与Nacos概述-5,微服务,架构,云原生,java
输入对应的DataID并选择对应的文件类型
微服务与Nacos概述-5,微服务,架构,云原生,java

一般规则【最佳软件开发实践】

  • 命名空间Namespace:不同的项目可以分为不同的命名空间。

  • 配置分组Group:根据项目的不同环境可以一个分组。

  • 配置集Data ID:服务不同环境的不同配置,就是一个配置集

在webUI中可以查看所有的配置信息,并允许编辑修改

微服务与Nacos概述-5,微服务,架构,云原生,java

其它操作,例如查看曾经的历史版本内容,并进行回退

微服务与Nacos概述-5,微服务,架构,云原生,java

微服务与Nacos概述-5,微服务,架构,云原生,java

查看历史配置版本

微服务与Nacos概述-5,微服务,架构,云原生,java

查看监听查询
微服务与Nacos概述-5,微服务,架构,云原生,java文章来源地址https://www.toymoban.com/news/detail-644495.html

到了这里,关于微服务与Nacos概述-5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微服务与Nacos概述-5

    添加依赖: 定义配置 在主类或者配置类上添加注解以支持OpenClient应用 定义http伪客户端接口 定义控制器,通过feign接口调用远程的服务提供者 测试 负载均衡策略配置 LB中提供了三种负载均衡策略,同时提供接口允许用户自定义扩展 1、定义配置类 2、可以全局或者局部配置

    2024年02月13日
    浏览(30)
  • 微服务与Nacos概述-2

    微服务是一种软件开发架构,它将一个大型应用程序拆分为一系列小型、独立的服务。每个服务都可以独立开发、部署和扩展,并通过轻量级的通信机制进行交互。 应用开发 common模块中包含服务提供者和服务消费者共享的内容 provider模块是服务的提供者,用于通过SpringMVC的

    2024年02月13日
    浏览(33)
  • 微服务与Nacos概述-3

    在微服务架构中将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务堆积,最终导致服务瘫痪。 流

    2024年02月13日
    浏览(45)
  • 微服务注册中心-Nacos概述

    Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 N

    2024年02月04日
    浏览(42)
  • 微服务 & 云原生:微服务相关技术简要概述

    所谓单体架构,就是只有一台服务器,所有的系统、程序、服务、应用都安装在这一台服务器上。比如一个 bbs 系统,它用到的数据库,它需要存储的图片和文件等,统统都部署在同一台服务器上。 单体架构的好处就是简单,相对便宜。一般在互联网早期、或创业型团队,都

    2024年02月15日
    浏览(70)
  • 微服务概述之微服务架构

    为了解决单体应用的缺点,工程师们想到将原来大的单体应用进行拆分,化整为零形成独立的应用,不过此时这些应用没有直观的入口,因此用传统应用的概念来定义就不太妥当。于是诞生了“服务”,通过服务来描述这种功能性的应用,并其他应用提供功能支持,服务于其

    2024年01月22日
    浏览(42)
  • 微服务·架构组件之服务注册与发现-Nacos

    Nacos服务注册与发现流程 服务注册:Nacos 客户端会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。 Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。 服务心跳:在服务注册后,Nacos Client会维

    2024年02月02日
    浏览(45)
  • 微服务概述之单体架构

    互联网始于 1969年美国的阿帕网(ARPA),最开始的阿帕网只在美国军方使用。随着时间的推移,一些大学也开始加入建设,慢慢演化成了现在的因特网 (Internet)。随着计算机网络的普及,到现在全世界几乎一半的人口,都在使用互联网产品。日常生活中的各种场景,如商场

    2024年01月22日
    浏览(48)
  • 微服务架构+服务注册中心+Nacos和Eureka+比较分析

    Nacos和Eureka都是常用的服务注册中心,它们可以实现服务的注册、发现、负载均衡等功能,但是它们也有一些区别和优缺点。本资源将从功能特性、生态系统、CAP理论、连接方式、服务异常剔除、操作实例方式、自我保护机制等方面,详细比较和分析Nacos和Eureka的区别。本资源

    2024年02月21日
    浏览(48)
  • 0201概述-网关Gateway-微服务架构

    Spring Cloud Gateway是一个基于Spring Framework 5、Spring Boot 2和Project Reactor等技术开发的API网关,它提供了一系列的过滤器(Filter)来处理HTTP请求和响应,可以轻松地实现路由、负载均衡、限流、重试、熔断、安全控制等功能,可以作为微服务架构中的入口和边缘服务。 Spring Cloud

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包