快、更快,微信聚合平台升级
hi,我是AJay13,这是本次洞见微信聚合的半年升级内容介绍。
如果有师傅还在坚持✊用洞见微信聚合平台,近期一定会有这样的体验😤。
没错,就是数据加载太慢了,而且是越来越慢。
首页原来用的sql查询,在数据超过23万
后,查询的速度渐渐变慢了。但仅仅查文章、搜文章这两个接口变慢了。sql对于这种长数据、大数据、低性能服务器,查询成本太高,云上的sql服务器也太贵、一年4H8G
的数据库要一千多。
为什么忍了这么久呢?在之前我就已经优化了sql的配置、索引、读写分离、爬虫策略、服务器硬件的升级。我已经想象不出要怎么不花钱
地优化响应速度了(qiong)。
响应速度变慢的主要客观原因有两个:
- • 一方面是数据越来越多,十几G的数据塞在了一个
2H4G
的服务器中。 - • 另一方面固定早上9点后用的人逐渐增多,人多就更加慢了。
那么如何克服太慢的问题? 没错,放弃mysql的查询。
熟悉MySQL
的同学一定都知道,MySQL对于复杂条件查询的支持并不好。MySQL最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤。
上述这种处理复杂条件查询的方式因为只能通过一个索引进行过滤,所以需要进行大量的 I/O
操作来读取行数据,并消耗 CPU
进行内存过滤,导致查询性能的下降。
MySQL
有 B+
树索引,而 ElasticSearch
则是倒排索引 (Inverted Index),它通过倒排索引来实现比 MySQL
更快的过滤和复杂条件的查询。
ElasticSearch
使用 Burst-Trie
结构来实现 Term Index
,它是一种前缀树 Trie 的一种变种,它主要是将后缀进行了压缩,降低了Trie的高度,从而获取更好查询性能。term index
以树的形式缓存在内存中。从 term index
查到对应的 term dictionary
的 block
位置之后,再去磁盘上找 term,大大减少了磁盘的 random access
次数。对于较长的 posting list
也会使用 Frame Of Reference
进行压缩编码,减少了磁盘占用,减少了索引尺寸。为了减少内存缓存所消耗的内存空间大小,ElasticSearch
没有使用单纯的数组和bitset
来存储 posting list
,而是使用要压缩效率更高的 Roaring Bitmap
。
ElasticSearch
还会将一些查询条件对应的结果集 posting list
进行内存缓存,也就是所谓的 Filter Cache
,为了后续再次复用。
为什么不用mysql做全文搜索?
mysql做全文检索的话,查询速度会非常的慢,比如 %xxx%
所以在大数据量的情况下,用ES可以以前所未有的速度进行检索。
为什么Elasticsearch不适合做数据存储?
ES同时还是一个文档数据库,但并不能完全代替数据库,因为ES的核心是检索,没有用户验证和权限控制,无法多对多,MYSQL支持事务和访问权限控制,ES不支持事务和访问权限控制,虽然ElasticSearch 比 MySQL 更适合复杂条件查询,但是有好就有弊,ES为了查询做很多的准备工作,插入速度就会慢于 MySQL,而且数据存入ES后并不是立马就能检索到(可以配置,但会非常影响性能),所以在存储时使用mysql,而在搜索,统计时使用ES时一个非常棒的选择。
- • Mysql:擅长事务类型操作,可以确保数据的安全和一致性
- • Elasticsearch:擅长海量数据的搜索、分析、计算
面临 “搜素” 体积不断增大的问题,mysql并不能很好的解决,所以开始就“预见性”的使用ES进行部分数据的检索,不建议完全采用ES作为数据库,而是作为一个分布式搜索服务,和数据库配合使用,让其自动同步mysql数据库数据。
换新版首页
于是5.1考虑了下,就用es重写一遍原来的查询🔍。
现在查询效率有了很大的提升📈。
看下新版与旧版的对比🆚,还有更新了更多的功能。
VS | 旧版 | 新版 |
首次加载 | 最新文章 | 推荐文章 |
路由 | / | /new/ |
数据源 | mysql | elasticsearch |
延迟 | 700ms~8000ms | 400ms~2500ms |
并发量 | 30人同时在线 | 待测 |
数据同步 | 实时同步 | 延迟5-20分钟 |
搜索条件 | 局部搜索 | 全文搜索 |
搜索结果 | 精准、总量少 | 精准、总量多 |
数据限制 | 10篇/次 | 20篇/次 |
搜索语法 | 支持&| | 无 |
发文地区 | 无 | 支持 |
监控源 | 400个 | 790个 |
安全话题 | 无 | 支持 |
热点趋势分析 | 无 | 支持 |
公众号排行榜 | 无 | 支持 |
CVE漏洞图谱 | 无 | 支持 |
时间线 | 无 | 支持 |
全文搜索
在全文搜索中🔍,你可以更精准的找到你想要的内容,侧边栏做了对标题
、公众号
、发布时间
、文章属性
的聚合。
另外也完成了✅ 对话题
、发布地区
、CVE属性
的聚合。
安全话题
聚合了发文中所有的话题,可查看一个公众号
下所用到的所有话题
,或者查看某个话题
被哪些公众号
引用。
同时侧边栏做了对话题的统计,可以看到当天
、一周前
、一个月前
、一年前
用到的最多的话题有哪些。
热点趋势分析
参考百度指数
,可看到某个内容在过去一段时间内的讨论热度以及讨论趋势。
如近期爆发的Struts2
的相关漏洞,从4月13号
讨论热度突然增多。
排行榜
在排行榜中,可以看到近期活跃的公众号(洞见指数
的高低),原创榜单
、转载榜单
、发广告文章榜单
、推荐文章榜单
、阅读榜单
、点赞榜单
、在看榜单
。
CVE漏洞图谱
同安全话题
类似,将文章中的cve标签
过滤出来,然后在这里可以看到被讨论的CVE的数量,同时侧边栏做了对CVE的统计,可以看到当天
、一周前
、一个月前
、一年前
讨论的最多的CVE有哪些。
更多功能
在之后,会通过其他视角
👀 分析现有的数据,逐渐完善更多数据分析相关的功能。
最后,祝大家五一快乐,byebye
点击阅读原文,开始体验洞见微信聚合平台
原文始发于微信公众号(洞见网安):快、更快,微信聚合平台升级
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论