1、https:/nebula-携程NebulaGraph图数据库平台建设系统研发部郑皓月https:/nebula-目录Nebula平台架构客户端改造系统调优实践未来展望1234https:/nebula-Nebula平台架构 Kubernetes Operator部署CRD包含Graph,Meta,Storage三个StatefulsetMeta Address根据集群类型组织为FQDN(单机房、蓝绿集群)或DNS(三机房集群)Pod中包含一个Nebula container和一个sidecar container用于收集指标Paas:Nebula集群申请平台InfinityStones:运维
2、支撑平台Qconfig:配置中心SiteController:流量分发控制平台Shamu:集群管理平台VictoriaMetrics:时序数据库Grafana:监控告警平台https:/nebula-Nebula平台架构 隔离级别 集群内多Space租户单集群单Space租户隔离等级高,宿主机故障影响范围小运维较复杂,依赖外部调度资源利用率较低隔离等级低,Space之间存在资源竞争宿主机故障影响范围广运维简单,一次部署重复使用资源利用率高https:/nebula-单机房部署Nebula平台架构 部署策略适用于非核心应用优:多副本保障 集群内部节点不存在跨机房通信缺:机房级宕机导致服务不可用
3、与应用之间存在跨机房调用 三中心部署适用于核心应用优:多副本保障 数据强一致性 机房级容灾缺:集群内部节点跨机房通信导致性能损耗https:/nebula-跨域多活部署Nebula平台架构 部署策略适用于核心应用优:多副本保障 机房级容灾 集群内部节点不存在跨机房通信 应用可就近访问减少网络开销缺:集群间数据一致性需由应用端保证应用双写保证集群间数据一致性https:/nebula-Nebula平台架构 部署策略蓝绿部署三机房部署https:/nebula-Nebula客户端改造 读写分离面向IDC和访问策略构造nebulaPool,根据权重轮询访问,实现负载均衡读写分离,支持就近访问,减少网
4、络开销自动剔除故障节点,避免再次使用https:/nebula-Nebula客户端改造 分流、故障切换Qconfig注册集群配置配置修改热推送应用端SiteController自主修改访问路由https:/nebula-Nebula客户端改造 Session管理优化:SessionQueue实现Session数量和版本管理Borrow-and-return方式避免共用Session问题Session预热Session复用痛点:原生客户端多线程访问Session线程不安全Session过期或失效需用户自行处理https:/nebula-Nebula客户端改造 语句生成器封装MATCH p=(v:
5、playername:Tim Duncan,nickname:null,male:true)-*3-()RETURN p;声明式语言Cypher,nGQL优:类SQL风格,易上手缺:不易埋点监控过程式语句生成器封装,接入公司可观测平台Builder.match().path(p).vertex(v).hasTag(player).propertyV2(name,Tim Duncan,DataType.String().property(nickname,null,DataType.String().property(male,Boolean.TRUE.toString(),DataType.B
6、oolean().edge(,Direction.OUTGOING).pathLength(3).vertex().ret(p).build().showNGQL();https:/nebula-调优实践 国际机票拆票集群FRA-AWS 集群配置Graph 4c16g10g*8 t3.xlarge$0.185/hStorage 16c128g600g*7 r5ad.4xlarge$1.048/h现状:边写入QPS 2w+,边删除QPS 300-1000,宿主机利用率已达50%