登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
读程序员的README笔记17_构建可演进的架构(下) ...
读程序员的README笔记17_构建可演进的架构(下)
[ 复制链接 ]
遏筒煽
2025-6-9 08:28:37
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
1. 可演进的API
1.1. 随着需求的变化,你需要改变你的API,即代码之间的共享接口
1.2. 改变API很容易,但很难做到正确
1.3. 保持API小巧
1.3.1. 小巧的API更易于理解和演进
1.3.2. 只添加即刻需要的API方法或字段
1.3.3. 带有许多字段的API方法应该有合理的默认值
1.3.3.1. 开发人员可以只专注于和自己相关的字段,因为它们会继承其他字段的默认值
1.3.3.2. 默认值可使大型API在感觉上很小巧
1.4. 公开定义良好的服务端API
1.4.1. 切记使用标准工具来定义服务端API
1.4.1.1. OpenAPI通常用于RESTful服务
1.4.1.2. non-REST服务则使用Protocol Buffers、Thrift或类似的接口定义语言(interface definition language,IDL)
1.4.1.3. 接口定义工具自带代码生成器,可以将服务的定义转换为客户端和服务端代码
1.4.1.4. 文档也可以被生成,测试工具可以使用IDL来生成stub数据和模拟数据
1.5. 保持API变更的兼容性
1.5.1. 向前兼容
1.5.1.1. 向前兼容的变更允许客户端在调用旧版的服务时使用新版的API
1.5.1.2. 一个正在运行1.0版API的网络服务,但可以接收来自使用1.1版API的客户端的调用,这就是向前兼容
1.5.2. 向后兼容
1.5.2.1. 向后兼容的变更:新版本的库或服务不需要改变旧的客户端代码
1.5.2.2. 如果针对1.0版API开发的代码在使用1.1版时能继续编译和运行,这种变更就被称为向后兼容
1.6. API版本化
1.6.1. 随着API的不断演进,你将需要决定如何处理多个版本的兼容性
1.6.2. 完全向后兼容和向前兼容的变更意味着API的所有的历史版本和未来版本都可以相互操作
1.6.3. 你会想变更你的API,使之与旧的客户端不兼容
1.6.3.1. 当客户端代码难以变更时,API的版本管理最有价值
1.6.4. 版本化你的API意味着你在做出改变时将引入一个新的版本
1.6.4.1. API版本化自有其代价
1.6.4.2. 旧的主版本服务需要被维护,修复的bug也需要回传到以前的版本
1.6.5. API版本通常由API网关或服务网格来管理
1.6.5.1. 管理版本所采用的方法要务实
1.6.6. 将文档与你的API一起保持版本化
2. 可持续的数据管理
2.1. API比持久化数据存续的时间更短
2.1.1. 一旦客户端和服务端API都升级了,就意味着工作完成了
2.2. 隔离数据库和使用明确的schema将使数据演进更易于管理
2.3. 数据库隔离
2.3.1. 共享的数据库很难演进,并且会导致丧失自主性
2.3.1.1. 图
2.3.2. 拥有共享数据库的应用程序可以发展到直接依赖对方的数据,应用程序应该作为它们所使用的底层数据的控制点
2.3.3. 隔离的数据库只有一个读取者和写入者
2.3.3.1. 其他所有流量都通过远程过程调用
2.3.3.2. 图
2.3.4. 隔离数据库为你提供了共享数据库所不具备的灵活性和隔离性
2.4. 使用schema
2.4.1. 僵化的预定义数据列和类型,以及它们演进的重量级过程,会导致流行的无模式(schemaless)数据管理的出现
2.4.2. 无模式并不意味着“没有模式”(数据将无法使用)
2.4.3. 不要将无模式的数据隐藏在已经模式化的数据中
2.4.3.1. 隐藏无模式的数据是“自取灭亡”,你获得了显式schema的所有痛苦,却没有任何收益
2.4.4. 无模式数据有一种隐含的模式,可以在读取时被提供或推断出来
2.4.5. 采用无模式的方法会产生明显的数据完整性和复杂性问题
2.4.6. 强类型的面向schema的方法降低了应用程序的隐蔽性,因此也降低了其复杂性
2.4.7. 为你的数据定义明确的schema将使你的应用程序保持稳定,并使你的数据可用
2.4.7.1. 明确的schema会让你在编写数据时可以对其进行合理性检查
2.4.7.2. 使用显式schema解析数据通常会更快捷
2.4.7.3. 架构还可以帮助你检测到前后不兼容的变化
2.4.8. 数据有时被描述为“一次写入,多次读取”,使用schema可以使读取更容易
2.4.9. schema自动化迁移
2.4.9.1. 改变一个数据库的schema是危险的
2.4.9.2. 可以管理数据库迁移的工具
2.4.9.2.1. Liquibase
2.4.9.2.2. Flyway
2.4.9.2.3. Alembic
2.4.9.2.4. GitHub的gh-ost
2.4.9.2.5. Percona的pt-online-schema-change
2.4.9.2.6. Skeema
2.4.9.2.7. Square的Shift
2.4.9.3. 大多数迁移工具都支持回滚,也就是可以撤销迁移产生的变化
2.4.10. 保持schema的兼容性
2.4.10.1. 写入磁盘的数据也有和API一样的兼容性问题
2.4.10.2. 变更数据捕获(change data capture,CDC)是一种基于事件的架构,将插入、更新和删除操作转换为下游使用者的消息
2.4.10.3. 数据仓库管道和下游用户必须受到保护,以免遭受schema变更带来的不良影响
2.4.10.4. 兼容性检查应该尽早地进行,最好是在提交代码时通过检查数据库DDL语句来进行
2.4.10.5. 独立的数据产品,可能只是数据库视图,允许团队与数据的消费者保持兼容,而不必冻结其内部的数据库schema
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
程序员
README
笔记
构建
演进
相关帖子
FFmpeg开发笔记(九十四)基于Kotlin的国产开源推拉流框架anyRTC
LaTeX学习笔记:学术文档排版
docker学习笔记
docker学习笔记
复健笔记 - Pascal酒吧的爆破
【Agent】MemOS 源码笔记---(5)---记忆分类
C#+VisionMaster 学习笔记(目录)-目录
Flink学习笔记:状态后端
.Net-Avalonia学习笔记(目录)
LLM 工具调用的范式演进与认知模型集成
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
FFmpeg开发笔记(九十四)基于Kotlin的国产开源推拉流框架anyRTC
1
677
晾棋砷
2025-12-14
业界
LaTeX学习笔记:学术文档排版
0
250
叟澡帅
2025-12-14
安全
docker学习笔记
0
698
咒卖箴
2025-12-14
安全
docker学习笔记
1
778
汪玉珂
2025-12-14
安全
复健笔记 - Pascal酒吧的爆破
0
370
凤患更
2025-12-15
业界
【Agent】MemOS 源码笔记---(5)---记忆分类
0
96
能杜孱
2025-12-15
业界
C#+VisionMaster 学习笔记(目录)-目录
0
516
寂傧
2025-12-15
业界
Flink学习笔记:状态后端
0
893
嫁蝇
2025-12-16
业界
.Net-Avalonia学习笔记(目录)
0
186
恙髡
2025-12-16
业界
LLM 工具调用的范式演进与认知模型集成
0
360
万妙音
2025-12-16
回复
(4)
谲脾
2025-10-10 01:17:59
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
厥轧匠
2025-10-12 00:41:56
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,下载保存了,貌似很强大
贺蛟亡
2025-10-31 23:18:57
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
空娅芬
2025-11-8 06:17:18
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,下载保存了,貌似很强大
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
安全
签约作者
程序园优秀签约作者
发帖
遏筒煽
2025-11-8 06:17:18
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
246
RSA加密
316
pydash原型链污染
176
大模型榜单周报(2025/12/08—2025/12/12)
849
当你不再迷信“最强模型”,系统设计才刚刚
876
软件i2c
301
2025年专业起名老师联系方式汇总:全国资深
652
解码IP协议号:网络世界的“货物运单”
712
Python Selenium 漫步指南:从入门到精通
643
AI 付费模式终极对比:ChatGPT、Gemini、Cl
838
JSAPIThree 加载 3D Tiles 学习笔记:大规
358
LLM 工具调用的范式演进与认知模型集成
355
Requirements Engineering with AI for Con
343
【节点】[Adjustment-WhiteBalance节点]原
303
上海专业建筑维修服务解析:标准化流程如何
947
【分析式AI】-带你弄懂XGBoost模型
731
【分析式AI】-带你弄懂XGBoost模型
53
【分析式AI】-带你弄懂XGBoost模型
274
C语言之统计天数
241
如何使用DashVector的多向量检索
272
【分析式AI】-朴素贝叶斯算法模型