经典案例
凯发k8国际-凯发体育官网k8.com 网站优化

PB级内容协作平台的架构和技术选型案例全解析!

发布于:2019-12-11 13:50来源: 作者:

带宽优化

毛病阻隔

缓存

发布新特性

在存储方面,咱们开发了自己的存储体系和插件架构,能够支撑公共云存储,如 S3、GCS、Azure……

在元数据弹性方面,咱们改用 MySQL,并启用了分片。

在实时同步方面,咱们修改了同步算法,就像 Git 那样,让客户端接纳增量事情,并终究坚持与云端状况共同。

在发布新特性方面,咱们开发了一个自定义装备服务,供给了功用开关。这样就能够在睡觉形式下运转和搜集数据,用户能够自己启用新功用,或许由某个 POD 或某个数据中心为一群用户启用新功用。

还有很重要的一点是监控。假如没有监控数据,就无法进行优化。有时候,咱们监控的东西太多,以至于不知道该把要点放在哪里。所以,咱们不得不搬运注意力,运用其他东西来检测反常。

第一个版别:用 Lucene 索引文件元数据,把文件保存在 DRBD 中,经过 NFS 挂载,然后在 Lucene 中查找。问题:Lucene 的更新不是实时的,所以需求被替换掉。

第二个版别:用 Berkeley DB 保存文件元数据,把文件保存在 DRBD 中,经过 NFS 挂载,然后在 Lucene 中查找。问题:到达 NFS 的约束,需求被替换成 HTTP。

第三个版别:用 Berkeley DB 保存文件元数据,把文件保存在 EOS 中,经过 HTTP 衔接,然后在 Lucene 中查找。问题:在大流量压力下,启用了分片的 Berkeley DB 仍然会呈现瓶颈,并且一旦数据库发作溃散,需求几个小时才干康复,所以需求被替换掉。

第四个版别:用 MySQL 保存文件元数据,把文件保存在 EOS 中,经过 HTTP 衔接,然后在 Lucene 中查找。问题:公有云变得越来越廉价了。

第五个版别:用 MySQL 保存文件元数据,把文件保存在 EOS/GCS/S3/Azure 中,经过 HTTP 衔接,然后在 Lucene 中查找。问题:查找遇到瓶颈,需求被替换掉。

第六个版别:用 MySQL 保存文件元数据,把文件保存在 EOS/GCS/S3/Azure 中,经过 HTTP 衔接,然后在 Elasticsearch 中查找。这是现在的架构。

第七个版别:把一切的核算移到云端,拆分出更多的服务,完成毛病阻隔,运用动态资源池更好地办理资源。

关于服务间调用,咱们运用了指数回退,完成了回路断路器,防止呈现毛病雪崩。

中心服务节点资源运用了公正同享的分配方法,接纳到的恳求被打上标签并分组。每一组都有必定的容量,假设有一个客户每秒钟发送 1000 个恳求,其他客户每秒发送 10 个恳求,体系能够确保其他客户不会由于这个客户发送太多恳求而“挨饿”。这儿的窍门在于,当只要一个用户在运用体系时,它能够开足马力,跟着用户越来越多,它们能够同享容量。关于大客户,咱们创建了专门的资源池来确保共同的呼应时刻。

一些有 SLA 要求的中心服务运用了独自的 POD,确保不让坏客户影响了整个数据中心。

咱们运用了根据事情的同步机制,当服务器端发作了事情,事情被推送给桌面客户端,客户端在本地重放这些事情。

咱们采用了大规模数据过滤算法,让大集群的客户端与云端文件体系进行同步。

关于不同的问题,咱们运用了不同的缓存技能,包含:

传统的缓存技能。

简略的内存缓存,包含可变目标和大数据调集。

杂乱的内存缓存,比方高容量可变数据调集。

根据磁盘的缓存。

草创公司要把注意力放在中心技能才能上,假如遇到了技能难题,需求自己开发一些东西,那么就撸起袖子干吧。有许多东西能够学的,其间存储层、根据事情的同步机制最值得一看,更多细节能够参看:

https://www.egnyte.com/blog/2013/07/how-egnyte-implements-hybrid-object-stores-using-public-clouds-to-enhance-customer-experience/

tag标签:
------分隔线----------------------------
------分隔线----------------------------