首页 文章 精选 留言 我的

精选列表

搜索[脑洞落地],共10000篇文章
优秀的个人博客,低调大师

百亿级存储+毫秒级写入:TDengine 在得物 APP 的落地实践

作者|Lynx 导语 :得物许多系统和场景都需要做流量的监控和防护,一天就能够产生数亿数据,写入速度达到万TPS,该数据量级无法用传统的关系型数据库处理。在对比了InfluxDB, OpenTSDB, Cassandra等时序数据库的性能后,最终选择 TDengine。 背景 作为一家互联网电商公司,得物有许多系统和场景都需要做流量的监控和防护,所以在深度定制化开源流控防护组件Sentinel时我们加入了许多功能,帮助提升各业务系统的流控防护。 备注:Sentinel组件地址: https://github.com/alibaba/Sentinel 在开发过程中,我们发现开源版本的Sentinel不支持流控数据持久化,而我们非常需要这样的功能:我们需要一款数据库,它能够承载大量的流量监控数据,并能对数据进行存储和高效查询。 目前在生产环境中,我们有数百个业务系统、数千台服务器接入了Sentinel,如此产生的流控数据无疑非常庞大。那么对于这个需求来说,选择一款适合的数据库无疑极为重要,一个好的选择就能够达到事半功倍的效果。 01 数据库选型 首先粗略估算一下当前数据量的理论上限: 目前生产环境拥有数千Sentinel Resources,而Sentinel的监控数据时间粒度按照秒来统计,那么一天理论上就能够产生 数亿 的数据, 理论写入数据的速度也将达到万TPS ,而且业务还在快速发展,可以预见的是数据量将会进一步爆炸,显而易见这个数据量级是无法使用传统关系数据库的。 因为内部有一些应用在使用TiDB,所以首先看了一下使用TiDB的可行性,但很快就放弃了,毕竟它作为一款分布式数据库,瞄准的完全不是监控数据这种时序特点非常强的场景。 排除之后我们就将调研重心放在了时序数据库上。 主流时序数据库里面都各有优缺点: InfluxDB,可能是应用范围最广的时序数据库,场景也合适;但集群功能需要商业版。 OpenTSDB,基于HBase,对于目前简单的需求来说太重了。 Cassandra,从找到的几份对比报告来看性能不太满足要求。 当准备继续了解Clickhouse时,被同事安利了一款 国产物联网大数据平台——TDengine 简单在网上了解了一下,发现风评不错,社区活跃度也高,后来就到官网上查阅了TDengine和其它数据库的对比报告,发现从性能上看也非常优秀。 于是我们就写了一个demo,简单使用了一下TDengine,整个过程中,在清晰的文档的帮助之下,学习成本尚可,所以我们最终决定使用TDengine。 02 数据结构与建模方式数据结构 数据结构 首先我们看一下Sentinel的流量数据是如何呈现的。 从上图中可以看出,左侧是应用列表,在每个应用的菜单中有独立的监控面板,在监控面板中又以资源的粒度,统计了所有资源的流量数据,例如通过QPS、拒绝QPS、响应时间等。 所以从前端呈现的角度来看,数据的唯一键应当是应用-资源。 然后我们在从内部实现角度看看数据的结构是怎么样的。 Sentinel客户端在每台服务器上统计了所有资源的流量数据,以秒的维度进行聚合,再记录到本地日志中。控制台通过调用客户端暴露的接口,获取采集的流量数据,再以服务的维度,将所有单机的流量数据进行聚合,存储在内存中。 所以我们需要存储的数据即是以应用-资源为唯一属性落入数据库中的。 数据建模 TDengine官方文档中建议的数据建模方式如下: 为充分利用其数据的时序性和其他数据特点,TDengine要求对 每个数据采集点单独建表 。 采用一个数据采集点一张表的方式,能最大程度的保证单个数据采集点的插入和查询的性能是最优的。 在TDengine的设计里, 表用来代表一个具体的数据采集点,超级表用来代表一组相同类型的数据采集点集合 。当为某个具体数据采集点创建表时,用户使用超级表的定义做模板,同时指定该具体采集点(表)的标签值。与传统的关系型数据库相比,表(一个数据采集点)是带有静态标签的,而且这些标签可以事后增加、删除、修改。 一张超级表包含有多张表,这些表具有相同的时序数据schema,但带有不同的标签值。 可以看到官方文档中建议的数据建模方式完全契合本场景的数据特点:一个应用-资源即为一张表,所有的应用-资源放在一张超级表中以便做聚合查询。所以在表结构的设计上,就使用了官方文档推荐的这种方式。 另外,在标签的选择上,虽然目前还没有聚合操作的需求,但是考虑到未来的聚合操作非常可能会以应用的维度来做,所以我们决定将一些应用的信息作为标签记录在表中。 03 整体架构 目前的整体架构图如上,各个接入了Sentinel的业务系统会向控制台定时发送心跳请求维持本机器的健康状态。 而控制台会定时轮询所有机器,拉取Sentinel客户端在业务系统中记录的监控数据,经过聚合处理后再向TDengine集群批量写入。 由于场景简单且并非作为主要的监控系统,且数据目前是可以接受少量丢失,故没有设计过多的失败处理机制。 04 技术选型 Connector 在Connector选择上,公司的主要开发语言就是Java,相关生态也都更完善,所以很自然地选择了 JDBC形式的Connector 。 另外JDBC的性能相较于HTTP方式也会更好一些,同时JDBC驱动还 支持节点不可用时自动切换节点 。 唯一不方便的是JDBC的方式则会 强依赖本地库函数 ,需要在客户端的机器上也安装TDengine,这样在项目部署阶段会稍微麻烦一些,不过整体来说是利大于弊的。 最近,官方更新了JDBC-RESTful的方式, 支持了跨平台功能。 由于公司服务器的操作系统都是Linux,没有跨平台的需求,所以还是继续使用JDBC-JNI的Connector。 数据库连接池与ORM 数据库连接池及ORM框架也选择了在公司内部主流的 Druid+Mybatis ,根据官网的Demo代码也能高效地完成接入。不过在Mybatis的使用上,只是在查询时使用了Mybatis,将ResultSet转为更方便处理的实体,而写入数据时则没有使用Mybatis,为了方便所以直接在内存中拼接好sql后进行执行。 总体来说,TDengine在适配主流框架方面很友好了,支持了 HikariCP、Druid、Spring JdbcTemplate、Mybatis 等,并且根据官网提供的Demo能够很快地实现接入,节省了大量时间,一些注意事项文档中都有清晰列出。 集群搭建 目前TDengine集群有三个物理节点,均为16核/64G内存/1T存储。 官方的集群搭建文档写的还是非常详尽的,直接按照文档进行傻瓜式操作就可以搭建起TDengine集群。 建库 在前期调研时发现,假定集群只有三台机器,如果数据量过大,副本数为3,相当于在每台机器上都存储了一份完整数据,以可能的数据量推测,存储和内存的压力都会较大,所以在建库时副本数选择设置为1。后续若集群规模扩大,TDengine也支持动态修改副本数,可以很轻松地完成到高可用集群的切换。 另外考虑到查询性能,将 blocks 设置为16, cache 设置为64MB。 CREATE DATABASE sentinel KEEP 365 DAYS 1 blocks 16 cache 64; 05 性能表现 目前TDengine承载了数百亿数据,在生产环境运行平稳,CPU使用率日常不到1%,内存使用率稳定在25%以下。 下图为集群中的一台机器的监控图表: 在使用早期TDengine版本(2.0.7.0)做调研时,内存方面是存在一些缺陷的,但是随着版本迭代,目前看内存问题已经得到了较好的解决。 写入性能 控制台的机器配置为4核16G,批量写入线程池设置的最大核心线程数为16,数据库连接池的最大线程数为20,实际使用约14。 写入流程如下: 对批量写入设置的最大写入条数为400,写入耗时如下: 可以看到,大批量的写入,耗时基本也能保持在10ms,属于比较理想的范围。目前还没有调整SQL语句最大长度,后续可能通过增加SQL语句长度的方式进一步优化写入性能。 查询性能 以下的耗时均未包含网络开销等,数据来自在客户端上进行指定SQL语句的查询。查询的超级表数据量级在百亿,以下给出了几个典型场景的耗时情况: last_row函数:8.6ms 8.8ms 5.6ms select last_row(*) from stable; 查询单个应用+资源某五分钟的所有数据:3.4ms 3.3ms 3.3ms select * from table where ts >= '2021-01-01 19:00:00' and ts < '2021-01-01 19:05:00'; 查询单个应用+资源某3小时内每2分钟的平均通过qps:1.4ms 1.3ms 1.4ms select avg(pass_qps) from table where ts >= '2021-01-01 19:00:00' and ts < '2021-01-01 22:00:00' interval (2m); 以服务维度分组查询一天内每两分钟的平均通过qps:2.34s 2.34s 2.35s select avg(pass_qps) from stable where ts >= '2021-01-01 00:00:00' and ts < '2021-01-02 00:00:00' interval (2m) group by appid; 值得一提的是,在2.0.7.0版本的TDengine中进行该查询效率在十几秒左右,当时认为是不可接受的,经过几个版本后优化效果显著; 以服务维度分组查询三天内每一小时的平均通过qps:2.17s 2.16s 2.17s select avg(pass_qps) from stable where ts >= '2021-01-01 00:00:00' and ts < '2021-01-03 00:00:00' interval (60m) group by appid; 不管是在大数据量范围的聚合查询,还是指定查询某一小区间内的全部数据,查询效率还是非常优异的。 并且与前期调研时的数据相比,新版本的查询性能优化了非常多,相信在未来的版本迭代中,会更进一步。 存储容量 目前Sentinel的数据没有使用副本,全量数据分散在三台机器中,根据计算得知TDengine对于Sentinel监控数据的压缩率达10%,相当可观。 06 总结 目前TDengine在得物暂时只是作为一款时序数据库小范围试点来使用,没有用到如流计算、内置查询函数等一些高级功能,其作为时序数据库的读写性能、存储表现都是令人满意的。 除此之外在运维难度和学习成本上也是意想不到的低,很轻松就能搭好一套可用的集群,这也是非常巨大的一个优势。另外TDengine的版本迭代非常快,一些在旧版本遇到的问题很快就得到了修复,并且在性能优化方面效果也是十分显著。 在调研、使用TDengine的这段时间,还有一个很重要的感受就是官方文档真的非常详尽,技术部分的文章深入浅出地讲解了TDengine的技术架构、技术设计等,能够学习到非常多东西;指南类的文章则步骤清晰简单,极大地降低了学习成本,让开发人员能够很快地完成框架适配、集群搭建、SQL编写等。 后续我们也会持续跟进TDengine的release notes,了解有哪些新featrue、优化点、bug fix等,在有必要的时候会进行版本升级。 期待TDengine的性能表现和稳定性能够不断提升,未来也会在其他合适的业务场景中作为技术选型的备选项之一,例如未来可能不仅需要存储聚合后的数据,可能还需要存储单机维度的流控数据。 注:本文数据基于2.0.7.0和2.0.12.1版本的TDengine。

优秀的个人博客,低调大师

阿里深度学习的“金刚钻”——千亿特征XNN算法及其落地实践

摘要:随着十二点的钟声响起,无数人盯着购物车开启了一年一度的“剁手”之旅。可你有没有想过这购物狂欢的背后是什么支撑起了数据规模如此庞大的计算任务?其实不只是“双十一”,每一个用户的点击和浏览,每一件宝贝的排序和推荐,还有贴心的“猜你喜欢”,在这背后“操控”一切的“手”又是什么?本文将带领大家一探究竟。 本期直播精彩回顾, 戳这里! 演讲嘉宾简介: 范朝盛(花名:朝圣),阿里巴巴搜索事业部算法专家,北京大学数学与计算机科学博士,2016年加入阿里巴巴,现主要从事推荐系统特征、模型、架构和大规模机器学习框架的研发工作。 以下内容根据演讲嘉宾视频分享以及PPT整理而成。 本次分享的主要围绕以下三个方面: 一.业务背景 二.XPS机器学习平台 三.XNN深度学习算法 一.业务背景 ·业务场景和机器学习的问题 业务场景主要包括三个方面: (1)搜索:比如用户在淘宝中

优秀的个人博客,低调大师

客服是人工智能落地的黄金场景(智能服务圆桌现场实录)

几乎所有人都看好人工智能的前景,却有很多人看不清人工智能的现在。10月12日,杭州云栖大会上,一场“为客户服务插上AI之翼”智能服务的圆桌吸引了众多参会者的关注和热议。圆桌嘉宾不仅有来自阿里系的几大人工智能客服产品——阿里云云博士、淘宝淘小蜜、蚂蚁金服小蚂答的核心负责人,还有智能客服领域耕耘多年的创业公司小能客服的CTO、智齿客服的联合创始人。圆桌探讨了智能客服的技术和商业现状、未来的发展方向和机会点,嘉宾们认为客服领域的场景路径相对明确的特征,决定了可基于全量数据进行高并发需求处理人工智能在客服领域大有可为,虽然现在在算法上、语料上,以及使用者对智能的接受度上离替代人工还有很长一段路要走,但是都对智能客服的前景充满了信心。 以下为圆桌访谈实录:主持人:非常有幸能和大家在这里开展智能客服的探讨。请大家先介绍一下自己的智能客服产品吧。

优秀的个人博客,低调大师

影响百万人就业、价值6万亿的“大生意”是这样落地的

“一台数控机床一毫秒产生的有价值的数据可以达到10GB,在以前,由于技术所限,这些数据都被浪费了。现在,云计算、物联网、大数据等技术为智能制造提供了新的技术平台,它的意义就在于让原来看不到的数据能看到,原来无关联的数据能关联。”武汉华中数控股份有限公司董事长陈吉红认为工业4.0并不是新瓶装旧酒,云计算、物联网、大数据等技术将最大限度地挖掘企业数据的价值。 12月15日,阿里云栖大会惠州站,阿里云和华中数控宣布,双方将在云计算、大数据、物联网等领域工作规划与实施方面开展合作,推动制造装备从“数控一代”向“智能一代”升级,贯彻“中国制造2025”战略。 据悉,华中数控通过工业云服务系统,将数控设备接入云服务系统,实现智能应用,进行健康诊断分析,深入挖掘机床的性能、可靠性、利用率提升。双方还将积极推动工业云的工业设备网络通信标准设立,建立云设备的数据模型、应用模型、在线接入等国家及行业标准。 一笔价值6万亿的“大生意” 回头看一下近现代人类社会的发展历史,每一次社会经济实现跨越式的发展都是因为人类创造了颠覆性的技术和产品,从蒸汽机、电力、核能,再到现在的信息技术,无一例外。 2015年5月,国务院印发中国制造强国战略的第一个十年行动纲领《中国制造2025》,提出要促进云计算、大数据在制造企业研发设计、生产制造、经营管理、销售服务等全流程和全产业链的综合集成应用,到2025年实现制造业重点领域全面实现智能化、产品生产周期缩短50%,不良品率降低50%。这些指导政策的目的,也不外乎是利用新技术实现制造企业的转型变革。 智能制造、“工业4.0”能给中国制造业带来哪些契机?近日,波士顿咨询在名为《工业4.0——未来生产力和制造业发展前景》的报告中指出,工业4.0新技术将使中国企业的生产效率提升高达25%,由此可额外创造6万亿元的附加值,并影响上百万从业人员的工作。 报告指出,在中国,工业4.0带来的收益主要体现在生产效率提升上,在未来5至10年间,工业4.0将彻底变革产品和生产系统的设计、制造、运营和服务流程。零部件、机器和人员之间的互联互通性日益加强,由此生产系统的速度和效率分别能提升30%和25%。 按照波士顿咨询所说,这是一笔价值6万亿的“大生意”,当然,这个6万亿其实只是工业4.0第一个阶段智能生产所实现的,事实上,工业4.0要做的是将产品数据、设备数据、研发数据、工业链数据、运营数据、管理数据、销售数据、消费者数据,使人与人、人与机器、机器与机器、以及服务与服务之间,能够形成一个互联,从而实现横向、纵向和端到端的高度集成。 阿里云副总裁喻思成表示:“下一步,阿里云将用大数据、AI技术协助企业分析生产过程中的全链路数据,实现生产效率提高、库存周转率提高、设备使用效率提升等目标。” 新制造更快、更准、更聪明 一直以来,云计算存在的目标就是让计算资源像自来水一样随需取用,而最直接的功用则体现在IT基础设施的低成本快速构建上。喻思成表示,和以往的方式相比,IT基础设施的构建从以年为计算单位到以秒为计算单位,企业可以在10分钟以内通过线上支付的方式将1万台服务器的基础设施准备就绪。并且,从线下到线上,企业构建基础设施的成本被大大降低了。 除此之外,喻思成还指出,企业的基础架构云化后,将彻底改变传统企业烟囱式的IT架构。此次大会上,比亚迪集团的CIO裘彦亦分享了汽车行业如何利用云计算、人工智能来提升生产效率。裘彦表示,比亚迪集团的云上制造包括办公(设计)云、生产运营云、数据云、车联网和物联网,通过将制造云化实现业务流程和IT系统的整合,实现生产计划、供需、产销以及品质等四个方面的协同,实现软硬件、IT系统、数据中心、数据灾备等资源的统一规划管理。 “制造云化将打破旧有的烟囱式架构,实现包括数据库、各种应用、监控等所有的资源的共享。目前,我们已经将阿里云专有云架构搭建好了,明年开始,我们会尝试将传统的制造系统逐步迁移到云上。”裘彦介绍道。 当然,这还远不能体现出阿里云在制造业转型过程中发挥的效用。会上阿里云表示将为制造业提供人工智能ET,让厂房里的制造机器以及制造出来的产品也具备ET大脑,通过公共云的普惠计算能力以及物联网技术方案,协助制造业实现关键工序智能化、生产过程智能优化控制等方面的转型升级。 目前,全球硅片产能最大的企业协鑫集团已经在使用阿里云的大数据人工智能技术,对光伏切片生产过程中的数千个生产参数进行数据分析,寻找提高良品率的关键性因素。对光伏企业来说,良品率是盈利的关键,良品率每提高千分之一点,就可以节省上千万的生产成本。吉利汽车也在利用阿里云的大数据人工智能技术,设计更符合用户“口味”的产品和服务,未来这一项目还将成长为“吉利大脑”,让吉利可以对市场、研发、制造做实时决策。 除此之外,阿里云还致力于帮助更多中小型制造企业,为企业内部实现快速创新提供了基础。继今年5月,阿里云与徐工集团共同搭建国内首个“工业云”平台之后,华中数控也将基于在数控系统、工业机器人、智能装备等智能终端设备智能生产线的行业应用技术优势,聚焦基于工业云的大数据智能应用平台,服务其他中小制造型企业,并建立数控加工设备租赁服务、资源共享服务、高级数控操作维修人员人才服务共享平台等。 原文发布时间为:2016年12月16日 本文作者:作者:赵东 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册