服务版本、用户界面与第三方软件集成策略
1. 多并发服务版本的使用
在服务版本管理中,有一种常见的解决方案是让不同版本的服务同时运行。老的服务使用者将流量路由到旧版本,而新的使用者则使用新版本,像 Netflix 在某些情况下会少量采用这种方式,特别是当更改老用户的成本过高,或者存在仍依赖旧版 API 的遗留设备时。
不过,这种方法存在诸多弊端:
- 维护成本高 :若要修复服务内部的 bug,需要同时修复和部署两套不同的服务,可能还得对代码库进行分支处理,这会带来一系列问题。
- 路由管理复杂 :需要有智能机制来引导使用者访问正确的微服务,这种机制往往存在于中间件或大量的 nginx 脚本中,增加了系统行为的理解难度。
- 状态管理复杂 :服务管理的持久状态需要统一处理,无论数据是由哪个版本的服务创建的,都要确保所有服务能访问到这些数据,这会增加系统的复杂性。
虽然在短时间内让不同版本的服务共存是有意义的,比如在进行蓝绿部署或金丝雀发布时,但如果让使用者升级到新版本的时间过长,那么更应该考虑在同一个微服务中兼容不同的端点,而不是让不同版本的服务长期共存。
2. 用户界面的发展与挑战
2.1 用户界面的演变
在早期计算时代,主要使用运行在桌面的大型胖客户端,例如使用 Motif 和 Swing 开发软件,这些系统有些仅用于本地文件的创建和操作,有些则有服务器端组件。随着 Web 的出现,用户界面逐渐变为瘦客户端,更多的逻辑放在服务器端。最初,服务器端程序渲染整个页面并发送到