华为云服务器【干货分享】华为云多模数据库GeminiDB架构与应用实践直播问答实录_云淘科技
多模数据库作为一种新兴的数据管理解决方案,正在受到越来越多的关注。而华为云多模数据库GeminiDB基于云原生数据库优势,让企业应用更智能、更高效。前几日,华为云NoSQL数据库研发总监余汶龙通过直播(链接见文末)的方式,分享了《华为云多模数据库GeminiDB的技术架构及应用实践》,对GeminiDB的技术特性、架构优势等进行了全方位解读。整场直播干货满满,让观众们直呼过瘾,并且积极提问,展开了深入交流。小编将大家关心的问题进行了整理,一起来看看吧!
GeminiDB通用问题
问:GeminiDB的计算和存储是完全分离的吗?
答:GeminiDB的计算节点和存储节点完全分离,通过RDMA高速网络实现互通。
问:如果n个节点都故障了,有什么应对方案吗?
答:如果采用GeminiDB跨Region双活方案,可以将流量从故障的主实例秒级切换至正常的备实例,实现业务的连续性访问。此外,还可以使用备份恢复到新实例能力,使用备份数据快速重建实例。
问:计算的算力可以水平扩展吗?
答:GeminiDB计算节点支持水平扩展和垂直扩展,即:既可通过变更计算节点CPU和内存规格提高每个节点的负载能力,又可以通过添加集群节点的方式提高集群负载上限。
问:多模数据库,是GeminiDB会提供多个引擎的统一入口吗?
答:目前GeminiDB以生态兼容为主,目前支持Redis,MongoDB,Cassandra,DynamoDB,InfluxDB五大生态协议的100%兼容,助力客户无缝、“0”改造搬迁。后期计划推出自有生态协议,给开发者和客户提供更多多模融合功能,让多模数据可以更加紧密地衔接和关联。
问:支持多模数据库的场景,是支持多模并发吗?还是说一次只能支持一个类型的数据库?
答:GeminiDB是多模数据库,一库具备多种数据模型引擎,可以自由组合,这些多模引擎共享存储资源和管理资源等,支持业务侧进行多模并发处理。
问:不同数据模型的数据之间怎么实现交互,比如文档数据和KV数据可以一起处理和使用吗?
答:目前公有云GeminiDB Cassandra接口开放了宽表模型数据和搜索引擎协同处理和使用,提供强大的全文检索,复杂索引等能力。其他数据模型交互和协同处理会在后期逐步开放给开发者和客户使用。
问:GeminiDB存算分离后,是怎么解决跨主机通信网络时延的?
答:采用RDMA技术,允许用户程序绕过操作系统内核,直接和网卡交互进行网络通信,从而提供高带宽和极小时延。
问:GeminiDB适合哪些应用场景?
答:GeminiDB目前兼容Cassandra、MongoDB、InfluxDB、Redis和DynamoDB主流NoSQL接口,并提供高读写性能,具有高性价比,适用于IoT、气象、互联网、游戏等领域。
问:GeminiDB和GaussDB有哪些不同?
答:GaussDB是华为自主创新研发的分布式关系型数据库,GeminiDB与GaussDB在云计算平台高性能、高可用、高可靠、高安全、可弹性伸缩的基础上,提供了一键部署、备份恢复、监控报警等服务能力。区别在于,GeminiDB是一款基于计算存储分离架构的分布式多模数据库,关注点主要在非关系型数据(即NoSQL)领域。
问:GeminiDB对于故障节点数据是怎么处理的?
答:在存算分离的架构中,计算节点只负责数据的解析和cache,不存储具体数据,因此在计算节点发生故障时,其他节点自动接管对应流量,无需进行数据搬迁。
问:对于文件,直接把内容存储在数据库中,还是存储文件路径,然后把文件存在服务器?
答:存算分离架构从物理布局上有计算服务器和存储服务器。计算服务器部署数据库服务,存储服务器负责持久化。文件被数据库服务进行处理,具体内容是存在存储服务器的。
问:支持自动备份数据到华为云OBS吗?
答:GeminiDB支持自动备份数据到华为云OBS,GeminiDB现在的自动备份的数据都是上传到我们OBS的,而且GeminiDB还支持客户手动备份、增备和差异备份功能,这些功能备份后的数据都是上传到OBS的,实现了高性能、高可用、高可靠、高安全等特性。
问:GeminiDB有没有提供加密存储方案,或者如何保护数据安全?
答:GeminiDB提供加密功能,用户创建数据库实例成功后,磁盘数据会在服务端加密成密文后存储。用户查询加密对象时,存储的密文会先在服务端解密为明文,再提供给用户,钥使用KMS服务由客户进行管理。
问:请问目前在空间能力上有什么优势吗?
答:
编码格式进行极致设计,降低冗余信息;
存储侧自动进行垃圾回收,释放无效存储空间;
采用新一代无损压缩算法,压缩率高,可有效降低存储空间。
问:共享的存储池中修改元数据路由信息怎么保持一致性?
答:采用共享方案后,确保一致性确实一个十分重要的技术难点,这个问题可以换个角度来思考:如何避免双写。GeminiDB是分布式架构,每个节点都可读可写,每个节点负责一部分数据,为了保证不同节点无法访问同一份数据,采用两种机制来避免双写:
文件租约,访问对应数据之前必须要有相应租约,数据若被另一个节点接管,则需要先进行租约回收,确保原有节点无法继续操作数据;
文件持久后按照大小进行拆分,这个拆分的单元对应到存储侧是一个对象,这个对象除了支持读写接口之外,还提供一个拒写接口,一旦调用该接口后,其他客户端则无法写入。
问:GeminiDB怎么应对DDOS, 原理是什么?
答:客户应用在不需要通过公网访问的场景下,GeminiDB使用华为云VPC提供内网访问,无法从公网访问,这种场景下无需担心DDOS。如果客户应用需要通过公网访问GeminiDB,GeminiDB可以通过华为云统一Anti-DDoS服务对GeminiDB绑定的公网ip或ELB进行公网流量防护,无需担心DDOS攻击。
问:开启备份,是否会影响性能?
答:开启备份不会影响性能,我们的备份服务是基于快照的方式进行的,持续时间为毫秒级,之后由管控服务将备份文件上传至OBS,对性能影响可以忽略不计。
GeminiDB Redis接口
问:GeminiDB键值引擎相比开源Redis都增加了哪些的特性?
答:首先,GeminiDB Redis接口支持秒级无感扩容,且可配置自动扩容策略,无需人工干预。其次,针对广告和推荐业务,GeminiDB Redis接口提供Fastload特征灌库功能,解决业务灌库耗时久痛点。在游戏行业,使用GeminiDB Redis接口的业务,可以在发版失败时一键原地回档,将损失降到最低。此外,GeminiDB Redis接口还支持业务为Hash field设置过期时间,该特性是精准营销频控业务的刚需诉求。
GeminiDB DynamoDB接口
问:怎么购买DynamoDB接口?
答:DynamoDB接口目前购买入口与GeminiDB Cassandra接口相同,在GeminiDB统一购买页面进入,选在Cassandra接口即可:
https://www.huaweicloud.com/product/geminidb.html
购买前需要联系客服,后台会打开DynamoDB接口开关。
问:DynamoDB迁移要做什么改造吗?
答:GeminiDB DynamoDB接口100%兼容DynamoDB协议和数据模型,并实现了关键特性全面对标,客户从AWS DynamoDB迁移至GeminiDB DynamoDB接口不需要做任何改造。
GeminiDB Cassandra接口
问:Cassandra接口支持原地数据闪回了吗?
答:Cassandra接口最新版本是支持原地数据闪回的,支持实例级别和表级别的闪回。
问:流表中的数据可以保存多久?
答:流表默认可以保存24个小时,支持动态调整。
GeminiDB Influx接口
问:有哪几种设置冷热数据的方法?
答:GeminiDB Influx接口支持冷热数据分层存储,以降低使用成本,该功能做到业务层不感知;冷热数据分层可以通过保留策略来设置,在创建保留策略时可以指定热数据的时间,到时间后系统会自动将数据转冷,具体可参考官方网站:https://support.huaweicloud.com/influxug-nosql/nosql_05_0154.html
问:和openGemini有什么区别?有什么优势?
答:openGemini是GeminiDB多模引擎中Influx接口的开源版本,相比openGemini,GeminiDB不仅支持时序引擎,还支持Mongo,Redis,Cassandra,Dynamo等多种其他引擎。
问:OpenTSDB如何迁移到GeminiDB?迁移后性能提升多少?
答:OpenTSDB可以通过迁移工具迁移到GeminiDB,迁移后数据压缩率和读写性能都有明显的提升;根据我们对某个真实业务的改造结果来看,其中数据大小可以减少10倍,查询性能提升5倍以上,写入性能提升10倍以上。
问:GeminiDB怎么自动区分冷热数据?
答:GeminiDB Influx接口支持冷热数据分层存储,以降低使用成本;区分冷热数据主要通过时间,根据业务需求,设置好热数据时间,时间到了系统会自动将数据转冷。
GeminiDB Mongo接口
问:与MongoDB接口兼容性怎么样呢?
答:当前GeminiDB Mongo接口完全兼容对应版本的MongoDB接口。
问:MongoDB自建推荐怎么迁移上云?MongoDB怎么迁移到GeminiDB?
答:通过DRS(数据迁移服务)可以实时同步到云上GeminiDB。
问:Mongo接口部分,说可用性容忍N-1个节点故障,想请问一下如果是primary节点挂掉,GeminiDB是怎么处理的呢?
答:GeminiDB N个节点之间会每两秒检测一次心跳,当其他节点在2秒间隔发现主节点挂掉后,会发生一个毫秒级的failover,备节点进行升主。
问:最多支持多少节点的副本集?
答:GeminiDB Mongo接口当前最多支持16节点(1写15读)的副本集。
问:GeminiDB Mongo和DDS都是NoSQL的文档数据库,推荐什么场景下使用GeminiDB,什么场景下用DDS?
答:
GeminiDB Mongo接口采用了多节点共享存储的架构,主备之间无需同步。
DDS每个节点使用单独的ECS,EVS进行部署,节点之间通过oplog进行同步。
从高可用角度,DDS略占优,从主备延迟性,资源利用率角度,GeminiDB更占优。此外,GeminiDB和DDS价格上也存在差异,如果对价格敏感也可以进行按需选择。
问:Secondary节点的个数变多是否会影响Primary节点的写性能?
答:如果客户端配置了 writeConcern=majority,每次写操作都会确保写入大多数节点才能返回,可能会影响写性能,其他场景下,Secondary节点变多不会影响Primary节点的写性能。
问:怎么判断只读节点上的Memtable什么时候该丢弃?
答:只读节点只能处理读请求,不能进行写入,所以不会存在Memtable。备机上其他的缓存,大致上基于LRU策略进行淘汰。
文章来源:华为云社区