【架构】从instagram学习最小化IT是怎么做的
- Keep it very simple (极简主义)
- Don't re-invent the wheel (不重复发明轮子)
- Go with proven and solid technologies when you can(能用就用靠谱的技术)
从instagram学习最小化IT是怎么做的:
1.OS/主机:果断Amazon EC2 (Amazon Elastic Compute Cloud (EC2) 是一项Web服务,提供规模可调的云服务器托管服务,让开发人员能轻易地使用web级计算)
2.负载均衡:两台Nginx做DNS轮询(最基本),后用:Amazon ELB Elastic Load Balancer,DNS:Amazon Route53
3.应用服务器:
- 25个Django实例,运行在High-CPU Extra-Large 类型的服务器实例上,因为应用请求模式是CPU密集型而非IO密集型
- Gunicorn作为WSGI服务器(Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口),比Apache mod_WSGI更容易配置,且省CPU,使用Fabric加速部署。
4.数据存储:
- 用户信息,图片元数据,标签:PostgreSQL
- TB级海量图片Amazon S3
- CDN:Amazon CDN
- 会话:Redis
- 搜索:Solr:Geo-search API工作
- 缓存:Memcached(6),库使用Pylibmc,Libmemcached;Amazon也有缓存服务,暂未用
5.任务队列/发布通知:队列服务:Gearman;通知服务pyapns
6.监控:Munin主要监控工具;外部监控用Pingdom服务,通知服务用:PagerDuty;Python的错误用sentry
注:
学习笔记:
What Powers Instagram: Hundreds of Instances, Dozens of Technologies,
https://dbanotes.net/arch/instagram.html
名词:
WSGI, Web Server Gateway Interface
如全称代表的那样,WSGI不是服务器,不是API,不是Python模块,更不是什么框架,而是一种服务器和客户端交互的接口规范!
更具体的规范说明请搜索“PEP 3333”。
在WSGI规范下,web组件被分成三类:client, server, and middleware.
如全称代表的那样,WSGI不是服务器,不是API,不是Python模块,更不是什么框架,而是一种服务器和客户端交互的接口规范!
更具体的规范说明请搜索“PEP 3333”。
在WSGI规范下,web组件被分成三类:client, server, and middleware.
Gunicorn 绿色独角兽'是一个Python WSGI UNIX的HTTP服务器。这是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn)项目移植。该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速。