微服务框架
网关
Q: 网关处将auth.api-access-control
设置为false
无效。
A: webflux
版本未对此配置做判断,所以导致无效。以下提供两种解决办法:
- 更新到
KEMS v2.0.0
; strategy-name
配置一个不存在的策略名,让其失效。
Q: 网关通过swagger聚合方式获取下游接口请求有时候不返回。
A: 网关使用lettuce连接池问题(会主动断开连接),改成jedis连接池
注册中心
Q:registry.instance.ipAddress失效问题。
A: koca的注册中心对eureka进行了配置兼容,需要将原生eureka的配置设置到registry节点下
例如:registry.eureka.instance.ipAddress
配置中心
Q:获取配置失败问题。
A:koca config的配置,需要配置在bootstrap_xxx.yml中,不能放到application文件中,前者优先级会高于后者
Q:配置中心依赖问题。
A: 运维监控中心依赖pmi,如果要使用配置中心,则需要先打一个特定版本的pmi,等配置中心启用后,再重新打包pmi使其根据配置中心获取配置数据。
监控中心
Q: registry
启用用户名密码认证,服务可以正常注册,但”监控运维平台—注册中心管理—实例管理“看不到实例信息。
A: koca
向配置的"注册中心地址"发送获取所有实例的请求时,没做认证判断和设置,故获取为空。
KOCA v2.7.0已修复,可按需引用。
分布式事务
Q: Send init message exception : request timeout... connect failed!。
A: 修复分布式服务的监听地址(默认为10002),可能被占用。
Q: 分布式事务是否可以与本地事务混用。
A: 不能、分布式事务中禁用本地事务,否则分布式事务无法回滚。
Q: 分布式事务中新增的数据,去查询的时候查询不到。
A: 由于kems的分布式事务默认采用二阶段提交方式,分布式中要查询到修改数据,需要查询语句上也增加注解。
服务调用
Q: 使用Feign
时,远程服务通过AuthContextHolder.getPrincipal()
拿不到用户信息。
A: 由于koca
仅把用户信息存储在线程上下文中,所以koca-client
在设置header:trustedprincipal
的时候,获取用户信息为空,就传递不下去。解决方法有以下两种:
- 禁用
hystrix
; - 将
hystrix
的隔离策略设置为"信号量",默认为”线程“hystrix: command: default: execution: isolation: strategy: SEMAPHORE #信号量隔离
Q: 使用Feign
时,报 could not acquire a semaphore for execution。
A: 增加semaphore.maxConcurrentRequests配置
hystrix:
command:
default:
execution:
isolation:
strategy: SEMAPHORE
thread:
timeoutInMilliseconds: 120000
semaphore:
maxConcurrentRequests: 1000
业务组件
系统管理
Q:默认机构重复的问题
A:通过stream的distinct()函数进行去重。
日志管理
Q:登录日志表中的登录ip非用户真实ip
A:网关中的认证插件版本需要更新,使用koca-auth-webflux 2.7.1版本。
消息管理
Q:发送模板消息 params must be [a-zA-Z0-9] for verification sms
A: 发送给了短信服务的param中key对应的value取值可能为空字符串。
Q:发送短信消息时,模板消息该账号下找不到对应的模板
A:模板编号不合法,对应的渠道下没有申请对应模板。
Q:V2.2.0之前腾讯消息组件读取不到配置
A: 将tencent改为tencentyun, 2.3.0版本后修复。
附件管理
Q: 文件上传重复。
A: 启用如下插件。
<dependency>
<groupId>szkingdom.jzyq.taoism.kems.plug</groupId>
<artifactId>kems-plug-file-uniq</artifactId>
</dependency>
v3.2.0及以上版本:
<dependency>
<groupId>com.kingengine.kems.plug</groupId>
<artifactId>kems-plug-file-uniq</artifactId>
</dependency>
功能组件
文件
Q: 更新到v1.4.0,文件上传成功,重新下载后显示大小为0。
A: 已修复,升级kems-sdk-file-core
到v1.4.2解决问题。
<dependency>
<groupId>szkingdom.jzyq.taoism.kems.sdk</groupId>
<artifactId>kems-sdk-file-core</artifactId>
<version>1.4.2</version>
</dependency>
消息
Q: 短信提供商选择华为云通信,短信发送失败,但返回状态仍是成功。
A: 已修复,升级kems-sdk-mns-sms
到v1.4.2解决问题。
<dependency>
<groupId>szkingdom.jzyq.taoism.kems.sdk</groupId>
<artifactId>kems-sdk-mns-sms</artifactId>
<version>1.4.2</version>
</dependency>
安全测评
Q:API成批分配。
A: 如果是网关,则重写WebfluxLoginParamterParser接口,并增加webflux异常捕获。
如果不是网关,将POST请求改成GET请求 或者 增加网关过滤器对POST请求的RequestBody进行校验
Q:API功能级授权中断。
A: 网关中的认证插件版本需要更新,使用koca-auth-webflux 2.7.1版本,禁用POST之外请求
Q:JWT中的弱签名。
A: 禁用白名单功能,可能会被认为绕过JWT认证机制,针对系统参数获取,可以在前端项目本地配置。
Q:退出登录接口的弱签名。
A: 使用koca-auth-webflux 2.7.2版本
Q:配置中包含密码明文,提示安全漏洞的问题。
A: 请参考koca微服务框架-安全-配置项加密
http://koca.szkingdom.com/koca-base_v4.0.0/Development_Boot/Security/ConfigFile_Pwd_Encryption.html
容器化部署
Q:服务的ip和端口要如何分配。
A: 联系韩朋成,统一进行分配与管理。