谷粒商城学习笔记

组件总结:微服务、注册中心、配置中心、远程调用、网关

SpringCloud Nacos Discover

作用:服务注册,服务发现

SpringCloud Nacos Config

作用:配置参数

一些概念:

        命名空间:分组

        配置组:作用也是分组,颗粒度小于命名空间

本项目中使用命名空间来区分微服务间的配置,配置组来区间环境(开发、测试、生产),这些在bootstrap.properties(读取优先于application.yml)中都要配置。

注意点:

  • 参数配置的文件除了nacos上要配,本地也要配application.properties文件,否则服务启不来。当nacos上读不到属性时,会用本地文件兜底
  • 配置名默认为:服务名.properties
  • @RefreshScope + @Value 动态获取配置

SpringCloud GetWay

作用:网关,路由服务机器;鉴权;限流

图片上传云服务器

背景:用户需要上传图片。阿里云,下面都称OSS。

第一种策略是先将图片上传至服务端然后服务端再存储至OSS,当流量大时显然拥塞。

第二种策略是,用户去请求服务端的令牌,服务端发送令牌后,用户拿着令牌上传至OSS

数据校验

依赖引入:注解和校验器

(过程中由于第二个校验器没引入,导致校验一直不生效)

        
            javax.validation
            validation-api
            2.0.1.Final
        
        
            org.hibernate.validator
            hibernate-validator
            6.0.1.Final
        

使用方法:

1,字段上加@Max注解等

2,controller里加@Valid注解


        @RequestMapping("/save")
        public R save(@Valid @RequestBody CategoryEntity category){
            categoryService.save(category);

            return R.ok();
        }

3,全局加校验器,处理异常

/**
 * 统一处理异常,以json形式返回,加ResponseBody
 */
@Slf4j
@RestControllerAdvice(basePackages = "com.miaojiang.gulimall.product.controller")
public class GulimallExceptionControllerAdvice {
    @ExceptionHandler(value = Throwable.class)
    public R handleException(Throwable e){
        return R.error(UNKNOW_EXCEPTION.getCode(), UNKNOW_EXCEPTION.getMsg());
    }

    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public R handleException(MethodArgumentNotValidException e){
        // 打日志
        log.error("数据校验出现问题:{}, 异常类型:{}", e.getMessage(), e.getClass());
        
        // 遍历具体错误信息
        BindingResult bindingResult = e.getBindingResult();
        Map errMap = new HashMap<>();
        bindingResult.getFieldErrors().forEach(fieldError ->
                errMap.put(fieldError.getField(),fieldError.getDefaultMessage()));
        return R.error(VALIDATE_EXCEPTION.getCode(), VALIDATE_EXCEPTION.getMsg()).put("data", errMap);
    }
}

其他:

分组校验

自定义校验

ElasticSearch+Kibana(查询可视化)

Elasticsearch Platform — Find real-time answers at scale | Elastic

作用:利用倒排索引,搜索引擎,海量数据检索,日志的存储可以采用;mysql更注重持久化

数据分析和聚合

一些概念:

Index索引<=> mysql中的DataBase

Type类型<=>mysql中的Table

Document文档<=>mysql中的数据

你可能感兴趣的:(学习,笔记)