摘要: 在设计分布式系统时,通常要考虑到 数据的一致性(consistency)、系统的可用性(availability)、以及分区容忍性( partition tolerance)。即CAP定理。 阅读全文
posted @ 2017-12-30 21:46 鱼香唐僧 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 我们知道像django,flask,tornado这些web 应用框架(web framework) 负责数据库连接存取, 页面、数据的生成,session的管理, url dispatch等。也就是说,这些web应用框架主要在做访问资源、处理资源的事情。 那么建立链接、接收请求、构建响应 中这些相对底层的事情——对http 协议的处理是谁来做的呢?是http服务器。 那么http服务器如何与web 应用之间框架沟通呢?这就需要WSGI了。 阅读全文
posted @ 2016-05-05 01:11 鱼香唐僧 阅读(1736) 评论(0) 推荐(0) 编辑
摘要: 一、memcached安装memcached依赖$ sudo apt-get install libevent-dev安装memcached服务$ sudo apt-get install memcached二、启动启动之前$ free查看空闲内存主要关心第三行,-/+ buffers/cache中... 阅读全文
posted @ 2015-05-27 22:23 鱼香唐僧 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 为了在后台运行任务,我们可以使用线程(或者进程)。 使用线程(或者进程)的好处是保持处理逻辑简洁。但是,在需要可扩展的生产环境中,我们也可以考虑使用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 阅读全文
posted @ 2015-01-29 01:38 鱼香唐僧 阅读(17677) 评论(4) 推荐(2) 编辑