Giter Site home page Giter Site logo

dragonsprime / hydra Goto Github PK

View Code? Open in Web Editor NEW
52.0 2.0 2.0 12.19 MB

Hydra九头龙,保姆级为您打造属于您的造跨平台TB-PB级别专属搜索引擎、专属上帝之眼。Hydra-面向云计算、多任务调度、MapReduce、通信、数仓、服务化、抽象化分布式操作系统——以实现小型爬虫搜索引擎为例。

Home Page: https://www.nutsky.com

License: MIT License

Java 99.99% Batchfile 0.01%
bigdata cloud crawler datawarehouse distributed-systems mapreduce

hydra's Introduction

Bean Nuts Acorn Hydra<Beta V2.1> (九头龙,分布式操作系统)

事务编排, 多域配置, 自定义线程进程模型, 任务编排管理器, 自定义文件系统, 抽象化部署模式和抽象云部署, 高性能RPC, 爬虫,搜索引擎,大数据处理,数据仓库,云计算

简体中文文档 Update Log github stars github stars

简体中文 | English[TODO] | Nuts Projects | DragonKing | Red Nest

文档(持续增量更新): https://docs.nutsky.com/docs/hazelnut_sauron_zh_cn | 真实集群搭建过程: https://zhuanlan.zhihu.com/p/634851956

📖 Abstract

Would you like to own the "God Eyes"? Do you crave power? Do you wish to wield all information at your fingertips? Now, data is all you need!

Hydra + Radium fulfills your dreams, creating a data "Elder Brain" specifically for "TJ" individuals, 'all information all I need'. We build a unique personal TB-PB level data warehouse and search engine just for you, your exclusive "God Eyes" !

Hydra is a cloud computing-oriented, multi-task scheduling, MapReduce, communication, service-oriented, which is the distributed operating system.

📖 摘要 / 简介

你想拥有‘上帝之眼’吗?你渴望力量吗?你希望一切信息尽在掌控吗?这个时代,数据即使世界!

Hydra + Radium 成就你的梦想,专为"TJ"人打造的数据“主脑”,一切信息尽在掌握之中。为你打造独一无二的的个人TB-PB级数仓和搜索引擎,你的专属'上帝之眼',一切数据为所欲为!

简易和多种部署模式,不一定非要Linux!不一定非要K8S!不一定非要Hadoop!集成统一的丐版配置也能玩转TB-PB级数据。

不会集群?不会中间件?不会分布式?不会云计算?我是小白?Don`t worry,持续更新的保姆级教程和实例最小系统,系统可大可小,丐版技术也能玩转云和大数据。

什么是 Hydra,他能干嘛?

Hydra 是由 DragonKing(undefined) 和其团队原创的,面向跨平台PB级别云计算、数据仓库、多任务调度、MapReduce、通信、服务化、抽象化分布式操作系统。

  1. 支持统一高度抽象化的任务、事务、服务等编排,一套接口,可分级、可本地、可集群。
  2. 可多级、可嵌套的编排系统,支持配置域管理、复杂配置动态解耦、可继承和重写的多域配置管理。
  3. 可事务化抽象进程、线程模型,让远端服务通过RPC或通信组件通过一套接口,像本地进程一样进行统一管理。
  4. 可事务图化编排方法论设计,就像TensorFlow,更抽象简单的服务、任务设计模式。事务和任务编排支持序列和并行两种模式,更支持性能模式。确保事务绝对执行、回滚、性能执行、并行等多种范式。
  5. 面向统一解释器模式方法论和过程化设计,事务和任务编排逻辑化,支持循环控制、条件控制、散转控制、原子化等。
  6. 抽象统一任务管理器体系,统一生命周期设计,多类任务一套“任务管理器”,就像本地系统一样简单。
  7. 抽象统一系统架构体系,可中心化、可联邦化、可链式化,一切皆有可能。
  8. 抽象统一文件系统,基于Common VFS 统一文件系统管理,从复杂底层存储中解放。
  9. 抽象统一数据处理体系,泛容器化**,抽象化DAO、DTO、Data Manipulation架构,一切皆可是Map、List、Set和Table等。
  10. 抽象化部署模式和抽象云部署,无论是任何系统、本地进程、虚拟机部署、容器部署等。Hydra为您统一,“小程序”化进程模型,就像Springboot一样简单。
  11. 基于分治和MapReduce**设计,面向大数据处理处理系统设计。
  12. 高性能RPC设计基于Netty和NIO,更好的性能呈现。
  13. 传统实例化、IOC化、C/C++风格化,多种对象生命周期模式,更有趣的系统设计。
  14. 可分级、分组、嵌套、级联的设计方法论,确保更灵活的大型系统设计,确保系统结构清晰、规整、可视、整整齐齐。
  15. 无需担心抽象,无需担心"吹牛逼",我们尽可能通过实际案例和有效代码,展示系统功能,也欢迎commit。——以实现小型爬虫搜索引擎为例。

🏆 10万行源码,3A史诗巨献

该仓库为Java 11实现版本(由C/C++版本重构),非GUI大部分不直接基于第三方框架。 此外由于本项目工程量、复杂度和工作量较大,本人精力、能力有限,错误和功能完整性不足是不可避免的,还希望各位读者大佬批评指正。
最后,由于本人精力和工作时间等问题,该公开版本为beta版本,一部分功能未完全实现,后续会不断迭代,欢迎关注。

子系统、框架和实例系统

Bean Nuts Hazelnut Sauron Radium (索伦·镭,分布式爬虫引擎)

该部分为分布式爬虫引擎、爬虫大数据处理、清洗、持久化框架系统的实现。

Bean Nuts Hazelnut Sauron Shadow (索伦·暗影,以爬虫、小型搜索引擎为例)

该部分基于Pinecone、Ulfhedinn、Slime、Hydra、Radium等子框架最终设计的搜索引擎(数据采集、数据处理侧)应用实例。

Bean Nuts Hazelnut Sauron Eyes - The God View (索伦·之眼,数据知识图谱化与检索系统[用户侧终端应用])

数据检索引擎演示实例参考SauronEyes (https://god.nutsky.com | http://www.godview.net)

更新 TODO OKR 日历

8,9双月

  • [Major] 下一次文档全量更新:(08月15日前更新)
  • [Major] 下一次代码全量更新:(09月01日前更新)
  • [Minor] 附属项目开源,God View,Springboot 重构中。(08月10日前)
  • [Minor] 任务系统调整,增加全局列表注册器(给嵌套模型加顶级收集器)。(08月10日前)
  • [Major] 服务系统调整,全量更新系统级服务中心、服务注册等基础设施系统。(09月10日前)
  • [Minor] 消息控制组件,RPC应用层调整、规范化,增加类Thrift,统一序列化、接口化系统。(09月01日前)
  • [Major] Sparta子系统,Web 图形界面操作系统增量、灰度构建。(09月30日前)

⚔ 目录

一、📝 描述

1.1、框架组成

1.1.1、Pinecone 基础运行支持库

1.1.1.1、 扩展容器
  1. LinkedTreeMap
  2. ScopeMap (多域查找树、Map), 实现和支持类似动态语言(如JS、PHP、Python等)的底层继承数据结构,支持两类子模型(单继承、多继承), 可以实现多域查找的功能。
  3. Dictium、Dictionary(字典接口模型),实现和支持类似动态语言(如PHP、Python等)的Array、字典查找,Map和可索引对象进一步抽象化。
  4. Multi*Map (多种MultiValueMap范式),实现支持多种多值Map的实现,如MultiCollectionMap、MultiSetMap等。
  5. Top (TopN问题通用解决),实现和支持堆法、有序树法、多值有序树法三种实现。
  6. distinct (差异器),实现传统Set法、分治法、Bloom等的集合差异分析器。
  7. affinity (亲缘性器),实现和支持对亲缘抽象字典的继承、重写等。
  8. tabulate (遍历器),实现以列表式对抽象字典的内部递归,并列表化和分析亲缘关系。
1.1.1.2、工具库
  1. JSON库,BSON,JPlus(JSON++)库 (面向可二次开发、设计的自由JSON设计),可以重写JSONEncoder、JSONDecoder、JSONCompiler、JSONDecompiler、注入器等。
  2. Name命名空间库
  3. lang (Java包和扩展库),支持各类类扫描方法、包扫描方法、遍历和收集方法、加载、多域扫描等。
  4. TODO TODO

1.1.2、Hydra

1.1.2.1、系统架构、骨架设计
  1. HierarchySystem,阶级系统(Master-Slaver推广架构)
  2. FederalSystem,联邦系统(面向投票式设计) [BETA, 20250101]
  3. BlockSystem,块式系统(面向边缘、链式系统设计)。让你的每台设备都成为你专属链上节点。 [BETA, 20250101]
  4. CascadeComponent, 级联组件设计,支持亲缘性回收控制,“The Omega Device”,级联回收主键引用。
1.1.2.2、事物和统一任务编排系统
  1. Orchestration (事务、任务编排子系统),面向统一解释器模式方法论和过程化设计,事务和任务编排逻辑化,支持循环控制、条件控制、散转控制、原子化等,更支持事务完整性设计。
  2. Auto (简易命令模式,可编程自动机系统),实现支持Automaton简易生产-消费命令队列,实现支持PeriodicAutomaton可编程Timer,实现支持Marshalling流水线指令编排器。(更多Timer和算法持续更新中)
1.1.2.3、小程序系统,统一任务调度系统

Servgram,小程序系统,是的这很微信,不过是服务端的小程序哦!进一步抽象和推广进程**,任何服务介质(本地、虚拟机、容器等),一切服务、一切任务等。 一切统一和谐,一套调度、一套接口、一套操作,生命周期整整齐齐(满足你的控制欲),更可冗余确保稳定。
配合任务编排和事务编排,多个任务,一套系统全包干。 (TODO,远端进程进一步实现、实现统一分布式锁接口)

1.1.2.4、统一消息分发系统
1.1.2.5、WolfMC RPC

二进制RPC协议支持,更多RPC协议持续更新中。[TODO 分片、泳道]

1.1.2.6、统一服务注册、发现、管理系统[TODD]
1.1.2.7、统一资源管理、分配接口系统[TODO]
1.1.2.8、图形管理界面[TODO]
1.1.2.9、TODO

1.1.3、Slime 史莱姆大数据支持库

1.1.3.1、统一块抽象、管理、分配系统(泛块式、抽象页面(连续、离散、自定义)、帧、分区、簇等)
1.1.3.2、Mapper、Querier 抽象映射、查询器,统一接口多种实现(本地、数据库、缓存、数据仓库等)
  1. 优化和缓存版RDBMapper、IndexableMapper,使用多种缓存策略,泛容器化API接口使用。
1.1.3.3、统一缓存库和查询优化库、支持LRU、冷热优化、页面缓存、页面LRU、多级缓存等多策略实现。
1.1.3.4、Source抽象数据源库、支持RDB-ibatis、NoSQL、缓存、文件等扩展。
1.1.3.5、Reducer库[TODO],更多Reduce策略实现、接口

1.1.4、Radium 分布式爬虫和搜索引擎数据取回、任务编排、处理、持久化框架

1.1.4.1、一站式爬虫数据处理范式

基于Map-Reduce**,面向TB-PB级别数据处理,统一任务编号、映射、处理。 范式包含 Reaver(掠夺者,数据取回器),Stalker(潜伏者,面向批量爬虫索引嗅探),Embezzler(洗钱者,面向批处理爬虫数据处理)。

1.1.4.2、统一多任务调度、配置、编排系统

支持事务型、Best-Effort等多种任务粒度控制。 支持分组、嵌套、多级任务调度,支持子任务继承父任务关系、血缘性。 支持任务回滚、熔断等接口设计。 TODO

二、🧬 编译、使用

编译

  • 项目使用Maven管理,使用jdk11以上版本即可运行。
  • 编译得到jar包,即插即用,随意部署。
  • 或使用 IntelliJ IDEA 直接打开即可。

最小系统使用

  • 无需特意配置环境变量等信息。
  • 系统配置文件,默认位于"./system/setup/.."
    "Orchestration"         : {
      "Name": "ServgramOrchestrator",
      "Type": "Parallel", // Enum: { Sequential, Parallel, Loop }

      // Servgram-Classes scanning package-scopes
      "ServgramScopes": [
        "com.sauron.radium.heistron"
      ],

      "Transactions": [
        { "Name": "Heist", "Type": "Sequential", "Primary": true }
      ]
    }
  • 默认启动 Heist (爬虫)任务
  • 检查 Heist 小程序配置,默认位于"./system/setup/heist.json5"
    "Orchestration"    : {
        "Name": "HeistronOrchestrator",
        "Type": "Parallel", // Enum: { Sequential, Parallel, Loop }
    
        "DirectlyLoad" : {
          "Prefix": [],
          "Suffix": [ "Heist" ]
        },
    
        "ServgramScopes": [
          "com.sauron.shadow.heists",
          "com.sauron.shadow.chronicle"
        ],
    
        // 修改这里,可运行例程 'Void' , 最小系统演示
        "Transactions": [
          { "Name": "Void", "Type": "Sequential" /* Enum: { Sequential, Parallel, SequentialActions, ParallelActions, LoopActions }*/ },
        ]
    }
  • 检查 Void 小小程序配置,默认位于"./system/setup/heists/Void.json5",原则上注意大小写
    "Orchestration"         : {
        "Name": "VoidOrchestrator",
        "Type": "Parallel", // Enum: { Sequential, Parallel, Loop }
    
        "Transactions": [
          { "Name": "Jesus", "Type": "Sequential"  },
          { "Name": "Satan", "Type": "Sequential"  },
          { "Name": "Rick" , "Type": "Sequential"  }
        ]
    }
  • 正常启动,将开始本地流水线序列调度 "Jesus"、"Satan"、"Rick"三个大任务和其子任务。

    最小系统成功运行图

三、🔨 目录结构说明

  • TODO

四、🔬 使用许可

  • MIT (保留本许可后,可随意分发、修改,欢迎参与贡献)

五、📚 参考文献

(参考文献包括Nuts家族 C/C++、Java等子语言运行支持库、本项目框架、本项目等所有涉及的子项目的总参考文献、源码、设计、 专利等相关资料。便于读者了解相关技术(设计)的源头和底层方法论,作者向相关参考项目(以及未直接列出项目)作者表示崇高敬意和感谢。)

  1. C/C++ STL (容器、运行支持库设计,算法、设计模式和数据结构)
  2. Java JDK (容器、运行支持库设计,算法、设计模式和数据结构)
  3. Go SDK (容器、运行支持库设计,算法、设计模式和数据结构)
  4. PHP 5.6 Source (解释器、相关支持库设计)
  5. MySQL Source (参考多个设计**和部分**实现)
  6. Linux Kernel (参考多个设计**和部分**实现)
  7. Win95 Kernel (Reveal Edition),Win32Apis,Runtime framework
  8. WinNT 窗口事件**、回调函数注入等
  9. C/C++ Boost
  10. C/C++ ACL -- One advanced C/C++ library for Unix/Windows.
  11. Java Springframework Family (How IOC/AOP/etc works)
  12. Hadoop MapReduce (How it works)
  13. Python TensorFlow (Graph, how it orchestras)
  14. Javascript DOM 设计、CSS选择器等
  15. 其他若干个小框架、工具库、语言等(如Apache Commons、org.json、fastcgi、fastjson、libevent等),本文表示崇高敬意和感谢。

六、🐣 致谢

  • 必须感谢长江存储,不然我还要多花几倍钱买固态,感谢某东和某宝折扣~。
  • TODO

七、🐱 题外话

7.1 FQA

7.1.1. 更新时间?

很遗憾已经上班牛马了,更新速率减低到(3h/pd),但每周仍然保证更新!

7.1.2. Bean Nuts XXX是啥?

系统命名法,Bean是我第一个上网冲浪网名,Nuts是计算机领域根项目,Pinecone等坚果是子领域项目(如面向框架、面向业务等),后面是子项目。

7.1.3. 为毛用Java?

本项目一开始就是C/C++写的,但是由于该项目难度和工作量,一直找不到合适的人一起开发,且维护成本随项目迭代成指数增长,心有余而力不足,但后续根据时间可能出Go版本。

7.1.4. 这种偏底层项目Java有无性能影响?

底层上肯定有一定影响,但Java是工业界非常优秀的实践之一,且那一点点Tiny性能损失与指数级代码维护相比,以人为本,问题不大。

7.1.5. 这种项目怎么维护、学习?

数仓和这类底层项目建设是系统工程,实践中很少有个人或非商业团队愿意耗资数万搭建小数仓体系的,哪怕在公司上班的同学没有一定职级也很难接触海量真实大数据。 实践中原始爬下来的海量4K小文件(或用户采集数据)->数据结构化处理->入库入仓->大数据检索->调用大模型API或生成图谱类->并发检索等完整的数据血缘、链路是非常系统、昂贵且复杂的建设。 且我们不像大公司一样财大气粗,服务器算力和不要钱一样,因此技术选型不能直接照搬中台那一套,我们需要考虑非常多的真实场景。 本人会不断自底向上真实搭建这样一套接地气的迷你云计算、中台体系,通过代码和终端来分享、发现和真实维护。

7.1.6. 这种项目的要学习需要多少知识储备?

很多东西的建设都是系统工程,系统两字易写却难做,很多人需要一生去真正理解系统两字。 与传统业务项目的CRUD不同,这类项目是全链路的,说大是迷你搭建整个中台、云体系,说小可以说是造操作系统小玩具。 吹牛逼容易、落地困难,我要的核心是落地,"我真有一头牛",因此这里没有一堆高大上的技术概念、技术黑话,很多技术和概念我会去简化、落地化而不是去卷所谓“优化”。 最后这个问题没有答案,迭代就是学习,就是储备,小白也有资格成长。

7.2 预告

[20万行,4年+迭代工作量] Bean Nuts Pinecone Draco C/C++ Edition (松果·龙族,运行支持框架)

  • C/C++ 版运行支持框架,“盗版”JDK,参考并C++重写HashMap、LinkdedHashMap、LinkdedTreeMap、BPlusTree等若干容器。
  • JSON、XML、HTML、DOM、CSS、Lock等若干小工具个实现。
  • FastCGI版,“盗版”Spring + PHP风格。 【直接支持C/C++手搓后端,以本人个人博客网站为例,Red Nest

7.3 更多关联子系统、框架和实例系统

Bean Nuts Pinecone Ursus Java Edition (松果·熊族,运行支持框架)

底层数据结构、算法、运行支持库、框架等支持系统。(位于本项目Pinecones/Pinecone)

Bean Nuts Walnut Ulfhedinn Java Edition (核桃·狼皮狂战士,操作系统底层、第三方API封装SDK)

Java版本未完全系统化实现,本欲迁移C/C++版本下的实现,但JVM和JDK把大部分都实现了,很尴尬。Java下使用涉及第三方API的封装将由该模块职能负责。(位于本项目Pinecones/Ulfhedinn)

Bean Nuts Walnut Sparta (核桃·斯巴达,图形界面交互系统)

本双月疯狂构建中。构建完将支持本系统以及与其他子系统的的图形界面、控制台双交互,系统将基于Springboot实现构建。(位于本项目Walnuts/Sparta)

7.4 ☣ 技术债声明, Acknowledgement ⚠

非严谨说明,由于本人技术栈杂、本人习惯等,且涉及项目历史长、本项目工程量巨大。可能导致部分概念、设计、不一定是当前Java技术栈体系下最优实现或最紧扣概念的设计。

  • 举个栗子:本人学习方法是先脑补,再补过程和概念,且先保业务开发进度的方法论(先验和迁移学习,说人话就是快速混用其他技术栈概念或实践,而非完美调研,反正不影响结果和功能)。 因此可能存在概念出错、不严谨,后续再还技术债的现象,但这不影响我们持续认真检查以确保最终质量。
  • 永无止境、实践出真知:Rome was not built in a day, 项目涉及的技术门类较多,这个项目是我本科和研究生期间的业余爱好项目。 虽然已尽可能搭建真实平台、实践、学习,但本人工作经验有限,因此不能保证不犯错误(甚至低级错误),欢迎批评指正,持续迭代。

📈 项目活跃表

Alt

hydra's People

Contributors

dragonsprime avatar tmlgenius avatar welsir avatar

Stargazers

Ash avatar Hai avatar Ma Shiqing avatar Lex avatar  avatar suifeng avatar HugoWw avatar  avatar TellMeWhy1122 avatar dh avatar JM Li avatar codeflying0817 avatar LedArx avatar zhanghao5683934 avatar  avatar ShowMaker avatar  avatar  avatar  avatar Ray Wang avatar Woo avatar 李子凡 avatar Anylife178600 avatar liu4166 avatar MeiCXi avatar  avatar ViporMinerProxy avatar  avatar  avatar Oshikawa Yuri avatar  avatar  avatar  avatar Wind avatar andy3265898 avatar  avatar Dyang avatar Rabby avatar a7 avatar fernando avatar  avatar SuWideSun avatar  avatar Dragon Prime avatar  avatar Hongyu He avatar  avatar flowersea avatar Jia Tianzhao avatar  avatar Genius avatar  avatar

Watchers

Lucian avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.