摘要:
在设计分布式系统时,通常要考虑到 数据的一致性(consistency)、系统的可用性(availability)、以及分区容忍性( partition tolerance)。即CAP定理。 阅读全文
摘要:
我们知道像django,flask,tornado这些web 应用框架(web framework) 负责数据库连接存取,
页面、数据的生成,session的管理, url dispatch等。也就是说,这些web应用框架主要在做访问资源、处理资源的事情。
那么建立链接、接收请求、构建响应 中这些相对底层的事情——对http 协议的处理是谁来做的呢?是http服务器。
那么http服务器如何与web 应用之间框架沟通呢?这就需要WSGI了。 阅读全文
摘要:
一、memcached安装memcached依赖$ sudo apt-get install libevent-dev安装memcached服务$ sudo apt-get install memcached二、启动启动之前$ free查看空闲内存主要关心第三行,-/+ buffers/cache中... 阅读全文
摘要:
为了在后台运行任务,我们可以使用线程(或者进程)。
使用线程(或者进程)的好处是保持处理逻辑简洁。但是,在需要可扩展的生产环境中,我们也可以考虑使用Celery代替线程。
Celery是什么?
Celery是个异步分布式任务队列。
通过Celery在后台跑任务并不像用线程那么的简单,但是用Celery的话,能够使应用有较好的可扩展性,因为Celery是个分布式架构。下面介绍Celery的三个核心组件。
生产者(Celery client)。生产者(Celery client)发送消息。在Flask上工作时,生产者(Celery client)在Flask应用内运行。
消费者(Celery workers)。消费者用于处理后台任务。消费者(Celery client)可以是本地的也可以是远程的。我们可以在运行Flask的server上运行一个单一的消费者(Celery workers),当业务量上涨之后再去添加更多消费者(Celery workers)。
消息传递者(message broker)。生产者(Celery client)和消费者(Celery wor 阅读全文