赵钟秋谈又拍网架构中的消息/任务系统
赵钟秋,又拍网核心开发人员,关注多种计算机语言、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;
赵钟秋谈又拍网架构中的消息/任务系统相关推荐
- 又拍网架构中的分库设计
又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万.5年的发展历程里经历过许多起伏,也积累了一些经验,在这篇文章里,我要介绍一些我们在技术上的 ...
- 又拍网架构中的分库设计(转)
又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万.5年的发展历程里经历过许多起伏,也积累了一些经验,在这篇文章里,我要介绍一些我们在技术上的 ...
- 又拍网架构-又一个用到python的网站
2019独角兽企业重金招聘Python工程师标准>>> 又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万.5年的发展历程里 ...
- 又拍网架构-又一个用到python的网站(转载)
为什么80%的码农都做不了架构师?>>> 又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万.5年的发展历程里经历过许 ...
- 又拍网架构 -- 前端PHP后台Python +消息中间件 RabbitMQ + 分库步骤
又拍网架构 (http://www.bopor.com/?p=652), 很有价值. 又拍网的服务器端开发语言主要是PHP和Python,其中PHP用于编写Web逻辑(通过HTTP和用户直接打交道) ...
- 付利赚浅谈免费是网赚中最贵的项目
当你一听到"免费"二字,心里就会不自觉的亢奋起来,什么东西那么好居然不用花钱就能免费获得,是人都会心动.但是,往往,我们在"免费"上付出的代价,永远是最昂贵的! ...
- 浅谈Squid在图片存储架构中的应用
从我的独立博客中同步过来的,一起探讨 将近快一个月没写文章了,太懒散了,今天振作了一下,写了篇关于Squid的文章,Squid作为分布式代理缓存服务器真的非常的棒,希望本文对你有帮助. 版权声明:非商 ...
- 阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略
常见性能优化策略分类 1.代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视.很多技术人员拿到一个性能优化的需求以后,言必称缓存.异步.JVM等.实际上,第一步就应该是分析相关的代码, ...
- 小试牛刀_浅谈AspNetPager在三层架构中的使用
AspNetPager第三方分页控件介绍 AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户 ...
最新文章
- JAVA学习笔记(6)
- 百度CTO王海峰服贸会展示AI新基建成果,飞桨获“科技创新服务示范案例”奖
- java程序员封闭_变态级JAVA程序员面试32问(转)
- IIS的应用程序池优化方法
- 国家服务器1eb硬盘,仅一个月:奇亚币已占用超过1EB存储空间
- forum.php 重定向,解析php 版获取重定向后的地址(代码)
- Linux Bond 技术学习资料
- 分布式系统的消息服务模式简单总结
- Liferay 部署war包时候的deployDirectory 细节分析
- 二次扩增产物条带弥散_PCR实验操作常见解决方法
- c语言实验一的错误,C语言实验(三)
- linux下用户及用户组的管理
- java参数传递的乱码问题
- (day 45 - 中序遍历 ) 剑指 Offer 54. 二叉搜索树的第k大节点
- ArrayList以及List的常用方法
- 计算机组成原理慕课第六章答案,计算机组成原理单元答案2020MOOC
- 【Paddle 入门打卡】用Paddle做MINIST手写数据集识别
- 转:读“DataBase Sharding at Netlog”,看DataBase Scale Out
- 简析无线网络加密算法之CCMP加密算法
- 多点触摸TP的touch异常事件