Nginx服务器部署 负载均衡 反向代理
Nginx服务器部署负载均衡反向代理
LVS Nginx HAProxy的优缺点
三种负载均衡器的优缺点说明如下:
LVS的优点:
1、抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
3、应用范围比较广,可以对所有应用做负载均衡;
4、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
LVS的缺点:
1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
2、如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了。
Nginx的优点:
1、工作在OSI第7层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy更为强大和灵活;
2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点;
6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;
7、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑用其作为反向代理加速器;
Nginx的缺点:
1、Nginx不支持url来检测。
2、Nginx仅能支持http和Email,这个它的弱势。
3、Nginx的Session的保持,Cookie的引导能力相对欠缺。
HAProxy的优点:
1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3、支持url检测后端的服务器;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6、HAProxy的算法较多,达到8种;
反向代理:代理服务器 正向:代理客户端
RESTFUL API 前后端分离
- 前端的数据发送与接收
1)提交表单数据
2)提交JSON数据 - 后端的数据接收与响应
1)接收GET请求数据
2)接收POST请求数据
3)响应请求
关于restful api:
设计:
协议 HTTPS
域名:
应该尽量将API部署在专用域名之下。
https
://api
.example
.com
如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。
https
://example
.org
/api/
版本号:https
://api
.example
.com
/v1/
路径
- § https://api.example.com/v1/zoos
- § https://api.example.com/v1/animals
- § https://api.example.com/v1/employees
Url:/api/v1.0/smscode/<mobile>&text=imagecode&id=image_code_id
Url:/api/版本号/路径
前后端分离:各负责各的接收ajax 返回json数据
Django应该擅长什么
FastDfs
分布式文件储存系统 一种允许文件通过网路在多台主机上分享的文件系统,可让机器上的多用户分析那个文件和存储空间 建议大小 4kb<file_size<500MB
构架
追踪服务器 均衡作用负责管理所有的存储服务器和组别
存储服务器 提供容量和备份服务 以group为单位 给个group有多个存储服务器 依赖于本地服务器 一个崩溃了恢复数据只能依靠组别里的其他机器 新鞋的文件会哈希的形式写进去
客户端 是上传下载的服务器,也就是项目部署的服务器 每个服务器都要安装nginx
Mysql语句储存过程存储优化
存储过程:
DELIMITER // 声明语句结束符,用于区分;
CEATE PROCEDURE demo_in_parameter(IN p_in int) 声明存储过程
BEGIN …. END 存储过程开始和结束符号
SET @p_in=1 变量赋值
DECLARE l_int int unsigned default 4000000; 变量定义
Mysql 优化原理:
选择数据类型只要遵循小而简单的原则就好,越小的数据类型通常会更快,占用更少的磁盘、内存,处理时需要的CPU周期也更少。越简单的数据类型在计算时需要更少的CPU周期,比如,整型就比字符操作代价低,因而会使用整型来存储ip地址,使用DATETIME来存储时间,而不是使用字符串。
1选取最实用的字段属性 在可能的情况下尽量包字段设置为nonull 查询时就不需要比较null
2.使用连接(join)来代替子查询(sub-queries)因为不需要创建临时表
3.使用联合来代替手动创建的临时表 将多条select查询语句合并为一个
4.事务 一系列语句来完成一个事务 如果一个语句错了就全错 可以保持数据库中的数据的一致性和完整性 begin开始 commit结束 rollback可以把数据库恢复到begin之前
可以利用锁定数据库的方法来为用户提供一种安全的访问方式,保证用户的操作不被其他用户干扰
- 锁定表 继承第4点 处理延迟 由用户锁定带来延迟
- 外键 锁定表维护数据的完整性,不能保证数据的关联性 我们可以使用外键 定义的方法是在CREATETABLE语句中加上TYPE=INNODB
- 使用索引 可以令数据库以比没有索引快的多的速度检索 尽量不要给一个有大量重复的值得字段建立索引
这样没用 还降速 - 优化的查询语句 首先最好是在相同类型的字段间进行比较的操作 其次在建有索引的字段上尽量不要使用函数进行操作 第三在搜索字符型字段,我们有时使用LIKE关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的
Redis 储存类型开发中的应用以及持久化的概念和启用方法
Redis
list(名字:内容)
set(无序集合)
hash(键:多个属性)
string(一个key对应一个value)
Zset(有序集合)
开发中的应用:
可以使用list存储历史记录 用hash来存储个人信息
持久化和启用方法
RDB(全量写入):将内存的数据库写到本地磁盘 启用:在redis.conf设置
AOF(增量写入):记录数据库操作比RDB有更好的恢复完整性
redis重启优先启用
多线程服务器
多线程:thread
Scrapy 反反爬虫机制
- 禁用cookies
COOKIES_ENABLED=False - 设置下载延迟
DOWNLOAD_DELAY=3 - 设置下载中间件
- Ip池 vpn和代理ip
- 使用crawlera(专用于爬虫的代理组件)正确配置和设置下载中间键后项目所有的request都是通过crawlera
- cookied池
- 动态设置User-Agent
多线程多进程的区别
多线程的优点:无需跨进程边界 程序逻辑和控制方式简单 所有线程可以直接共享内存线程方式消耗的总资源比进程方式好
缺点:每个线程与主进程公用地址空间 受限于2GB的空间 线程之间的同步和加锁控制比较麻烦。一个线程的崩溃可能影响整个程序的稳定性
多进程的优点:每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;
通过增加CPU,就可以容易扩充性能; 可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;
每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大
缺点:逻辑控制复杂,需要和主程序交互; 需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算
多进程调度开销比较大; 最好是多进程和多线程结合,即根据实际的需要,每个CPU开启一个子进程,这个子进程开启多线程可以为若干同类型的数据进行处理。当然你也可以利用多线程+多CPU+轮询方式来解决问题……
进程优点:顺序程序的特点具有隔离性和再现性
程序的并发执行和资源共享,多道程序设计出现后实现了程序的并发执行和资源共享,提高了系统的效率和系统的利用率
缺点:操作系统调度切换多个线程比切换调度进程在速度上快的多,并且进程间内容无法共享通讯比较麻烦
线程缺点:调度要保存线程状态频繁调度,需要占用大量的机时 程序设计容易出错
优点:一种节俭的多任务操作方式 使用相同的地址空间共享大部分数据切换的时间远小于切换进程需要的时间 使多CPU系统更加有效
Scrapy-redis 分布式爬虫原理
Mongodb的爬虫中的应用开启方式
Python标准库递代器生成器装饰器在开发中的实际应用
Git的使用
14_赵文化 08:30:12
函数作用域
a = 1
def func(a):
a += 1
print(a)
深拷贝,浅拷贝
copy.copy() 和 copy.deepcopy()方法的不同
celery发邮件流程
redis如果服务器宕机了,该怎么办,怎么解决
每个分类有不同商品,每个商品有不同规格,可以按照不同规格的商品下单,按照这个设计一个api希望前端给你返回什么数据
用代码实现以下pagenatior的具体内容
线上服务器出现了问题,你应该怎么解决
14_赵文化 08:51:35
git 中rebase和merge的区别,reset和revert的区别
进程,线程,协程分别是什么,区别为什么
静态方法是什么,有什么应用场景
celery发送邮件,任务函数是以什么数据类型保存在redis中
python内存是如何进行管理的
数据库如何优化
递归层级过高会存在什么问题
fastdfs实现原理
迭代器,生成器,装饰器的原理,手写一个生成器和装饰器
TCP HTTP 网络协议
Flask框架开发需要擅长什么
Celery
第三方JDK的使用
分页
Xpath使用
Nginx服务器部署 负载均衡 反向代理的更多相关文章
- nginx域名转发 负载均衡 反向代理
公司有三台机器在机房,因为IP不够用,肯定要分出来,所以要建立单IP 多域名的反向代理, 就是当请求www.abc.com 跳转到本机, 请求www.bbc.com 跳转到192.168.0.35 机 ...
- Nginx服务器的使用与反向代理负载均衡
目录 Nginx服务器 一:什么是Nginx? 什么是Nginx - Nginx与其他服努器的性能比较 二:如何在Linux中搭建Nginx服务器? 常见的错误 三:Nginx的反向代理和负载均衡 什 ...
- Nginx HTTP负载均衡/反向代理的相关参数测试
原文地址:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/03/15/1984976.html 测试目的 (1)弄清楚HTTP Upstr ...
- nginx服务器的负载均衡和动静分离(未完)
安装nginx,我的博客里面有介绍源码和yum安装. 实战:使用nginx实现动静分离的负载均衡集群 实战:使用haproxy实现负载均衡集群 LB负载均衡集群分为两类:LVS(四层)和Nginx或p ...
- nginx做为web容器部署静态资源以及做负载均衡反向代理实现
需求: 此时前台开发完成打包生成静态资源文件,要做到以下方面: 使用nginx部署静态资源,同时nginx要实现端口转发,隐藏真实后台地址,同时后台需要做一个负载均衡. localhost:7001 ...
- 架构之Nginx(负载均衡/反向代理)
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器 ,也是一个 IMAP/POP3/SMTP 代理 服务器 . Nginx 是由 Igor Sys ...
- nginx负载均衡(反向代理)
6,安装nginx 6.1 依赖库安装 要安装在root根目录里,不要装在虚拟环境里面 yum install gcc-c++ pcre pcre-devel zlib zlib-devel ope ...
- nginx 负载均衡 反向代理
nginx 通过方向代理实现负载均衡,负载均衡是大流量网站要做的措施,单从字面上的意思来理解为N台服务器平均分担负载,不会因为某一台服务器负载高宕机而影响用户访问网站,负载均衡至少需要三台服务器, 既 ...
- Nginx负载均衡反向代理 后端Nginx获取客户端真实IP
Nginx 反向代理后,后端Nginx服务器无法正常获取客户端的真实IP nginx通过http_realip_module模块来实现的这需要重新编译,如果提前编译好了就无需重新编译了1,重新编译ng ...
随机推荐
- VuforiaAR 教程
Vuforia AR不仅可以识别图片也可以识别三维物体 直接上步骤: 1)开发环境 unity2017直接集成了Vuforia AR开发环境,不过在安装时要选择此项,也可以后续去unity官网下载相 ...
- fenby C语言 P9
逻辑运算 真1 假0 &&与 真&&真为真 真&&假为假 假&&真为假 假&&假为假 ||或 真||真为真 真||假为真 ...
- Centos7 基础命令与软件的安装
本人小白一枚正在老男孩培训,所以从现在开始把我学到的知识都分享给大家,该随笔会一直更新 centos7基础命令与软件 ps:命令与参数之间必须加上空格,安装成功时最后一行会有 Complete! ...
- 在VMware下进行的使用ssh服务管理远程主机
基于密钥的安全验证--sshd服务的配置文件解析(两台linux) 首先你有两台虚拟机 并且能够ping通(该实验的目的是通过客户端访问服务端) 打开终端进入到这个界面 看一下服务 如果有这三个服 ...
- UVA12433 【Rent a Car】
这题应该算是比较难的一道网络流的题,(但却在我校OJ考试上出现了),但是大家只要能理解此图的建边方式就行. 假设有5天的租车需求,虚拟出2*n+2 即 12个节点,0为源点,12为汇点. 1,源点到1 ...
- C++学习笔记11_STL
STL又叫标准模板库,提供各种容器. STL是C++一部分,不休要额外安装什么,它被内建在编译器之内. STL重要特点是,数据结构和实现分离. *所谓迭代器,类似一个游标,使用++指向下一个元素,使用 ...
- [考试反思]1014csp-s模拟测试73:侵蚀
嗯...还是没有改变那个现状 依旧只是打满了暴力,虽说T2打的的确比暴力好很多,但是因为出题人没有设分所以和暴力等同. 离上面的分差还是大的很,下面还是追的很紧 而且进几场的排名也是连续下滑... 虽 ...
- 地精部落:dp
Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...
- 20190820 Tue 集训总结&NOIP模拟 27
低谷度过了? 但是skyh阿卡了,还是反衬出我的辣鸡. T1知道要sort,却忘了判重,正解不如暴力分高,555. T2成功化出正解柿子,然后化过头了,化出了无法DP的柿子. 果然不够强,大神们一眼就 ...
- dp杂题(根据个人进度选更)
----19.7.30 今天又开了一个新专题,dp杂题,我依旧按照之前一样,这一个专题更在一起,根据个人进度选更题目; dp就是动态规划,本人认为,动态规划的核心就是dp状态的设立以及dp转移方程的推 ...