赵钟秋,又拍网核心开发人员,关注多种计算机语言、Web技术和开源技术。他在QCon杭州2011大会的开放平台专题做了名为《又拍网架构中的消息/任务系统》的讲座,并和参会者做了热烈的讨论。会后,InfoQ中文站对赵钟秋做了采访。

\u0026#xD;

InfoQ:又拍的图片云计算平台与一般的CDN有什么区别与优势?

\u0026#xD;

\u0026#xD;

又拍图片云计算平台是Amazon S3 + CloudFront 模式,因为源数据机房包含在整个CDN系统中(一般CDN服务源服务器往往在客户各自的机房),所以网络优化更彻底,达到整个CDN最佳效果。并且面对国内各省市之间复杂的网络结构,可以不断调整优化最佳链路(一般CDN服务,回源链路一旦确定,很少会再去为客户做变动)。另外,又拍在提供文件存储加速外,利用公司本身图片方面的技术积累,还提供一些特色功能:比如针对图片文件类型生成缩略图的功能,在线管理功能,防盗链功能等等。

\u0026#xD;

\u0026#xD;

InfoQ:又拍从什么时候开始使用Erlang,目前开发团队有多大规模,除了消息系统,Erlang还用在什么地方?给又拍带来了什么优势?

\u0026#xD;

\u0026#xD;

又拍从2010年初开始使用Erlang,我们并没有专门的Erlang开发团队(需要的时候由团队中1-2个人负责Erlang相关开发)。除了消息系统,我们的文件存储系统也是使用Erlang开发。我们喜欢用最合适、最方便的工具解决问题,我们认为目前在分布式系统的开发中,Erlang就是这样的工具。Erlang的引入也的确为又拍这样的小团队快速地开发高效的、稳固的分布式系统带来了可能性。

\u0026#xD;

\u0026#xD;

InfoQ:选用RabbitMQ的时候,与其它的消息系统比如ZMQ等等,怎么确定造型的呢,是否有实际的Benchmark例子?

\u0026#xD;

\u0026#xD;

选择RabbitMQ是2009年的事了,当时网站架构在做比较大的变迁。又拍原来的架构是基于Java的,那次的迁移是打算减轻对Java体系的依赖,而开源消息队列中比较有名的Apache ActiveMQ是基于Java的实现,显得太厚重,所以被排除在我们的考虑之外。另外,那个时候ZMQ还没推出。没有具体了解过ZMQ,以目前地认识来看,我认为它们之间也存在很大的差异。例如RabbitMQ比较完整的实现了AMQP协议,而ZMQ则提供了简单的接口,相比之下,前者显然比后者偏重。如果是比较性能,ZMQ会胜出是无庸置疑。后面我们会对ZMQ作进一步了解,因为它可能能和YPTask有一个很好的结合。目前我们也没有再使用RabbitMQ。

\u0026#xD;

\u0026#xD;

InfoQ: YPTask是在RabbitMQ上的包装吗?有哪些自己独特的地方,是否回馈开源社区?

\u0026#xD;

\u0026#xD;

YPTask和RabbitMQ没有任何关系,实际上YPTask并不是消息系统,确切地讲应该是一个基于消息的远程方法调用系统。YPTask是基于Erlang的OTP实现的,本身就是一个很健壮的分布式系统。它具备管理、配置外部工作进程的功能,而简化了消息队列地实现。外部工作进程不是通过网络接口与YPTask通信的,而是通过标准输入/输出。所以理论上后端的工作进程可以用任何语言实现,只要它支持Erlang的序列化方式BERT。事实上,BERT的其它语言实现已经非常丰富。更重要的是,YPTask作为一个中间层次的系统,把大多数的配置和管理工作统一起来,极大地减少了业务代码需要处理的事,使得业务逻辑的开发和管理都变得很简单。我们会将这个工具进行进一步的调整和完善,并在合适的时候将其开源。

\u0026#xD;

\u0026#xD;

InfoQ::Erlang与Python、PHP的通信是怎么做的呢,RPC是使用Thrift还是其它的例子?

\u0026#xD;

\u0026#xD;

目前Erlang与工作进程(主要由Python开发)是通过Erlang的内置序列化方式BERT进行通信的,与PHP则是通过JSON-RPC通信的。考虑到我们系统的迁移,目前只实现了这两个对我们来说最合适的通信方式。不过我们打算加入更多的外部通信协议,比如msgpack,protobuf等等。

\u0026#xD;

\u0026#xD;

InfoQ:之前知乎使用又拍时曾出现一些故障,现在在安全性可靠性上,主要有哪些保障?

\u0026#xD;

\u0026#xD;

知乎在使用过程中出现的故障是由于他们对API的使用不当造成的。他们将需要认证的API请求放到客户端发送,导致向客户端泄漏了API的认证信息。从又拍的角度看,这也反映出之前的API功能还不够丰富,调用不够方便等问题。我们也会在这个方面投入更多的精力。

\u0026#xD;

\u0026#xD;

InfoQ:又拍的消息系统的规模有多大,下一步会怎么发展呢?

\u0026#xD;

\u0026#xD;

目前又拍的消息系统规模不算太大,每天由5个节点处理大约500万条消息。目前这些节点的压力并不大。下一步的发展还要看网站的发展情况来确定。

\u0026#xD;

\u0026#xD;

InfoQ:除了消息系统外,整个又拍架构中还有哪些优秀的地方想和读者分享?(又拍曾分享过分库设计)

\u0026#xD;

\u0026#xD;

又拍也是较早在架构中引入Redis的站点,可能的话可以分享一下相关经验。

\u0026#xD;

赵钟秋谈又拍网架构中的消息/任务系统相关推荐

  1. 又拍网架构中的分库设计

    又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万.5年的发展历程里经历过许多起伏,也积累了一些经验,在这篇文章里,我要介绍一些我们在技术上的 ...

  2. 又拍网架构中的分库设计(转)

    又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万.5年的发展历程里经历过许多起伏,也积累了一些经验,在这篇文章里,我要介绍一些我们在技术上的 ...

  3. 又拍网架构-又一个用到python的网站

    2019独角兽企业重金招聘Python工程师标准>>> 又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万.5年的发展历程里 ...

  4. 又拍网架构-又一个用到python的网站(转载)

    为什么80%的码农都做不了架构师?>>>    又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万.5年的发展历程里经历过许 ...

  5. 又拍网架构 -- 前端PHP后台Python +消息中间件 RabbitMQ + 分库步骤

     又拍网架构 (http://www.bopor.com/?p=652), 很有价值. 又拍网的服务器端开发语言主要是PHP和Python,其中PHP用于编写Web逻辑(通过HTTP和用户直接打交道) ...

  6. 付利赚浅谈免费是网赚中最贵的项目

    当你一听到"免费"二字,心里就会不自觉的亢奋起来,什么东西那么好居然不用花钱就能免费获得,是人都会心动.但是,往往,我们在"免费"上付出的代价,永远是最昂贵的! ...

  7. 浅谈Squid在图片存储架构中的应用

    从我的独立博客中同步过来的,一起探讨 将近快一个月没写文章了,太懒散了,今天振作了一下,写了篇关于Squid的文章,Squid作为分布式代理缓存服务器真的非常的棒,希望本文对你有帮助. 版权声明:非商 ...

  8. 阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略

    常见性能优化策略分类 1.代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视.很多技术人员拿到一个性能优化的需求以后,言必称缓存.异步.JVM等.实际上,第一步就应该是分析相关的代码, ...

  9. 小试牛刀_浅谈AspNetPager在三层架构中的使用

    AspNetPager第三方分页控件介绍 AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户 ...

最新文章

  1. JAVA学习笔记(6)
  2. 百度CTO王海峰服贸会展示AI新基建成果,飞桨获“科技创新服务示范案例”奖
  3. java程序员封闭_变态级JAVA程序员面试32问(转)
  4. IIS的应用程序池优化方法
  5. 国家服务器1eb硬盘,仅一个月:奇亚币已占用超过1EB存储空间
  6. forum.php 重定向,解析php 版获取重定向后的地址(代码)
  7. Linux Bond 技术学习资料
  8. 分布式系统的消息服务模式简单总结
  9. Liferay 部署war包时候的deployDirectory 细节分析
  10. 二次扩增产物条带弥散_PCR实验操作常见解决方法
  11. c语言实验一的错误,C语言实验(三)
  12. linux下用户及用户组的管理
  13. java参数传递的乱码问题
  14. (day 45 - 中序遍历 ) 剑指 Offer 54. 二叉搜索树的第k大节点
  15. ArrayList以及List的常用方法
  16. 计算机组成原理慕课第六章答案,计算机组成原理单元答案2020MOOC
  17. 【Paddle 入门打卡】用Paddle做MINIST手写数据集识别
  18. 转:读“DataBase Sharding at Netlog”,看DataBase Scale Out
  19. 简析无线网络加密算法之CCMP加密算法
  20. 多点触摸TP的touch异常事件

热门文章

  1. java面试宝典超长完整版
  2. vasp能带结构计算
  3. DepthFirstSearch BreadthFirstSearch
  4. itextPDF操作PDF,获取PDF内容
  5. MATLAB科学计算机lnx代码,[2018年最新整理]Matlab科学计算.ppt
  6. iview upload组件手动控制上传,excel表格导入
  7. Arduino运行FreeRTOS操作系统
  8. 2022年数据分析决赛试题简要分析
  9. 程序人生(一) 初生牛犊
  10. B.FRIENDit壁虎忍者笔记本支架,铝合金电脑支架,便携折叠、可调节桌面电脑架