netflix graphql Federation 参考技术栈以及系统可靠性保证方法
核心基础设施
- gateway
基于kotlin参考apollo 指南实现,主要是可以更好的利用java 系统,同时利用coroutines 特性
0 schema registry
是自己开发的,同时也使用了kotlin,利用了netflix 内部基于cassandra 开发的event
sourcing 模式的框架,支持方便的版本管理,同时利用了ci、cd,可以实现灵活的控制
开发学习&&经验
为了提高团队的使用netflix 基于graphql java 以及spring boot 开发了DGS framework 可以快速的
进行graphql 服务的开发以及进行schema 的发布(同时也会计划开源,好消息是github 已经可以看到了)
schema 治理
- schema 设计流程
同时netflix 团队拥抱schema 优先的模式,为了解耦实现了通用的graphql 到grpc 的调用
观测
netflix是推崇系统可靠稳定的,比较重视,报警,发现,分析
对于观测利用了zipkin,以及netflix 内部开发的好多系统
联邦安全
- 验证
所有的需要安全认证,同时对于ggraphql的自省,严格限制内部使用 - 授权
netflix 开发了方便的graphql 指令可以进行安全控制@Secured
面向失败的架构设计
这个属于netflix团队的文化模式
- 单一目的
- 无状态服务
- 需求控制
- 多区域
- 基于功能共享
说明
以下的连接都是不错的相关文章,很值得学习下
参考资料
https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2
https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-2-bbe71aaec44a
https://medium.com/netflix-techblog/scaling-event-sourcing-for-netflix-downloads-episode-1-6bc1595c5595
https://netflixtechblog.com/scaling-event-sourcing-for-netflix-downloads-episode-2-ce1b54d46eec
https://relay.dev/
https://www.apollographql.com/docs/federation/federation-spec/
https://www.graphql-java.com/blog/deep-dive-data-fetcher-results/
https://www.graphql-java.com/documentation/v15/batching/
https://netflixtechblog.com/edgar-solving-mysteries-faster-with-observability-e1a76302c71f
https://netflixtechblog.com/telltale-netflix-application-monitoring-simplified-5c08bfa780ba
https://netflixtechblog.com/introducing-atlas-netflixs-primary-telemetry-platform-bd31f4d8ed9a
https://github.com/Netflix/dgs
https://github.com/Netflix/dgs-framework
https://netflix.github.io/dgs/getting-started/