只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
免费发布货源
新智货源网 > 餐饮行业新闻资讯 > 莆田鞋 >  sk潮鞋 莆田,百亿级存储+毫秒级写入!TDengine如何轻松玩转“潮鞋”APP? - 知乎


sk潮鞋 莆田,百亿级存储+毫秒级写入!TDengine如何轻松玩转“潮鞋”APP? - 知乎

发布时间:2022-01-22 00:15:07  来源:网络  浏览:   【】【】【

 要了解更多关于“sk潮鞋 莆田,百亿级存储+毫秒级写入!TDengine如何轻松玩转“潮鞋”APP? - 知乎”的问题请加客服微信号:1064879863 咨询。如果需要寻找各品牌运动鞋莆田鞋潮鞋也可以加客服微信号:1064879863 她会给您推荐有实力靠谱的莆田鞋厂家微信给您,厂家业务:实体批发,微商代理,一件代发货以及零售。

 

作者|导语:得物许多系统和场景都需要做流量的监控和防护,一天就能够产生数亿数据,写入速度达到万,该数据量级无法用传统的关系型数据库处理。在对比了,,等时序数据库的性能后,最终选择。背景作为一家互联网电商公司,得物有许多系统和场景都需要做流量的监控和防护,所以在深度定制化开源流控防护组件时我们加入了许多功能,帮助提升各业务系统的流控防护。

备注:组件地址:

://.//

在开发过程中,我们发现开源版本的不支持流控数据持久化,而我们非常需要这样的功能:我们需要一款数据库,它能够承载大量的流量监控数据,并能对数据进行存储和高效查询。

目前在生产环境中,我们有数百个业务系统数千台服务器接入了,如此产生的流控数据无疑非常庞大。那么对于这个需求来说,选择一款适合的数据库无疑极为重要,一个好的选择就能够达到事半功倍的效果。

数据库选型首先粗略估算一下当前数据量的理论上限:

目前生产环境拥有数千,而的监控数据时间粒度按照秒来统计,那么一天理论上就能够产生数亿的数据,理论写入数据的速度也将达到万,而且业务还在快速发展,可以预见的是数据量将会进一步爆炸,显而易见这个数据量级是无法使用传统关系数据库的。

因为内部有一些应用在使用,所以首先看了一下使用的可行性,但很快就放弃了,毕竟它作为一款分布式数据库,瞄准的完全不是监控数据这种时序特点非常强的场景。

排除之后我们就将调研重心放在了时序数据库上。

主流时序数据库里面都各有优缺点:

,可能是应用范围最广的时序数据库,场景也合适;但集群功能需要商业版。,基于,对于目前简单的需求来说太重了。,从找到的几份对比报告来看性能不太满足要求。当准备继续了解时,被同事安利了一款国产物联网大数据平台——。

简单在网上了解了一下,发现风评不错,社区活跃度也高,后来就到官网上查阅了和其它数据库的对比报告,发现从性能上看也非常优秀。

于是我们就写了一个,简单使用了一下,整个过程中,在清晰的文档的帮助之下,学习成本尚可,所以我们最终决定使用。

数据结构与建模方式数据结构数据结构首先我们看一下的流量数据是如何呈现的。

从上图中可以看出,左侧是应用列表,在每个应用的菜单中有独立的监控面板,在监控面板中又以资源的粒度,统计了所有资源的流量数据,例如通过拒绝响应时间等。

所以从前端呈现的角度来看,数据的唯一键应当是应用-资源。

然后我们在从内部实现角度看看数据的结构是怎么样的。

客户端在每台服务器上统计了所有资源的流量数据,以秒的维度进行聚合,再记录到本地日志中。控制台通过调用客户端暴露的接口,获取采集的流量数据,再以服务的维度,将所有单机的流量数据进行聚合,存储在内存中。

所以我们需要存储的数据即是以应用-资源为唯一属性落入数据库中的。

数据建模官方文档中建议的数据建模方式如下:

为充分利用其数据的时序性和其他数据特点,要求对每个数据采集点单独建表。采用一个数据采集点一张表的方式,能最大程度的保证单个数据采集点的插入和查询的性能是最优的。在的设计里,表用来代表一个具体的数据采集点,超级表用来代表一组相同类型的数据采集点集合。当为某个具体数据采集点创建表时,用户使用超级表的定义做模板,同时指定该具体采集点(表)的标签值。与传统的关系型数据库相比,表(一个数据采集点)是带有静态标签的,而且这些标签可以事后增加删除修改。一张超级表包含有多张表,这些表具有相同的时序数据,但带有不同的标签值。可以看到官方文档中建议的数据建模方式完全契合本场景的数据特点:一个应用-资源即为一张表,所有的应用-资源放在一张超级表中以便做聚合查询。所以在表结构的设计上,就使用了官方文档推荐的这种方式。

另外,在标签的选择上,虽然目前还没有聚合操作的需求,但是考虑到未来的聚合操作非常可能会以应用的维度来做,所以我们决定将一些应用的信息作为标签记录在表中。

整体架构目前的整体架构图如上,各个接入了的业务系统会向控制台定时发送心跳请求维持本机器的健康状态。

而控制台会定时轮询所有机器,拉取客户端在业务系统中记录的监控数据,经过聚合处理后再向集群批量写入。

由于场景简单且并非作为主要的监控系统,且数据目前是可以接受少量丢失,故没有设计过多的失败处理机制。

技术选型在选择上,公司的主要开发语言就是,相关生态也都更完善,所以很自然地选择了形式的。

另外的性能相较于方式也会更好一些,同时驱动还支持节点不可用时自动切换节点。

唯一不方便的是的方式则会强依赖本地库函数,需要在客户端的机器上也安装,这样在项目部署阶段会稍微麻烦一些,不过整体来说是利大于弊的。

最近,官方更新了-的方式,支持了跨平台功能。由于公司服务器的操作系统都是,没有跨平台的需求,所以还是继续使用-的。

数据库连接池与数据库连接池及框架也选择了在公司内部主流的+,根据官网的代码也能高效地完成接入。不过在的使用上,只是在查询时使用了,将转为更方便处理的实体,而写入数据时则没有使用,为了方便所以直接在内存中拼接好后进行执行。

总体来说,在适配主流框架方面很友好了,支持了等,并且根据官网提供的能够很快地实现接入,节省了大量时间,一些注意事项文档中都有清晰列出。

集群搭建目前集群有三个物理节点,均为核/内存/存储。

官方的集群搭建文档写的还是非常详尽的,直接按照文档进行傻瓜式操作就可以搭建起集群。

建库在前期调研时发现,假定集群只有三台机器,如果数据量过大,副本数为,相当于在每台机器上都存储了一份完整数据,以可能的数据量推测,存储和内存的压力都会较大,所以在建库时副本数选择设置为。后续若集群规模扩大,也支持动态修改副本数,可以很轻松地完成到高可用集群的切换。

另外考虑到查询性能,将设置为,设置为。

;性能表现目前承载了数百亿数据,在生产环境运行平稳,使用率日常不到%,内存使用率稳定在%以下。

下图为集群中的一台机器的监控图表:

在使用早期版本(...)做调研时,内存方面是存在一些缺陷的,但是随着版本迭代,目前看内存问题已经得到了较好的解决。

写入性能控制台的机器配置为核,批量写入线程池设置的最大核心线程数为,数据库连接池的最大线程数为,实际使用约。

写入流程如下:

对批量写入设置的最大写入条数为,写入耗时如下:

可以看到,大批量的写入,耗时基本也能保持在,属于比较理想的范围。目前还没有调整语句最大长度,后续可能通过增加语句长度的方式进一步优化写入性能。

查询性能以下的耗时均未包含网络开销等,数据来自在客户端上进行指定语句的查询。查询的超级表数据量级在百亿,以下给出了几个典型场景的耗时情况:

_函数:..._(*);查询单个应用+资源某五分钟的所有数据:...*&;=&#;--::&#;&;&#;--::&#;;查询单个应用+资源某小时内每分钟的平均通过:...(_)&;=&#;--::&#;&;&#;--::&#;();以服务维度分组查询一天内每两分钟的平均通过:...(_)&;=&#;--::&#;&;&#;--::&#;();值得一提的是,在...版本的中进行该查询效率在十几秒左右,当时认为是不可接受的,经过几个版本后优化效果显著;

以服务维度分组查询三天内每一小时的平均通过:...(_)&;=&#;--::&#;&;&#;--::&#;();不管是在大数据量范围的聚合查询,还是指定查询某一小区间内的全部数据,查询效率还是非常优异的。

并且与前期调研时的数据相比,新版本的查询性能优化了非常多,相信在未来的版本迭代中,会更进一步。

存储容量

目前的数据没有使用副本,全量数据分散在三台机器中,根据计算得知对于监控数据的压缩率达%,相当可观。

总结目前在得物暂时只是作为一款时序数据库小范围试点来使用,没有用到如流计算内置查询函数等一些高级功能,其作为时序数据库的读写性能存储表现都是令人满意的。除此之外在运维难度和学习成本上也是意想不到的低,很轻松就能搭好一套可用的集群,这也是非常巨大的一个优势。另外的版本迭代非常快,一些在旧版本遇到的问题很快就得到了修复,并且在性能优化方面效果也是十分显著。

在调研使用的这段时间,还有一个很重要的感受就是官方文档真的非常详尽,技术部分的文章深入浅出地讲解了的技术架构技术设计等,能够学习到非常多东西;指南类的文章则步骤清晰简单,极大地降低了学习成本,让开发人员能够很快地完成框架适配集群搭建编写等。

后续我们也会持续跟进的,了解有哪些新优化点等,在有必要的时候会进行版本升级。

期待的性能表现和稳定性能够不断提升,未来也会在其他合适的业务场景中作为技术选型的备选项之一,例如未来可能不仅需要存储聚合后的数据,可能还需要存储单机维度的流控数据。

注:本文数据基于...和...版本的。

用户评论用插入条数据花费了,请问一下这个速度能如何提升呢?

温馨提示:莆田鞋水很深而且骗子多,在网上随便找的微商很可能是骗子,比如微信支付不发货,货不对版不支持退换等常有发生,现在寻找一家可靠的莆田鞋厂家货源是一件非常困难的事情,为了解决这个问题我们建立一个叫”货源通“的平台,专门收录一些可靠真实莆田鞋厂家微信号免费分享给广大网民参考,这些厂家是经过我们站审核和缴纳一定广告费用,而且有买家购买过我们才推荐分享出来,还有每周会给每一位商家做评价,如果发现不诚信问题我们会第一时间公布给大家并且马上下架该商家的信息。货源通已经运营几年从没有发生过商家骗子事件,大部分商家已经和货源通合作几年之久,所以从货源通推荐的商家是可靠的。

建议您加本站客服微信号:1064879863 她会给你推荐可靠有实力的莆田鞋本地厂家微信号。

责任编辑:
相关评论我来说两句
© 新智货源网