工作总结思考

总结

系统架构设计总体思考
  • 关于数据冗余思考?首先判断是否需要冗余?需要查询场景吗?冗余的话,国际化问题如何处理?
小经验

背景:微服务背景下,服务虽然进行了拆分,但是服务依赖运行的还有很多相同的逻辑处理,比如用户身份识别,一些配置,日志(包括Feign调用),错误,数据权限,国际化,异常等等。所以我们在 开发的过程中,为提高效率需要对上述问题进行统一处理(或者各个服务自己独立处理,但工作量会比较多)。

用户身份识别
  • 微服务情况下,需要统一处理用户身份放到ThreadLocal中。
通用配置
  • Redis配置:继承 CachingConfigurerSupport,统一处理CacheManager,序列化,Error等
  • FeignError配置:Feign调用时,出现服务错误,统一处理。实现 ErrorDecoder 即可。
  • SDK中统一对外提供服务:
@Configuration
public class BeanConfig {
    @Bean
    public xxxController xxxController(){
        return new xxxController();
    }
}
  • Feign调用Header传递数据: 可以在用户拦截器中进行参数解析获取使用。(HandlerInterceptorAdapter的实现类中)
public class BasicFeignConfiguration implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
        requestTemplate.header("key", "value");
    }
}
  • Feign服务间鉴权:类似
统一日志打印
  • Feign服务调用控制:默认情况正式环境不打印Feign日志调用,可以继承:feign.Logger自定义实现日志级别打印,把info级别打印出来。
统一错误处理
Feign header数据传递
跨系统数据权限如何设计
Lock锁工具
国际化如何设计?
拦截器如何统一?
异常如何统一?
常用的类