本文关键字:datasyner,syncbox,datahub,mypcmate,myphonemate,p2pcloud
谈到云,可以从好多方面去表征它,比如它是计算机资源的虚拟化,它是软件的服务化,它是APP和APP DEVSTACK的一种仿本地化和去远程化(参见我们一直追求的uniform native/web appstack),可是我们结结实实忽略了最重要的一点,它还应是新的应用方式和用户习惯养成方式,仅仅是WEB所定义的那样吗?不,那只是云综合应用形式中极为简单简陋的一支,现在的web已级慢慢实现了无缝让用户感到它像本地一样打开,发布,被应用且慢慢涵盖了一些native appstack的那些领域,比如W3C的一系列标准和webgame将渲染数据化为stream创新性地解决云渲染形成电影游戏这样的尝试 — 所有这些弥足珍贵,可是,明显地,我们的云,除了这些还应有别的东西:
比如,真正的云,那种同步要是默认的,不能是手动的,这应该是操作系统里面的机制而不是应用层一个“暂停/开始 同步”的操作,这种机制应让用户无从感知,不必为这个操作干开发发布上任何多余的事情。所以要为云准备一个操作系统级的东西,重新定义这个云把它与基本传统BS/CS云中的常见OS分开,就如同OS要促成每个程序都要运行在它的内存空间而不会因为串位而把整个系统弄崩一样属于普通OS的默认顶层设计策略,,那么等同地讲,同步就应该是这种云OS的默认黑盒级策略。
还比如,我们的云,要支持多设备P2P,在设备节点间就能达成同步(是不是有点像数据库的主从replicate,难怪db就是天然的云OS呢。。)。将同步视为搭载了云OS的多设备间能达到开箱即用的机制和默认策略就打开的东西。这有什么好处呢,因为这样做才能像“云”,本地的设备和应用可以充当云的角色不再局限于星型云结构,而是网状云。前者明显有一中心多终端的星型特点,任何新增一个云内设备,都需要我们遵循从终端到中心的同步路径,设备间不具有同等的相互同步支持。我们需要的云,不必局限于向哪个方向同步,只要存在云,管它是一个浏览器还是一个云中心,都可以作为云,它们都可以协同同步。这就必定涉及到为任意设备建立对等同步的能力,且使数据在各个节点间以p2p方式传播。
当然,云还有可能是更多更多的东西。。我们想不到的东西。
那么,为什么必须一定要这样呢?
为什么我们需要一个云网络而不是一个云中心
在《免租用云主机将mineportal2做成nas,是个人件也可服务于网站系统是聚合工具也是独立pod的宿舍家用神器》中我谈到利用colinux与windows能共处一平台的特性,将PC做成宿舍版的nas server而不影响它同时作为一台普通PC使用的过程,它的优点是:免VPS,使用PC本身的资源特别是大容量硬盘,可做NAS也可做群晖那种能装APP的WEBOS,本身也可保有PC作客户端与NAS交互的特性,不过客服共机会有一定隐患 。它的缺点是:离开了宿舍,你就获取不到VPS有网即可访问的特性,除非你一天24小时开机,而且PC太大,即使是笔记本你也不能整天在家里和公司间来回以此为中心同步你的数据,你还得求助于VPS为中心的NAS机制。
在新的真正的云需求明朗化之前,其实,这些优缺点,都不易觉察,可现在我们知道了:他们都不是真正的云,以上VPS和PC为中心的NAS AS 云OS的方案中,都有同步,然而它们的同步不会自动化,没有大局的OS支持使之成为“真正的云设备”负责同步策略,只是用户的操作而已,其二,它不光能通过同步器(终端)与它交互还能让新增的任何设备参与同步互为路径上的二点,,,所以,本地(作为一台PC实现或者其它什么东西)只能先做一台服务器,浏览器只能做终端,各种APP只负责上传,忠实地维护远程那个数据中心,一旦断网,这个云将无从为云。
那么,我们该怎么做呢?
利用couchdb+树莓打造对等云网络
这样的东西,基本上couchdb+树莓派可以满足:couchdb的同步协议使得实现了这个同步协议的软件,或者是一个浏览器,或者一整个设备节点,都可以以p2p方式参与云。传统以web为中心的云中,只存在云中心和终端,在couchdb的同步协议下,云中心形成一个网络,同步是默认的事情,终端也能迅速化为云上的普通对等节点脱离BS从属。
较PC或VPS作为这种云,树莓派作为云,可以建立起最经济合算的规划,它本身比较便宜,整体性能,和8G的存储也足于承载一个人日常的资料,且方便作为像手机充电宝这样的手机伴侣型产品在家里和公司间转移,它与PC上的浏览器可同步的特点,使得只要不在重装PC系统,破坏浏览器缓存的情况下,PC和树莓派其中任何一者损坏,都不会破坏中心数据,且具备像本地应用一样,随时offline操作,接入至少二个云之后迅速相互同步不丢失数据的能力,基于couchapp的可扩展机制,使得这种云可以功能更强大。
下篇就做一个这样的云吧。