KT本质
嗬嗬,快速和阿康交流,确认了KT 的开发目标和技术难点,记要,以组织大家学习,参与
K68本质
江湖任务悬赏榜
K68的任务流程如下:
提交任务 ->审核 ->交款K68保存 ->悬赏公布->甄选成果->满意->付款结束 | ^ |<----------+ | | | | +不满意->延期,加钱 | | | + 强制选定---|
KT目标
一个P2P格局的任务交易平台
- 已知统计信息:
平均每任务最终尺寸:10Mb
每日最少KT在线数量:7%
上传下载总平均速度:50kb
- 设计指标:
每用户最大分享空间:1Gb
每新递交任务扩散到所有人可知时限:2小时
任务查询极限情况下遍历所有种子时限:3分钟
- 即,含有所需信息的机器离查询机最远情况
- 没有中央服务器,所有信息冗余分布式存储在所有机器中
扩散设想:
信息应该是自然的蔓延过去的。信息都是主动推过去的,而不是拉过去的。 比如一个kt用户提交了一个图片文件,过程应该是这样: 1\ 到认证服务器申请一个经过证明的发布时间,发布时间非常重要,证明他的提交时刻. 2\ 认证服务器同时给分配一个唯一的id,标示这个文件. 3\ 从认证服务器获得离子自己最近的20个在线用户的信息 4\ 向自己最近的20个用户发出请求,说有个id的信息要发送 5\ 获得5-10个有效的用户的回应,可以发送 6\ 向其他用户发送该文件.
像水漫土地一样,把凹地的地方填平.
我的理解
KT想成为特立独行的任务发布系统
本质上是一种专用邮件列表
- 所有任务,所有人都可以看到
- 所有任务的所有成果所有人都可以看到
- 所有历史任务的所有信息都可以查询到
- 特别的是:
- 没有中央服务器,任务靠自动扩散来完成通知
- 所有文件,分布式存储在所有机器中
- 我的设计思路:
- KT只完成一种,没有中央服务版本的
- KT_mother 仅仅是代号,表示一种运行方式,是最早运行的一个KT,对所有任务"感兴趣"
- KT_sister 也是代号,表示所有其它KT运行机,只要保证7*24的运行,其实也成为了KT_mother
- 任务信息分两部分(效仿 newsgroup):
- 任务描述作为摘要(邮件主题对待),自动同步到所有KT空间
- 任务的成果等等(邮件正文,附件),KT空间中只保存用户订阅/参与/查询过的,并有清除的权力
- 任务的成果,从所有KT实例网络整体中,存在至少一个完整复制
- 可以想象为一个由KT组成的互联网,每个KT是个网路,所有KT的内容加起来可以组成完整内容的多个复本
- 任务成果的搜索从本地DB中进行
- 本地DB中的信息,允许24小时的慢同步时间差
- 任务成果的下载,采用Bt的方式进行
- KT只完成一种,没有中央服务版本的
KT需要的调整
k68所有的内容都利用KT存放在大家的电脑上 -- 不可能,用户体验也太差
- KT应该积极为用户考虑,保存所有必要的信息,灵活的帮助用户进行任务的管理
“链式反应”...然后向周围的10个KT用户自动传送 -- 应该优先向任务发起人提交
KT需要设计的数学模型
搜索路径模型
设: N* 为KT Seed节点,N0 为KT_mother,Nc 为当前节点 p 为每个KT处理请求平均时间,t 为每1Mb 通过KT节点的平均时间 则: 180(秒)= 2*(t*10+p*2*(n-1)) n 为从任意节点,扩散搜索到KT_mother节点要经过的节点数 需要引入其它什么元素来令以上工程合理?
冗余存储模型
设: C 为KT网络整体数据单位 ,N 为KT所有节点数量 Nmin为最小在线KT节点数,Nmax为最大在线KT节点数,a 为Nmin到Nmax平滑变动的加速度 Sn 为任一节点储存整体数据所占 则: C*x = Nmin*Sn*t+(a*Sn*t*t)/2 x 为一天之内最多可以存在的整体数据复本数量 需要如何描述和分配这个Sn 的内容和棵粒度? Sn为多少可以保证在一天的任意时段 x > 5,并最合理,可以保证前一算式成立? a 的极限最小是多少? Nmin 的权限最小是多少? 在x=5时, Sn Nmin 最小是多少?
KT实现难点
- 分布式储存的控制和查询
- 任务成果作为独立的文件对象,在流转,增加过程中永远可访问?
- 查询的快速和下载/同步的快速,如何实现?
- 信息扩散的优先级别动判定,保证所有任务信息,永远可访问!
- Bt的种子式数据同步
- KT_mother 永远以Bt 方法尝试下载/更新所有任务成果
- KT_sister 以Bt 方式下载想要的任务成果
- 所有KT 自动以最小资源占用方式Bt下载/更新 任务索引 DB