缓存服务器

从0到1,Python Web开发的进击之路

痞子三分冷 提交于 2019-12-04 00:44:58
本文将以个人(开发)的角度,讲述如何从零开始,编写、搭建和部署一个基于Python的Web应用程序。 从最简单的出发点来剖析,一个web应用后端要完成的工作抽象出来无非就是3点: 接收和解析请求。 处理业务逻辑。 生产和返回响应。 对于初学者来说,我们关心的只需这些步骤就够了。要检验这三个步骤,最简单的方法是先写出一个hello world。 request->"hello world"->response python有许多流行的web框架,我们该如何选择呢?试着考虑三个因素: 易用:该框架是面对初学者友好的,而且具有健全的文档,灵活开发部署。例如flask,bottle。 效率:该框架适合快速开发,拥有丰富的轮子,注重开发效率。例如django。 性能:该框架能承载更大的请求压力,提高吞吐量。例如falcon,tornado,aiohttp,sanic。 根据场景使用合适的框架能少走许多弯路,当然,你还能自己写一个框架,这个下面再说。 对于缺乏经验的人来说,易用性无疑是排在第一位的,推荐用flask作为python web入门的第一个框架,另外也推荐django。 首先用virtualenv创建python的应用环境,为什么用virtualenv呢,virtualenv能创建一个纯净独立的python环境,避免污染全局环境。(顺便安利kennethreitz大神的 pipenv

smartload跨浏览器极速缓存插件用法

五迷三道 提交于 2019-12-03 23:54:05
smartload 由 39smart团队 原创,主要实现前端 css/js 的 一次加载请求,永久缓存 的加速效果,在移动端效果非常明显. 插件特点: 支持平台 : PC和移动端所有版本浏览器,ie6+,firefox,chrome,uc,safari等等... 核心功能 : 全站css/js版本统一管理,同步或异步加载,老中新三代浏览器的css/js分离 存储支持 : indexDB > Web SQL > localStorage > 无缓存 . 实现原理 :自动载入适合的版本, v1 适合无localStorage版本浏览器(如ie8以下)直接加载, v2 适合支持不支持async/await等ES7特性的版本使用Promise异步加载(ie8+,ff52-,chrome55-), v3 则适合手机端及PC端各个支持ES7的浏览器. 使用要求 : css/js 等资源必须与插件使用站点可跨域 ( ajax 正文进行存储需要) 使用方法: 1.上传插件包至服务器中 2.页面引入: <script type="text/javascript" src="youpath/entrance.js" async=""></script> 3.注意,页面中除以上无需任何其它 <style>或<script> ,以便实现版本和内容统一调度和管理. 4.按下方配置方法在 entrance

关于Nginx的一些优化(突破十万并发)

大憨熊 提交于 2019-12-03 23:24:52
本文介绍了一些能够提升Nginx性能的指令和一些Linux内核优化方案,这些参数在某些生产环境中已经应用并且 达到了不错的效果(如果带宽足够,甚至可能突破十万并发),每一个网站对应的业务都应该是不同的优化方案。 这篇文档适合于搭建某些静态请求较多,并且为大并发,需要快速处理请求的广告服务器或图片服务器。 nginx指令中的优化(配置文件) worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数。 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。 worker_rlimit_nofile 102400; 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。 use epoll; 使用epoll的I/O模型,这个不用说了吧。 worker_connections 102400; 每个进程允许的最多连接数

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

≯℡__Kan透↙ 提交于 2019-12-03 23:18:28
http://www.cnblogs.com/edisonchou/ 《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构 此篇已收录至 《大型网站技术架构》读书笔记系列目录 贴,点击访问该目录可获取更多内容。 首先,所谓网站的伸缩性,指 不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力 。在整个互联网行业的发展渐进演化中,最重要的技术就是 服务器集群 ,通过不断地向集群中添加服务器来增强整个集群的处理能力。 一、网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩   (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性;   (2)横向分离:将不同的业务模块分离部署,实现系统的伸缩性; 1.2 单一功通过集群规模实现伸缩   使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务。具体来说,集群伸缩性又分为应用服务器集群伸缩性和数据服务器集群伸缩性。这两种集群对于数据状态管理的不同,技术实现也有很大的区别。  It is said that 当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车 。 二、应用服务器集群的伸缩性设计 2.1 应用服务器那点必须知道的事儿   (1)应用服务器应该被设计成 无状态 的,即应用服务器不存储请求上下文信息;构建集群后

cookie

南楼画角 提交于 2019-12-03 23:02:23
cookie 2019 年 11 月 4 日 10:49 · cookie 是什么鬼 · 首先得先了解一下 HTTP( 超文本传输协议 ) HTTP 是一种无状态协议,即服务器不保留与客户交易 ( 会话 ) 时的任何状态 , 同一个客户端的这次请求和上次请求没有对应关系 , 它并不知道这两个请求来自同一个客户端 , 为了解决这个问题, Web 程序引入了 cookie 机制来维护状态。 ( 但 这 种健忘症似的毛病 , 大大减轻了服务器记忆负担,从而保持较快的响应速度 ) · 概念 : · cookie 是一种会话跟踪技术,是浏览器提供的一种机制 , 是存储于访问者计算机中的一小块数据 , 可以由 JavaScript 对其进行操作 ( 设置、读取、删除 ) , 其仅仅是浏览器实现的一种数据存储功能 会话:用户进入网站,开始浏览信息到关闭浏览器的过程,就称之为是一次会话 , 会话跟踪技术:浏览器和服务器之间在进行多次请求间共享数据的过程,就称为会话跟踪技术 cookie 由服务器生成,发送给浏览器,浏览器把 cookie 以 kv 形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该 cookie 发送给服务器。 由于 cookie 是存在客户端上的,所以浏览器加入了一些限制确保 cookie 不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的 cookie

关于nginx的一些优化(突破十万并发)

假装没事ソ 提交于 2019-12-03 23:00:24
一般来说nginx配置文件中对优化比较有作用的为以下几项: worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数。 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。 worker_rlimit_nofile 102400; 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。 use epoll; 使用epoll的I/O模型,这个不用说了吧。 worker_connections 102400; 每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。 keepalive_timeout 60; keepalive超时时间。 client_header_buffer_size 4k; 客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置

Mysql常见的引擎

家住魔仙堡 提交于 2019-12-03 22:44:47
Mysql常见的引擎 常用的引擎是:Innodb和Myiasm这两种引擎: innodb: 提供了对事务的ACID操作,还提供了行级锁和外键约束,,他的优势就是处理大量数据,在msql启动的时候,首先会建立一个缓存池,主要是缓存数据和索引,但是操作大规模的数据查找时很慢,所以建议当需要数据库的事务操作时,使用这个,还有就是在写的时候不会锁定全表,所以在大规模并发操作的时候会提高效率; Myiasm: 这个是默认的引擎,不提供事务和行级锁和外键约束,当在insert和update时会锁定全表,所以在执行写操作对的时候效率会很慢, 和innodb不同的是,myiasm保留了行数,所以在执行select count(*) from 的时候会很快,不需要扫描全表,当我们执行的读操作多于写操作的时候,并且不需要事务的支持,我们可以使用myisam这个引擎。 这两种引擎的数据结构都是B+树 存储的不同: mysisam树节点存储得是数据的地址,指向实际的数据; innodb树节点存储得是实际的数据;这种索引也被称为聚集索引 常见的引擎 InnoDB MyISAM Memory/Heap BDB Merge Example CSV MaxDB Archive MyISAM:Mysql 5.0之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务 InnoDB:事务型速记的首选引擎

技术架构的战略和战术

无人久伴 提交于 2019-12-03 22:41:31
技术架构,是将产品需求转变为技术实现的过程。技术架构解决的问题包括了如何进行纯技术层面的分层、开发框架选择、语言选择(这里以 JAVA 语言为主)、涉及到各自非功能性需求的技术点(安全、性能、大数据)。技术架构是确定组成应用系统实际运行的技术组件、技术组件之间的关系,以及部署到硬件的策略。 技术架构面临最大的挑战是“不确定性”。在技术架构上,很多时候就会面临这种选择。是要选择业界最新的技术?还是选择团队最熟悉的技术?如果选择最新的技术,遇到新技术出了问题怎么解决?如果选择目前熟悉的技术,后续技术演进怎么办?这些都是架构师在做技术架构过程中需要考虑的。 业务在千变万化、技术在层出不穷,没有一套通用的技术架构模式来适用所有的系统。那么,我们如何保证在做技术架构时,能够实现一个稳定、出色的系统。面对这些“不确定性”时的架构设计问题,这里从战略和战术两个层面来提供一些设计原则。战略层提供的是技术架构的方法和思路,属于顶层设计;战术层提供的是技术架构的技术实践方式,更偏向详细设计。 战略层设计原则 战略层的设计原则就是:合适原则、简单原则、演化原则。 1.1 合适原则 技术人员有一种很强的技术情怀,就是在做设计的过程中,很希望挑战新的技术、在项目中采用最新的框架、或者自己重造一个比业界的还要牛的轮子。这样才能够显示出自己的优秀,以至于不让自己显的那么平庸。比如

nginx 高并发配置参数

时光总嘲笑我的痴心妄想 提交于 2019-12-03 22:34:55
一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。 2. worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一 个进程分配到多个cpu。 3. worker_rlimit_nofile65535; 这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文 件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。 现在在linux2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。 这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。 查看linux系统文件描述符的方法: [root@web001 ~]# sysctl -a | grep fs.file fs

Google推荐——Glide使用详解

一个人想着一个人 提交于 2019-12-03 20:38:28
零、前言 本文所使用的Glide版本为3.7.0 「推荐」设计模式系列 设计模式(零)- 面向对象的六大原则 设计模式(一)- 单例模式 设计模式(二)- Builder模式 设计模式(三)- 原型模式 设计模式(四)- 工厂模式 设计模式(五)- 策略模式 设计模式(六)- 状态模式 设计模式(七)- 责任链模式 设计模式(八)- 解释器模式 设计模式(九)- 命令模式 设计模式(十)- 观察者模式 设计模式(十一)- 备忘录模式 设计模式(十二)- 迭代器模式 持续更新中... 一、简介 Glide,一个被google所推荐的图片加载库,作者是bumptech。这个库被广泛运用在google的开源项目中,包括2014年的google I/O大会上发布的官方app。(PS:众所周知的简介就到此为止了) Glide 对于 Android SDK 的最低要求是 API level 10 Glide滑行的意思,可以看出这个库的主旨就在于让图片加载变的流畅。现在被广泛使用,当然还是有很多开发者使用Square公司的picasso,也有两个库的对比 原文链接: http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en 译文链接: http://jcodecraeer.com/a