buy online retin-a overnight without rx, and buy cheap amoxil purchased online without prescription, and buying cheap premarin with free fedex overnight, and buying cheap diflucan (fluconazole) cod saturday delivery, and buy online taking too much synthroid medication, and cheap pharmacy clomid twin, and purchase with no prescription order zovirax (acyclovir) creditcard, and order online buy generic wellbutrin cheap no membership, and cheap online will generic available valtrex in toronto, and cheap pharmacy order cheap order propecia online, and order online no prescription hydrochlorothiazide online pharmacy, and pharmacy cheapest accutane ultrum, and pharmacy cheapest cheap doxycycline without rx, and ordering online where to buy norvasc, and buy cheapest prozac for sale cod, and buy online where can i buy flagyl online, and buying cheap acyclovir xr purchase online cheap, and purchase with no prescription forum paxil, and ordering online best buy lipitor, and buy cheapest arimidex buy without a prescription, and pharmacy cheapest bactrim overnight delivery cheap, and generic medications buy neurontin online no membership, and order cheap baclofen side effects, and order online price zithromax, and pharmacy cheapest where to buy lasix without a prescription, and

存档

‘Python’ 分类的存档

Instagram: 2年10亿美元背后的技术架构

2015年7月3日 没有评论

转自:Archfan

参考:Instagram的技术探索

Instagram是一款免费照片分享移动应用,目前支持IOS和Android。在1年多的时间里,Instagram发展到140万个用户,1.5亿张图片(几个TB),仅有3个工程师,以10亿美元的天价被Facebook收购。不得不说,Instagram是业界的一个神话。今天我们就来看看到底是什么样的技术架构支撑着这个10亿美元的公司。

Instagram团队之前发表过一篇文章:What Powers Instagram:Hundreds of Instances,Dozens of Technologies。这篇文章中提到的技术架构堪称经典,很适合初创项目的快速启动。

这个小团队使用了很多不同的技术和策略,保证他们能轻松的应付快速增长带来的压力。他们混合使用SQL、NoSQL,一堆开源项目,和云服务;云服务他们选择了Amazon,他们认为Amazon要比他们自己部署IDC更有优势;用异步队列来串联组件;系统架构在众多的对外API和内部Services之上;数据存储在内存和云端;大部分代码是动态语言;等等等等。非常时髦的一个架构,基于这个架构之上他们得以快速前进,并且保持精简。

那篇文章非常值得一读,有兴趣的同学可以直接看原文。这里我列出一些要点:

  • 架构原则:1.保持简单;2.不重复造轮子;3.尽量使用成熟稳定的技术
  • 3个工程师
  • 大量使用Amazon服务,工程师不用耗费时间自己维护服务器
  • 100+个EC2实例用于各种用途
  • Ubuntu Linux 11.04(“Natty Narwhal”),他们认为这个版本更加稳定
  • Amazon的ELB(Elastic Load Balancer)路由请求,ELB后面起了3个Nginx实例
  • ELB上关闭了SSL,因为它降低了CPU的使用率
  • DNS使用Amazon的Route53
  • 25+个Django应用服务运行在High-CPU Extra-Large类型的机器上
  • CPU使用比内存使用更加容易达到边界值,所以使用High-CPU Extra-Large的实例来平衡内存和CPU
  • Gunicorn是他们的WSGI服务器。Apache更难配置,更耗CPU
  • Fabric被用来在所有机器上并行执行命令。部署花费更少的时间。
  • PostgreSQL(存储用户,照片元数据,标签等)运行在12个Quadruple Extra-Large Memory实例上
  • 12个PostgreSQL副本运行在不同的节点上
  • PostgreSQL的Master-Replica使用流复制模式,利用EBS的快照来频繁备份
  • EBS部署在软件RAID上,使用mdadm以获取适当的IO
  • 将所有工作中的数据集存储在内存中,因为EBS每秒磁盘寻道次数有限
  • Vmtouch(轻量级的文件系统缓存诊断工具)被用来管理内存数据,尤其是当故障转移时目标机器没有足够空余的内存
  • 用XFS做文件系统,保证数据快照时RAID阵列上数据的一致性
  • Pgbouncer用作PostgreSQL的连接池
  • 有几个TB的照片存在Amazon S3上
  • 用Amazon CloudFront做CDN
  • Redis用来支撑feed,活动消息,session系统和其它服务
  • Redis运行在几台Quadruple Extra-Large Memory实例上,偶尔也会做下切分
  • Redis也是Master-Replica,副本持久化到磁盘上,并由EBS通过快照备份(这么搞是因为他们发现直接在Master上做dump相当吃力)
  • Geo-Search使用Solr,Solr提供的JSON接口也很简单易用
  • 6个memcached实例做缓存,因为Amazon Elastic Cache服务并不便宜,mmc客户端使用pylibmc和libmemcached
  • Gearman用做:向Twitter,Facebook等平台异步分享照片;新照片发布的通知;feed的反送
  • 200个Python进程处理Gearman的任务队列
  • Pyapns处理超过10亿条Apple的push通知,异常稳定
  • Munin用做监控和系统度量工具,用Python-Munin写了很多图表插件,如每分钟注册人数,每秒钟图片发表数等等
  • Pingdom做内部服务的监控
  • PagerDuty用来处理通知和事件
  • Sentry用来做Python的错误报告

以上就是Instagram的博文里面提到的技术要点,怎么样,准备好构建下一个10亿美元的应用了么?

Scaling Django Web Apps

2009年8月17日 1 条评论

Django Web Apps 开发者注意了: 伸缩性是大家一定要持续关注的核心问题.

分类: Python 标签: , ,

Launchpad.net 公开源代码

2009年7月27日 没有评论

launchpad.net 是一个代码主机托管和软件协作平台,  目前已开放整个平台源代码, 基于AGPLv3许可协议发布.

launchpad.net 基于 Python, Zope, PostgreSQL 构建, 运行在Ubuntu上.

其中, 核心部分使用了 Zope 的 zope.interface 用于Interfaces , zope.component 用于 Adapters 和 Utilities, Storm 用于对象-数据库的ORM.

更多技术细节请访问此PDF文件.

相关链接:

安装 BitNami Trac Stack

2008年3月23日 没有评论

通过安装BitNami Trac Stack快速体验Trac, 通常安装Trac会比较麻烦, 而BitNami Trac Stack提供了一站式的安装服务. 我曾在 CentOS 5上试着安装Trac, 但因过程的麻烦而放弃.而今天我用BitNami Trac Stack,不到几分钟就安装好了Trac.其图形化的安装过程让人也倍感亲切.当然同时也提供命令行的安装方式.

BitNami Trac Stack包含以下软件包:
– Trac 0.10.4
– Apache 2.0.63
– SQLite 3.5.1
– Python 2.5.1
– Subversion 1.4.6

基本操作有:
./ctlscript.sh (start|stop|restart)
./ctlscript.sh (start|stop|restart) subversion
./ctlscript.sh (start|stop|restart) apache

导入新项目, 如: svn import mercurial-0.9.5 file:///opt/trac-0.10.4-4/repository -m “imital mercurial”

这时可通过 http://localhost/trac/Project/browser 浏览导入的项目

分类: Developers, Python, Web Server 标签:

豆瓣推出API

2008年1月10日 1 条评论

豆瓣正推出测试中的API, 豆瓣API是豆瓣为第三方开发人员提供的编程接口。利用豆瓣API, 你可以在你的网站或程序中使用豆瓣的数据和功能。 目前的豆瓣API支持的功能包括:

  • 搜索并查看书籍、电影、音乐信息
  • 搜索并查看用户信息
  • 查看用户收藏
  • 查看评论

豆瓣 API 遵循 AtomGData 规范, 了解这两个规范有助于你更好地使用豆瓣 API 。

Douban Python 客户端: http://code.google.com/p/douban-python/

看来, 打造网站的平台服务能力推出API是必由之路。

分类: Ajax,RIA, Python 标签:

啄木鸟 Python 开源社区的奋起宣言!

2006年5月28日 3 条评论

啄木鸟 Python 开源社区的奋起宣言:

// 每日至少抽一刻钟
解答邮件列表中初学者的问题,
// 每周至少抽两小时
整理新学知识将体验发表/分享出去,
通过Blog/Wiki/BBS/mailist……
// 每旬至少抽四个小时
来翻译自个儿喜爱的自由软件的文档,
// 每月至少抽八小时
快乐的编程,推进自个儿的项目,
// 每年至少参加一次
自由软件的活动,传播自由软件思想,
发展一名“自由人”……只要我们每个人都坚持下去……
10年!就足以改变中国软件的整体风貌!

更多人这样的坚持下去, 中国软件的未来就会更有希望 :)

分类: Python 标签: