Bean Nuts Hazelnut Sauron Legion
Sauron - For Distributed Big Data Storage, Crawler & Query
索伦-面向分布式大数据存储、爬虫与查询

致敬:J.R.R.托尔金(魔戒), Howard Phillips Lovecraft(克苏鲁)

感谢: PaladinCorp(Contribute). ZY.L、JY.Y、JY.W、WJ.T、HX.D

免责声明:

本项目不提供、存储任何中华人民共和国法律禁止的资源、严格遵守版权法等约束(对于版权冲突的资料一概不公开),所有爬虫系统完全遵照Robots文件、相关协议的规定,不涉及任何非法数据集,IP池系统仅用于高速网络加速,不提供非法攻击使用!
本系统的爬虫引擎为基于原生C/C++、JAVA Aapache HTTPClient 编写的服务引擎,UA为”SauronSpider”.
系统的QPS最高可达1万QPS以上,平均100QPS(单IP节点每秒2请求 * 50),月吞吐流量可达40TB以上,如果有明确规则和协议,系统不会维持这个水平而按协议进行.
数据、源码公开声明,所有本项目开放部分都为GPL、GNU Free Documentation和部分Apache协议仅供交流、学习、学术使用,数据集如果采集自境外,开放部分会进行审查(不确保完整性),或不开源(如Chronicle[编年史]系列数据集采集每日国内外新闻网站快照这类政治敏感项目是不开放的)
Bean Nuts Digital Foundation保留所有权利

简介:

项目独立开发、搭建和运维的,使用C/C++、Java开发的分布式系统,自底向上、体系完备的,目前包括100TB数据量、8个物理机机组、30~50虚拟机/容器/进程/边缘设备集群、1000代理IP池集群。旨在面向高可用,高IOPS,QPS的百亿规模的分布式存储、爬虫、分布式查询系统。

索伦军团 (Sauron Legion)

Sauron Legion 指的是’索伦’项目,自底向上,从底层硬件系统到中层中间件再到顶层软件系统,整套完整链的全套基础设施、技术、硬件系统、软件系统等全部成员的集合,本节自底向上进行介绍。

1). Nuts Digtial Data Center (数字坚果数据中心)

数字坚果数据中心指的是物理上位于中华人民共和国境内、境外的全部数据、业务节点总和,集群采用完全动态、拓扑的逻辑结构,主要由核心网络和边缘网络共同构成,包括位于华南核心网络的湖南数据中心、深圳的数据中心,托管的各大云厂商中继节点、边缘节点、IP池代理节点,托管团队的非稳定链式边缘节点,其他动态的拓扑向量节点等。
1.1).Bean Nuts Digital Dragoon Clound & Servers (坚果云·龙骑士集群)
该部分隶属于坚果数据中心的核心网络,目前主要包含8个裸金属物理机节点、4个国内托管中继和内网穿透节点,采用VMWare、容器等方案进行虚拟化和服务划分,搭建的私人云原生系统,包含100TB现行动态数据、200~350TB冗余希捷、西数氦盘冷数据、NAS阵列。
1.2).Bean Nuts Digital Edgetron (坚果云·E创)
该部分隶属于坚果数据中心的边缘网络,目前主要包含若干个完全动态的边缘节点系统、负责辅助的真实代理、爬虫、IP池和流量缓冲。
1.3).Bean Nuts Digital Cashew Titan CDN (坚果云·泰坦CDN)
该部分隶属于坚果数据中心的核心网络,为豆子云网络系统的私有CDN加速系统,目前主要包含若4个中继节点的负载均衡加速系统,基于Pinecone、Nginx、HiChina DNS系统、内网穿透技术等。

2). Bean Skynet, Nuts Git (豆子云(天网)、坚果集线器)

该系统为JH.W和Nuts Digital Foundation的网站群,包含9个域名、若干子网站的统一管理逻辑系统,技术依赖私人搭建的域名链系统,基于Nginx、DNS CNAME技术搭建的一系列动态服务器IP系统的SaaS、PaaS、FaaS架构模组,可以快速部署CGI、FastCGI、PHP脚本等PaaS方案。基于容器、虚拟化、进程的Socket自动化反代正在研究中。

3). Nuts Digital Cthulhu Warehouse (克苏鲁数据仓库)

该系统为JH.W和Nuts Digital Foundation的海量大数据数据仓库(设计容量PB级别,目前动态数据100TB,冷备数据(含异地冷备)200TB),为坚果数据中心的底层存储系统,包含NLP类结构化数据(Text、JSON、XML/HTML等)、神经网络数据和视频、音频、软件/系统镜像等,物理层采用采用NVMe + SATA SSD + HDD + 内存冷热存储和阵列卡等技术,因为考虑成本和维护等因素,整体结构采用超级节点设计以维持节点间小文件和4K等高IOPS/QPS等操作,因此软件上对于小文件、小查询采用MySQL集群、NAS文件系统、虚拟机集群、Redis等相关技术方案作为软件存储系统,对于大型文件、归档文件采用Hadoop、NAS文件系统、对象存储相关技术设计。

4). Nuts Digital Cthulhu Xenomorph Database (克苏鲁·异型数据仓库/数据集)

Sauron项目使用的数据集是Cthulhu数据库的Xenomorph子集、专注于1000多个网站的NLP实体建模的Xenomarph和GPT3数据集(45TB),其数据选择的主要目的是关注准确性和广度,目前包括电影、音乐、游戏、图书、学术、新闻、医学、法律、金融等。例如,它包括超过100亿条数据记录、亿级小文件、来自世界各地的1亿首歌曲、1970年至2023年的学术论文。

5). Sauron Nonabyte, Nonaron/Nojaron (索伦Nonabyte/C++ Edition, Java Edition)

Sauron项目的大规模分布式爬虫引擎和系统

5.1. Bean Nuts Hazelnut Sauron Nonabyte C++ Edition[开源]:

索伦Nonabyte 分布式大规模爬虫系统 C++版本,支持进程、虚拟机、边缘设备四种集群系统和多种爬虫范式。
技术特征:
5.1.1 任务分配算法:采用页面分配算法(支持等额、伙伴分配[修改为分治法]),分治策略,无竞争,无锁,可能饥饿(伙伴法可以改善) ,采用类似Map/Reduce的策略进行数据批量处理,单节点基于进程池,多节点基于任务池。
5.1.2 分布式安全控制:基于Redis, 作为分布式锁,事件架构控制(缺点:可能出现饥饿,严重中心化设计,一旦中央节点出错,系统将直接宕机)。
5.1.3 网络、集群通信:RabbitMQ、WolfMC(直接二进制通信、基于Pinecone Socket),C++下基于异步的直接反射的统一控制器设计,支持多个信源的统一调度(类似Java doDispatch)。
5.1.4 其他技术特征:统一配置服务器(Master节点负责配置文件的渲染、重写、变量控制和调度,基于Almond DragonEL模板解释器),线程安全的日志管理器(基于Pinecone), 其他等。

5.2.Bean Nuts Hazelnut Sauron Nonabyte Java Edition[开源]:

索伦Nonabyte 分布式大规模爬虫系统 Java版本,支持进程、虚拟机、容器三种集群系统和多种爬虫范式。Java版本和C++技术上大致相似,但是不支持Master功能,所有Java节点都是Slave,这里主要阐述差异较大的部分。
技术特征:
5.2.1 任务分配算法:基于JUC的CAS类锁,采用无锁设计 + 竞争性信号量分配算法(抢占策略,高度竞争,无锁,线程调度和锁操作可能耗时)
5.2.2 网络、集群通信:RabbitMQ、WolfMC(直接二进制通信、基于Netty和NIO和Pincone,支持自定义负载均衡策略、支持策略模式和适配器对其修改),Java下基于异步的直接反射的统一控制器设计,支持多个信源的统一调度(类似Spring doDispatch)。
5.2.3 其他技术特征:设计了统一任务和控制模型,类似操作系统把可执行单元按:系统->进程->线程进行进一步划分和统一包装。
如某一大型分布式服务运行了RabbitMQ、HTTP消息控制、其他消息控制(如Socket通道)、异步控制器、异步分布式爬虫服务(>1e7)等,其中爬虫服务受多个控制器控制。这里进行如上模型包装,把不同必要子服务(含若干工作子线程)按“进程”打包,每个进程又隶属于若干进程组/系统(System)。支持级联控制,如通知、强制结束或重启一个进程,进程对应的所有线程都可以被安全关闭,而不影响当前应用的其他子服务。
其中进程和系统模型相当于一个可控线程池对线程进行包装,并支持类似任务管理器的查询、创建、结束、挂起等操作。

Author:undefined  Create time:2023-07-28 20:57
Last editor:zwk  Update time:2024-11-09 21:13