little-cui opened a new pull request #1180:
URL: https://github.com/apache/servicecomb-service-center/pull/1180
### 背景
当前契约是按照微服务版本一比一存储的,当升级微服务版本,较多场景下会冗余schema存储,导致后端数据存储暴涨
### 实现方式
- hash:使用md5算法hash文件名与内容(要做接口抽象,以便后续切换算法),算出每个契约文件的“地址”,将地址作为etcd
key,内容作为etcd value存储,不要做全量缓存,会把内存挤爆的,为了优化查询速度,只能做热点查询,比如就留1000size的契约缓存。
- 缓存:可以缓存{serviceid}/{schemaid}到hash(schemaid+schemacontent)的映射进行加速
- 存储结构:/cse-sr/ms/schema-content/{domain}/{project}/{schema_hash},值为契约名字和内容
- 汇总查询:service的schemas slice应该存的是这些地址,需要汇总时,再进行关联查询
### 老数据兼容、老接口兼容的总原则
- 新老数据共存
- 不增API
- 允许一个微服务版本部分schema是老逻辑,部分是新逻辑
Follow this checklist to help us incorporate your contribution quickly and
easily:
- [ ] Make sure there is a [JIRA
issue](https://issues.apache.org/jira/browse/SCB) filed for the change (usually
before you start working on it). Trivial changes like typos do not require a
JIRA issue. Your pull request should address just this issue, without pulling
in other changes.
- [ ] Each commit in the pull request should have a meaningful subject line
and body.
- [ ] Format the pull request title like `[SCB-XXX] Fixes bug in
ApproximateQuantiles`, where you replace `SCB-XXX` with the appropriate JIRA
issue.
- [ ] Write a pull request description that is detailed enough to
understand what the pull request does, how, and why.
- [ ] Run `go build` `go test` `go fmt` `go vet` to make sure basic checks
pass. A more thorough check will be performed on your pull request
automatically.
- [ ] If this contribution is large, please file an Apache [Individual
Contributor License Agreement](https://www.apache.org/licenses/icla.pdf).
- [ ] Never comment source code, delete it.
- [ ] UT should has "context, subject, expected result" result as test case
name, when you call t.Run().
---
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]