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之前

可以利用锁定数据库的方法来为用户提供一种安全的访问方式,保证用户的操作不被其他用户干扰

  1. 锁定表 继承第4点 处理延迟 由用户锁定带来延迟
  2. 外键 锁定表维护数据的完整性,不能保证数据的关联性 我们可以使用外键 定义的方法是在CREATETABLE语句中加上TYPE=INNODB
  3. 使用索引 可以令数据库以比没有索引快的多的速度检索 尽量不要给一个有大量重复的值得字段建立索引
    这样没用 还降速
  4. 优化的查询语句 首先最好是在相同类型的字段间进行比较的操作 其次在建有索引的字段上尽量不要使用函数进行操作 第三在搜索字符型字段,我们有时使用LIKE关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的

Redis 储存类型开发中的应用以及持久化的概念和启用方法

Redis

 list(名字:内容)

set(无序集合)

hash(键:多个属性)

string(一个key对应一个value)

Zset(有序集合)

开发中的应用

可以使用list存储历史记录 用hash来存储个人信息

持久化和启用方法

RDB(全量写入):将内存的数据库写到本地磁盘 启用:在redis.conf设置

AOF(增量写入):记录数据库操作比RDB有更好的恢复完整性
redis重启优先启用

多线程服务器

多线程:thread

Scrapy 反反爬虫机制

  1. 禁用cookies
    COOKIES_ENABLED=False
  2. 设置下载延迟
    DOWNLOAD_DELAY=3
  3. 设置下载中间件
  4. Ip池 vpn和代理ip
  5. 使用crawlera(专用于爬虫的代理组件)正确配置和设置下载中间键后项目所有的request都是通过crawlera
  6. cookied池
  7. 动态设置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服务器部署 负载均衡 反向代理的更多相关文章

  1. nginx域名转发 负载均衡 反向代理

    公司有三台机器在机房,因为IP不够用,肯定要分出来,所以要建立单IP 多域名的反向代理, 就是当请求www.abc.com 跳转到本机, 请求www.bbc.com 跳转到192.168.0.35 机 ...

  2. Nginx服务器的使用与反向代理负载均衡

    目录 Nginx服务器 一:什么是Nginx? 什么是Nginx - Nginx与其他服努器的性能比较 二:如何在Linux中搭建Nginx服务器? 常见的错误 三:Nginx的反向代理和负载均衡 什 ...

  3. Nginx HTTP负载均衡/反向代理的相关参数测试

    原文地址:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/03/15/1984976.html 测试目的 (1)弄清楚HTTP Upstr ...

  4. nginx服务器的负载均衡和动静分离(未完)

    安装nginx,我的博客里面有介绍源码和yum安装. 实战:使用nginx实现动静分离的负载均衡集群 实战:使用haproxy实现负载均衡集群 LB负载均衡集群分为两类:LVS(四层)和Nginx或p ...

  5. nginx做为web容器部署静态资源以及做负载均衡反向代理实现

    需求:  此时前台开发完成打包生成静态资源文件,要做到以下方面: 使用nginx部署静态资源,同时nginx要实现端口转发,隐藏真实后台地址,同时后台需要做一个负载均衡. localhost:7001 ...

  6. 架构之Nginx(负载均衡/反向代理)

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器 ,也是一个 IMAP/POP3/SMTP 代理 服务器 . Nginx 是由 Igor Sys ...

  7. nginx负载均衡(反向代理)

    6,安装nginx 6.1 依赖库安装  要安装在root根目录里,不要装在虚拟环境里面 yum install gcc-c++ pcre pcre-devel zlib zlib-devel ope ...

  8. nginx 负载均衡 反向代理

    nginx 通过方向代理实现负载均衡,负载均衡是大流量网站要做的措施,单从字面上的意思来理解为N台服务器平均分担负载,不会因为某一台服务器负载高宕机而影响用户访问网站,负载均衡至少需要三台服务器, 既 ...

  9. Nginx负载均衡反向代理 后端Nginx获取客户端真实IP

    Nginx 反向代理后,后端Nginx服务器无法正常获取客户端的真实IP nginx通过http_realip_module模块来实现的这需要重新编译,如果提前编译好了就无需重新编译了1,重新编译ng ...

随机推荐

  1. 关于./xhost: unable to open display问题的解决

    看了很多大同小异的帖子,都没能解决这个问题,以下是我的实测经验,注意第三步,很关键. 注:以下操作在确保vncserver.xdpyinfo服务正常的情况下进行 第一步:root登录,启动vncser ...

  2. spring boot项目启动报错

    在eclipse中运行没有任何问题,项目挪到idea之后就报错 Unable to start EmbeddedWebApplicationContext due to miss EmbeddedSe ...

  3. 数据存储之关系型数据库存储---MySQL存储

    MySQL的存储 利用PyMySQL连接MySQL 连接数据库 import pymysql # 连接MySQL MySQL在本地运行 用户名为root 密码为123456 默认端口3306 db = ...

  4. TCP/IP协议第一卷第三章 IP首部分析

    IP介绍 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP.IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 不可靠(unreliable)它不能 ...

  5. Git基础使用

    前言 Git是版本控制系统,由Linux开源社区开发.与其他的版本系统相比,Git更加快速,便捷.主要是Git存储的是快照,而非差异性比较.并且绝大数操作都是访问本地文件和资源,没有网络时也可以直接提 ...

  6. 『题解』Codeforces656E Out of Controls

    更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description You are given a complete undirected gr ...

  7. pandas处理excel的常用方法技巧(上)

    1. 导库 import pandas as pd 2. 读取excel文件 这里要注意的就是第二个参数header如果不设置,pandas会默认把excel的第一行当作columns,header= ...

  8. 详解Spring Security的HttpBasic登录验证模式

    一.HttpBasic模式的应用场景 HttpBasic登录验证模式是Spring Security实现登录验证最简单的一种方式,也可以说是最简陋的一种方式.它的目的并不是保障登录验证的绝对安全,而是 ...

  9. 数据结构之队列and栈总结分析

    一.前言: 数据结构中队列和栈也是常见的两个数据结构,队列和栈在实际使用场景上也是相辅相成的,下面简单总结一下,如有不对之处,多多指点交流,谢谢. 二.队列简介 队列顾名思义就是排队的意思,根据我们的 ...

  10. CAS3.5.2 Server登录后返回用户信息详细解决方案

    单点登录(Single Sign-On, 简称SSO)是目前比较流行的服务于企业业务整合的解决方案之一,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.大家在使用时CA ...