云原生开发:从基础到优化
1. 云消息集成与实时服务
云消息提供商能为 Web 和桌面应用带来动态实时更新的用户界面,还能让运行在半连接设备上的移动应用实现全交互功能。实时消息系统是构建高可扩展、分布式且最终一致系统的关键。部分消息提供商还针对物联网提供特殊支持,能将智能设备与后端集成。
2. 云原生应用构建理念
构建微服务并非单纯学习编程语言,而是要学会构建适应弹性伸缩环境、无主机依赖且能随时启停的云原生应用。
3. 识别与修复反模式
在开发过程中,为便于学习,常使用简单示例,但实际应用中需重新审视一些设计模式。以团队监控示例为例,最初设计中事件处理器和现实服务共享数据存储(如 Redis 缓存),这违背了“不将数据库作为集成层”的原则。
使用数据库作为集成层会带来以下问题:
- 多个服务依赖特定数据结构或模式,难以独立更改底层数据存储。
- 服务可能需同步发布,无法独立发布。
- 多个服务读写相同数据可能导致性能问题或数据损坏。
为解决此问题,可重新设计架构,让事件处理器调用现实服务来写入数据,使现实服务成为数据的唯一所有者。此外,还可让现实服务维护私有数据和外部缓存,将缓存视为版本化的公共 API。
4. 复合微服务的讨论
复合服务指依赖调用其他服务来满足请求的服务,通常为同步调用。这种模式在企业应用中广泛存在,但可能导致响应时间延长和失败率上升。例如,产品服务调用库存服务获取商品库存状态,若库存服务依赖的新服务出现问题,可能引发连锁反应。
部分微服务设计纯粹主义者认为真正的微服务不应同步调用其