24. 尚融宝基础微服务搭建

Nacos

准备

添加服务配置信息

coresmsoss模块的application.yml

#spring: 在spring节点下
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址

nacos添加依赖

service-base的pom

		
		<dependency>
			<groupId>com.alibaba.cloudgroupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
		dependency>

启动nacos服务

startup.cmd -m standalone

在这里插入图片描述

OpenFeign

service-base

pom

		
		<dependency>
			<groupId>org.springframework.cloudgroupId>
			<artifactId>spring-cloud-starter-openfeignartifactId>
		dependency>

service-core

服务提供者

service

UserInfoService.java

    boolean checkMobile(String mobile);

UserInfoServiceImpl.java

    @Override
    public boolean checkMobile(String mobile) {
     
        QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("mobile", mobile);
        Integer count = baseMapper.selectCount(queryWrapper);
        return count > 0;
    }

contoller

UserInfoController.java

    @ApiOperation("检查手机号是否已注册")
    @GetMapping("/checkMobile/{mobile}")
    public boolean checkMobile(@PathVariable String mobile){
     
        return userInfoService.checkMobile(mobile);
    }

service-sms

服务消费者

main

ServiceSmsApplication,java

@EnableFeignClients
public class ServiceSmsApplication {
     

client

根目录下创建client

CoreUserInfoClient.java

package com.indi.srb.sms.client;

@FeignClient(value = "service-core")
public interface CoreUserInfoClient {
     
    @GetMapping("/api/core/userInfo/checkMobile/{mobile}")
    boolean checkMobile(@PathVariable String mobile);
}

controller

ApiSmsController.java

    @Resource
    private CoreUserInfoClient coreUserInfoClient;
        // 手机号是否已注册过
        Assert.isTrue(!coreUserInfoClient.checkMobile(mobile), ResponseEnum.MOBILE_EXIST_ERROR);

24. 尚融宝基础微服务搭建_第1张图片

超时控制

openfeign默认的连接超时时间为1秒,测试时很可能会出现远程调用超时错误。

可以在配置文件中添加如下配置:

feign:
  client:
    config:
      default:
        connectTimeout: 10000 #连接超时配置
        readTimeout: 600000 #执行超时配置

OpenFeign日志

1、作用

OpenFeign提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解OpenFeign中Http请求的细节。即对OpenFeign远程接口调用的情况进行监控和日志输出。

2、日志级别

  • NONE:默认级别,不显示日志
  • BASIC:仅记录请求方法、URL、响应状态及执行时间
  • HEADERS:除了BASIC中定义的信息之外,还有请求和响应头信息
  • FULL:除了HEADERS中定义的信息之外,还有请求和响应正文及元数据信息

3、配置日志bean

service-baseconfig包下

OpenFeignConfig.java

package com.indi.srb.base.config;

@Configuration
public class OpenFeignConfig {
     
    @Bean
    Level feignLoggerLevel(){
     
        return Level.FULL;
    }
}

4、开启日志

service-sms模块

application.yml

logging:
  level:
    com.atguigu.srb.sms.client.CoreUserInfoClient: DEBUG #以什么级别监控哪个接口

5、修改logback日志级别

service-sms模块

logback-spring.xml修改日志的level为DEBUG

24. 尚融宝基础微服务搭建_第2张图片

6、查看日志输出

测试发送验证码

24. 尚融宝基础微服务搭建_第3张图片

补充:

HTTP 是一种无状态协议,客户端向服务器发送一个 TCP 请求,服务端响应完毕后断开连接。

如果客户端向服务器发送多个请求,每个请求都要建立各自独立的连接以传输数据。

HTTP 有一个 KeepAlive 模式,它告诉 webserver 在处理完一个请求后保持这个 TCP 连接的打开状态。

若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。

KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

timeout 来指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。

Sentinel

需求

sms调用core期间,一旦core长时间没有响应或者宕机,会直接影响到sms,我们不应该让core影响sms,所以需要为sms设置服务熔断和降级。

service-base

pom

		
		<dependency>
			<groupId>com.alibaba.cloudgroupId>
			<artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
		dependency>

service-sms

client

CoreUserInfoClient.java

24. 尚融宝基础微服务搭建_第4张图片

fallback

client下创建fallback

package com.indi.srb.sms.client.fallback;

@Service
@Slf4j
public class CoreUserInfoClientFallback implements CoreUserInfoClient {
     
    @Override
    public boolean checkMobile(String mobile) {
     
        log.error("远程调用失败,服务熔断");
        return false;
    }
}

测试

停止core微服务测试

使用sentinel之后可以发现,点击获取验证码时,即使core宕机,sms也会正常发送验证码,至于校验该手机号是否注册过,会留到点击下一步的时候,在那里core会校验。

你可能感兴趣的:(尚融宝,nacos,feign,sentinel,微服务,分布式)