方案是我针对目前系统设计的一些改进或者说"改动"(因为实际也带来了一些不方便和约束),去掉了涉及业务的细节,仅将能复用在其他一些较普遍应用的的大体思路提取出来,这个方案不会适用全部场景,但可以作为一种思路参考。
大型系统每天需要记录海量日志,以我目前服务的系统为例,大约每天忙时峰值就会记录200-300G日志,平时50-90G不等,忙/闲比大约1/4左右,而这些日志数据有时会被要求提供异地备份容灾的能力。
这么大量的数据采用通用的实时或者准实时备份方案,其最大的问题无疑在于log的同步成本上,并且每天这么大的disk消耗也使得磁盘紧缺和IO负载成为影响系统性能的重要因素。
根据需要,日志系统需要记录所有服务器发起的RMI操作以及这些操作得到的返回输出,这些输出99%都是基于XML的字符串,记录和记录之间结构相似度非常大。
下面是两种正交的思路:
1.对单条记录进行减肥,对XML采取重编码
由于所有的大尺寸的数据都是XML文本,所以可以考虑对XML进行瘦身,方式有二:
(1)直接压缩
之前的工程师尝试过在入库前对XML进行行压缩,但整体收效不大。因为大部分记录大小集中在1-2k,由于压缩需要保存一定容量的字典数据,小记录压缩反而得不偿失,大小在3,400字节以下的记录甚至会出现压缩后比原记录更大的情况,因此需要换别的思路进行改进。
(2)重编码
这个思路是对原始XML数据进行简单的数据替换,将长字符的tag替换成短tag。
XML的格式决定了XML的tag的冗余结构,因此可以考虑将XML转化成为JSON like的格式。需要注意的是,XML和JSON是否能完整无损的转化,这个是需要考虑的问题,比如namespace,node的attribute都需要考虑。
另外一种压缩途径是将XML中的tag长字符串替换成短的id字符串,然后关联到一个id-tag对应的map结构中,其具体思路如下图所示:
可以看到,其实这个思路本质上是类似数据仓库的星型模型的思想,对XML进行了重编码,抽取出dimension的词汇表,然后用字节更少的id来代替长的tag,所得到的是一个近似XML格式的非XML字符串(替换的部分已经不一定满足XML对tag的定义限制),而这个替换后的类XML串又可以转化成为冗余更少、尺寸更小的类JSON字符串。对简化后的JSON字符串如果再采取消除格式化所用的'\n'、'\t'、' ',然后再压缩则可以榨出最后一点空间。
编码的缺点在于需要编解码,词汇表需要在C和S端都必须可见。
对比RMI、CORBA与基于XML和HTTP协议的web Service调用,很容易发现,高效的RMI、CORBA因支持二进制层面的序列化导致性能的大幅度领先,而二进制流化也同时导致服务器和客户端都必须对于二进制的对象模型定义都必须同时理解可见,这是其缺点,但也可以说是其追求速度这一优点带来的副作用,这个方案的的局限性也比较类似,有得必有失。
如果考虑不同系统的互通,则词汇表和替换规则都需要统一管理,不能各自为政。这也会导致这个方案有相当的局限性。
2.列压缩
考虑到记录和记录之间相似度非常大,所以考虑采取按照列来压缩日志数据。
老的方案采用两个表log表和log_rest表,两个表都有operation和result的字段,两个表中 operation和result两个字段都为varchar类型,当operation或result数据长度超出varchar类型限制的4000时,会将超出部分放入log_rest表。
这个方案带来的副作用也是很明显的:
1.对基于SQL的ETL工具来说是个噩梦,解决方法,要么用非sql代码实现ETL,要么处理数据时转化成原始未压缩的临时表然后做ETL,做完再删除临时表。
2. 对于报表工具例如BO来说无法钻取到细节,因为这些工具还是以SQL为数据抓取手段,解决方法只能是自己做页面和数据钻取。
如果LOG功能本身就是以自实现的代码解决业务逻辑,不是完全依赖SQL,则这个方案会比较适用。
实际列压缩对于数字格式的列效果也通常很好,比如性能系统或者告警系统。
这些系统中列数据压缩比可以达到非常高,因为记录和记录之间冗余非常之大,而且这些系统往往是日产数据量极大的系统。
这些系统往往受限于磁盘消耗,只能保存1-2个月的历史数据,甚至大负载的系统只能保存10-20天的历史数据
每天的系统级备份和数据库热备以及类似dataguard这种同步备份使得磁盘消耗和IO负载都非常可观。
对于基于db实现的文件存储系统,列压缩同样可能非常有效,比如电子商务网站的图片,尤其是B2C和C2C的产品图片,相同商品的图片相似度非常高,还有不同商家同一商品的profile、名录这些数据,信息冗余程度很大。
这些数据在入库过程可以考虑通过相同的category信息,存入相同的chunk甚至数据块,这样可以最大限度将相似数据聚合在一起,使得压缩冗余数据的收益最大化。
因此如果没有特殊需求,可以通过这种列压缩极大降低db导致的系统磁盘消耗和IO负载,而带来的成本仅仅是日志处理系统的cpu消耗会提高,而这种会话无关的计算性纯cpu消耗是很容易通过简单的提供多点分布式服务扩缩来获得大量并行处理能力,做的更复杂就是提供独立的任务分发节点采用direct rooting方式进行任务分发。
简单的说,这是利用容易扩缩的cpu的并行能力来提升不易扩缩的db单点访问能力,通过同样大小的物理cache能提高几十倍的cache命中率,避免过多的随机IO寻道和磁盘IO吞吐。
对于那些基于sql的报表系统,则可以在钻取到最底层的fact表时,通过url携带下钻参数的方式定向到自实现的数据查询页面,而这个实现相对于分布式设计设计和存储消耗、调优成本来说并不大。
目前业余正在尝试使用这样的列压缩系统结合内存盘NoSQL与磁盘NoSQL组主备来管理国家级电信传输网Inventory数据,这样只需要G级的内存就能缓存千万到亿级的设备记录数提供实时Inventory 级联和拓扑分析服务,来替代网管系统传统靠数据库级的互相同步适配的方式来做集成。
相关推荐
【Windows7系统瘦身方案】 Windows 7操作系统在安装完成后,即使未安装任何应用程序,C盘的占用空间通常也会超过10GB。为了有效地利用硬盘空间,我们可以采取一系列措施来优化和瘦身系统,以下是一些实用的方法: ...
"CAD瘦身_源码"可能是一个程序或者脚本,用于实现这一目的。 "瘦身神器.LSP"可能是一个AutoLISP程序,这是AutoCAD中常用的编程语言,用于扩展AutoCAD的功能。LISP文件通常包含一系列的命令和函数,可以自动执行特定...
总的来说,360系统盘瘦身单独版是一个实用的系统维护工具,通过综合的清理、优化和管理功能,为用户提供了一站式的解决方案,使C盘保持在最佳状态,从而提高电脑的整体性能和用户体验。使用时,用户应按照提示谨慎...
【360系统盘瘦身独立版】是一款专为优化和清理电脑系统盘设计的轻量级工具,它从360安全卫士的核心功能中独立出来,为用户提供了一个无需安装的绿色版本。这款软件的主要目的是帮助用户释放系统磁盘空间,提高电脑...
标题中的“xp系统绿色瘦身软件”指的是针对Windows XP操作系统的一款优化工具,旨在减少系统占用的空间,提高运行效率,实现系统“减肥瘦身”。Windows XP是一款较早的微软操作系统,随着时间的推移,可能会积累大量...
【系统瘦身】是一个重要的计算机维护任务,特别是在现代操作系统中,随着时间的推移,系统盘往往会因为各种原因变得臃肿,占用大量硬盘空间。360系统盘瘦身独立版是一款专门针对这一问题设计的工具,旨在帮助用户...
综上所述,系统盘优化瘦身是一个多维度的过程,需要综合运用各种方法来提升电脑性能。通过上述操作,你不仅可以解决电脑卡顿的问题,还能延长电脑的使用寿命。记得定期进行这些维护,保持系统的最佳状态。
通过智能分析和深度扫描,360系统盘瘦身能够找出系统中的冗余文件、临时文件、系统垃圾以及无用的注册表项,并提供一键清理功能,以达到“瘦身”目的。 首先,我们来了解一下系统盘的重要性。在Windows操作系统中,...
标题中的“瘦身版_atheros_wifi_7.7.0.523_2kxp_ACU8.0.0.90”指的是一个优化过的、适用于Windows 2000和Windows XP操作系统的Atheros无线网卡驱动程序。这个版本的驱动程序经过精简,减少了不必要的文件和组件,以...
系统盘瘦身是解决现代计算机普遍存在的一个问题,即随着时间的推移,系统盘(通常为C盘)由于安装程序、更新、临时文件等积累,导致空间逐渐减少,影响系统性能。360系统盘瘦身独立版就是为了解决这一问题而设计的,...
【瘦身教程】LT18i瘦身指南_自带程序删除攻略
"win7瘦身工具"就是针对这一问题的专业解决方案,它能有效地清理这些冗余文件,帮助用户释放磁盘空间,从而提升系统运行效率。 首先,我们需要了解Windows 7中常见的系统垃圾类型。系统垃圾主要包括: 1. **系统还...
SVN删除版本_瘦身SVN删除版本_瘦身SVN删除版本_瘦身SVN删除版本_瘦身
win7优化大师 系统优化 系统清理 系统瘦身 WIN7下强大的工具。。。优于windows优化大师。。。
标题中的“winxp瘦身工具”指的是针对Windows XP操作系统的一种优化工具,它的主要目的是减少系统占用的硬盘空间,提高系统的运行速度。在Windows XP这个相对较老的操作系统中,随着时间的推移,用户安装的软件增多...
winsxs文件夹瘦身方法: vista,windows2008,windows7的许多系统组件(主要是动态库)被安装在windows\winsxs目录下, 但是,对于同一组件,由于升级以及其它原因,windows并没有删除低版本的同一组件。 所以这里的...
基于老Y文章系统2.4,减肥瘦身整站3034条数据。 主要是减肥瘦身的文章。现有文章数据3034条。 希望可以保留本站友情链接,感谢。 如要去掉,可打开数据库,找到LINK表,删除或者修改即可。 后台:adminn 密码:sdsd
2. 在维护选项中关闭错误报告,选择“从不检查解决方案”,确保不会频繁弹出错误报告提示。 二、启用 Administrator 管理员账户与禁用当前账户 1. 右键点击“计算机”->“管理”->“本地用户和组”,启用 ...