工作总结思考
2022-01-15总结
系统架构设计总体思考
- 关于数据冗余思考?首先判断是否需要冗余?需要查询场景吗?冗余的话,国际化问题如何处理?
小经验
背景:微服务背景下,服务虽然进行了拆分,但是服务依赖运行的还有很多相同的逻辑处理,比如用户身份识别,一些配置,日志(包括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级别打印出来。