360云盘的实现

360云盘使用了一段时间,有些猜想,有些疑惑。猜想如下:
1 这是一个云存储的产品,我们上传东西传到了360的HDFS上,下载的东西也来自360的HDFS。总之我们的所有操作都是针对360HDFS的一些操作,这些操作通过HDFS暴露的JAVA接口完成。

疑惑如下:
1 360云盘服务端是一个Web服务器吗?如果是有是如何可以与浏览器、自身客户端通信的?是采用的WebService吗?

2 360云盘服务器端软件是部署在HDFS上的吗?如果是应该怎么部署,能不能举个例子。

服务器端不一定是Java,主要分下面几层:
1.负载平衡和健康检查
2.代理 缓存 转发等。
3.Web前端,这部分现在一般用轻量Node.js等完成,这样能够让前端工程师结合客户端和服务器的前端编写出互动效果极好的页面,过去那种让美工设计好平面,然后进行分割给程序员的工作方式已经过时,这样的页面互动性和可触感都很差,等于平面杂志,不是互动媒体。
4.前端Web缓存
5.事件总线rabbitMQ或ZeroMQ之类,实现异步编程架构
6.数据中心或PAAS平台。外部内部的都可以。
7.批处理器,用来进行大数据分析或耗CPU的大量并行计算。
以上架构不限于云盘,可以支持任何大访问量的系统,如下图,

图中的S3是亚马逊的Amazon S3 ,有关目前国外各种云的可伸缩Scalability方面详细文档可参考:

Here are some of the favorite posts on HighScalability...