<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>BeeFog – 总览</title><link>https://queenbee.netlify.app/zh/docs/1-overview/</link><description>Recent content in 总览 on BeeFog</description><generator>Hugo -- gohugo.io</generator><atom:link href="https://queenbee.netlify.app/zh/docs/1-overview/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: 核心概念</title><link>https://queenbee.netlify.app/zh/docs/1-overview/concepts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://queenbee.netlify.app/zh/docs/1-overview/concepts/</guid><description>
&lt;p>&lt;img src="https://queenbee.netlify.app/images/concepts.png" alt="概念示意图">&lt;/p>
&lt;h2 id="控制中心--queenbee-">控制中心 [ QueenBee ]&lt;/h2>
&lt;p>控制中心是一个区域的中枢节点，它管理着区域内所有的工作设备。&lt;br>
控制中心可以将计算任务分配给合适的工作节点，并收集任务的执行结果。&lt;br>
控制中心提供两类接口：&lt;br>
&lt;strong>工作设备接口:&lt;/strong> 一套供工作设备使用的 REST API&lt;br>
&lt;strong>用户接口:&lt;/strong> 一套供您（或您的业务系统）使用的 REST API，可以查看工作设备状态，可以管理和执行任务。&lt;/p>
&lt;h2 id="工作设备--workerbee-">工作设备 [ WorkerBee ]&lt;/h2>
&lt;p>工作设备是若干安装了 &lt;code>WorkerBee&lt;/code> 应用的终端，它的特点是分布广、数量大、类型多样。
&lt;code>WorkerBee&lt;/code> 会利用终端的空闲网络带宽和计算能力，从控制中心获取任务并在执行后报告结果。&lt;/p>
&lt;p>您可以在若干服务器或个人电脑上部署 &lt;code>WorkerBee CLI&lt;/code> 程序并运行。也可以在您的移动 APP 中集成 &lt;code>WorkerBee SDK&lt;/code>,
在取得最终用户的许可下，正在运行您的 APP 的移动设备就会成为一个工作设备。&lt;/p>
&lt;p>对于工作设备，还有一个 &lt;code>能力&lt;/code> 的概念。由于工作设备的多样性，不同的设备可能会有能力差别，
我们用一个标签列表来标识工作设备的所有特殊能力，比如可以在浏览器中执行任务，或者它可以用 GPU 进行计算。&lt;/p>
&lt;h2 id="任务--job-">任务 [ Job ]&lt;/h2>
&lt;p>任务是服务端分配给工作节点的基本计算单元，它由您通过接口定义和调用。关于任务还有几个衍生概念：&lt;/p>
&lt;p>&lt;strong>任务定义:&lt;/strong> 您可以通过接口定义任务，定义好的任务可以被多次调用。&lt;br>
&lt;strong>任务参数:&lt;/strong> 在任务定义中可以预留一些可变的参数，在调用时提供具体的值。比如访问中国天气网&lt;code>某个城市&lt;/code>的天气页面。&lt;br>
&lt;strong>任务步骤:&lt;/strong> 在一个任务定义中，可以有多个步骤，每个步骤完成一个相对独立的子任务。每个步骤还可以利用之前步骤的计算结果。&lt;br>
&lt;strong>任务结果:&lt;/strong> 在任务执行完成后会有任务结果记录任务执行是否成功，如果成功了可能还包含预期的结果数据，如果失败了一定会包含失败原因。&lt;br>
&lt;strong>任务触发器:&lt;/strong> 任务除了通过接口调用，还可以设置自动触发条件让控制中心自动触发。比如每天中午12点定时执行。&lt;/p>
&lt;p>本系统不做业务层面的任务编排或调度，比如业务上一个测试某网址在全国的访问延迟的任务，需要业务系统拆分成三十多个任务，&lt;/p></description></item><item><title>Docs: 运作方式</title><link>https://queenbee.netlify.app/zh/docs/1-overview/how-it-works/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://queenbee.netlify.app/zh/docs/1-overview/how-it-works/</guid><description>
&lt;h2 id="工作设备和控制中心是怎么联系的">工作设备和控制中心是怎么联系的？&lt;/h2>
&lt;p>&lt;img src="https://queenbee.netlify.app/images/worker.png" alt="工作设备原理">&lt;/p>
&lt;ul>
&lt;li>由于工作设备数量巨大，WorkerBee 被安装到工作设备时一般是批量安装或用户自行安装的，
在安装时安装包内就预置了控制中心的地址和一个 &lt;code>分组 Token&lt;/code> 。&lt;/li>
&lt;li>WorkerBee 在每次启动时，都会用 &lt;code>分组 Token&lt;/code> 去调用登录接口，换取独属于自己的 &lt;code>Token&lt;/code> 。&lt;/li>
&lt;li>WorkerBee 会周期性的主动向控制中心请求任务，控制中心依靠 &lt;code>Token&lt;/code> 识别出工作设备后，分配给它合适的任务。&lt;/li>
&lt;li>在完成任务之后会向控制中心报告，并继续请求任务。&lt;/li>
&lt;li>WorkerBee 随时有可能因各种原因退出，不用担心未完成的任务，控制中心在任务超时后重新将任务分给别的工作设备。&lt;/li>
&lt;/ul>
&lt;h2 id="任务在控制中心内是怎么流转的">任务在控制中心内是怎么流转的？&lt;/h2>
&lt;p>&lt;img src="https://queenbee.netlify.app/images/lifecycle.png" alt="生命周期">&lt;/p>
&lt;ul>
&lt;li>图中黄色部分为任务较稳定的状态，有排队中 &lt;code>queuing&lt;/code> , 运行中 &lt;code>running&lt;/code> , 失败 &lt;code>failed&lt;/code> , 成功 &lt;code>successed&lt;/code> 几个状态。&lt;/li>
&lt;li>每个任务会有超时时限，工作设备如果发现任务到了超时时限会主动上报任务失败。此图中的超时含义其实为客户端失联，这种情况总是会重新排队。&lt;/li>
&lt;li>由于雾计算工作设备的不稳定性，在工作设备失败后还是会重新排队重试预定的次数。&lt;/li>
&lt;li>工作设备报告任务成功后，会在控制中心执行可能存在的一些步骤，控制中心比较稳定可控，这个环节如果失败了会直接认为任务失败。&lt;/li>
&lt;/ul>
&lt;h2 id="控制中心是如何把任务分配给工作设备的">控制中心是如何把任务分配给工作设备的？&lt;/h2>
&lt;ul>
&lt;li>工作设备提交任务请求后，控制中心查询工作设备的地理区域，网络运营商，能力范围。&lt;/li>
&lt;li>从排队最久的任务开始，顺次检查每个任务，如果任务的地理区域要求、网络运营商要求、能力范围要求全不能能被满足，则将任务分配给此工作设备。&lt;/li>
&lt;li>分配后任务会被标记为运行中 &lt;code>running&lt;/code>, 并从等待队列删除。&lt;/li>
&lt;li>重试的任务会被插入等待队列头部。&lt;/li>
&lt;/ul></description></item></channel></rss>