Tengine(Nginx),


1.真实服务器(例如:tomcat)都有自己的计算瓶颈,在真实服务器和客户端之间加上lvs是解决高并发访问和网络IO瓶颈问题(lvs的keepalived是为了解决lvs自身的高可用),
但是lvs只是盲目的将客户端的请求轮询或者根据算法直接扔给后端的所有的服务器,这样实际上我们可以有更细致的划分,这个划分可以通过Nginx来实现映射(对应服务路径与对应服务的映射),即在lvs之间和真实服务器之间加上nginx。
因为lvs是工作在四层协议,不能解析请求URL和对业务处理,但是Nginx是工作在七层协议(从应用层到物理层,所有的环节),能够解析请求URL和进行业务处理!
同时也要注意:客户端不会和lvs服务器进行三次握手,即不会建立连接,lvs服务器(DR模式)只是将请求转发,而nginx会和客户端进行三次握手,即可以进行建立连接,也就是nginx可以隐藏后面的真实服务器与客户端握手,传递数据!
而且nginx后面的真实的服务器其实就可以是内网的IP,

切记:这种拆分是性能的拆分,是功能的拆分,而hadoop集群或者spark集群是做数据分析的,是数据的拆分,甚至spark是用于机器学习的,是可以通过数据训练和智能算法不断自我学习的!


2.nginx服务器中内部可以多个内部服务器(即虚拟服务器)!

3.nginx可以接受的并发也就5,6万,优化一下可以可能最大达到10万,而tomcat也就几百的时候就慢了(300多)!
  官方测试nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定

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

5.Nginx和apache的优缺点
  1、nginx相对于apache的优点:轻量级,同样起web 服务,比apache 占用更少的内存及资源?抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能? 高度模块化的设计,编写模块相对简单? 社区活跃,各种高性能模块出品迅速啊?
  2、Nginx 配置简洁, Apache 复杂
  3、最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
  4、动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;(模块化开发)

6.Tengine 是nginx的加强版,封装版,淘宝开源(更适于国内的高并发);nginx轻松抗住5万访问量,而Tengine轻松抗住10万访问量!


7.这个高的并发量数据库是怎么顶住的啊?

8.tomcat不用在生成环境,但是tomcat功能齐全(重型),nginx是轻型的,不进行后台的业务处理啥的,只是功能转发!

9.Linux之所以有用户和用户组主要是因为不同的角色,拥有不同的权限!

10.
  如何查看我的nginx默认安装目录?百度吧(要么就是在安装的时候注意!)
 
   ./configure --help 中的默认with是现有的?还是可以有这些功能?
     这表示源码我们是该软件带着的,但是这个模块还没有添加到当前软件的功能中,如果想让该软件有这个功能,就需要自己./configure --add-module就好!
   
   
11.除了将bin目录加入到path路径下;还可以用软连接将这个bin目录映射到path已有的路径下(已有的bin目录下)!例如ln -s /usr/local/nginx/sbin/nginx /usr/bin
   当然也可以设置开机自启动开启服务,(脚本中的函数执行优先于脚本中的命令),将脚本加入到/etc/init.d(而且这个脚本一般不要有.sh后缀,因为如果带后缀的话:我们用service 服务 start的时候,这个服务也是带.sh后缀的;而且要想让开机自启动,其实在这个脚本中还必须导入一些公共模块(用.或者source来实现) )   同时
   也可以用service启动关闭了!
   chkconfig --add 服务(服务添加到开机自启动,但是不一定服务是开启的,所以需要下面的chkconfig 服务 on 命令)
   chkconfig --list 服务
   chkconfig 服务 on  开启服务
   
12.
    1、修改nginx文件的执行权限
        chmod +x nginx
        
    2、添加该文件到系统服务中去
        chkconfig --add nginx
        
    3、    开机自运行
        chkconfig 服务 on  开启服务
        
    4、    查看是否添加成功
        chkconfig --list nginx
      
    5、 启动,停止,重新装载
       service nginx start|stop|reload

13.nginx默认监听的是80端口,在浏览器中如果我们不指定端口号,其实默认也是80端口号 ,LVS给虚拟IP设置的端口号我们可以指定为80,也可以指定为其它的!
   tomcat默认端口号为8080,http服务的默认端口号为80。在浏览器地址栏输入ip或者域名之后,如果不输入端口号,默认就是80端口。

    修改tomcat目录下的conf/server.xml文件,service标签下的Connector可以有多个,再添加一个80端口的连接就可以了

    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
      
    <Connector port="80" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

                              

                  
14.添加普通用户的话,root用户可以访问吗?加用户是指的这个用户可以访问这个文件?
  root用户当然可以访问,root用户是不受权限限制的!
默认安装后,nginx 的默认配置中,user nobody; 这行是加注释的。查了 user 的作用是:主模块指令,指定 Nginx Worker 进程运行用户以及用户组。
也就是这个user可以理解成谁在运行nginx进程!

15.HTTP1.1新加入了会话保持功能,Nginx这里也有!(Nginx配置文件中针对HTTP请求的设置会话保持,默认是65秒)


16.Nginx中可以设置多个虚拟服务器,我们可以设置每个虚拟服务器的监听端口号 (ip) ,以及虚拟服务器的域名!

17.注意:nginx的nginx.conf配置文件支持的脚本文件格式,要求每一行都必须以;(分号)结尾!


18. default_server  加在端口号下!

19. server {
        listen       80  default_server;
        server_name  oschina.net  www.oschina.net;
        ...
    }

    先看看上面这段配置,listen 指令后面有一个参数 default_server ,这个参数是在 0.8.21 版本以后才有的,而之前是 default 指令。

    Nginx 的虚拟主机是通过HTTP请求中的Host值来找到对应的虚拟主机配置,如果找不到呢?那 Nginx 就会将请求送到指定了 default_server 的 节点来处理,如果没有指定为 default_server 的话,就跑到 localhost 的节点,如果没有 localhost 的节点,那只好 404 了。

    另外你也可以指定对于没有匹配的 Host 值时,返回错误到客户端,这在现在国内用来处理未备案域名指向自己时非常有用,看看下面的配置:

    server {
        listen       80  default_server;
        server_name  _;
        return       444;
    }

    通过返回444这个Nginx的非标准错误码来让Nginx断开与浏览器之间的连接。
    
    
20.user nginx是为了让只有nginx用户可以访问nginx安装目录的html文件下下的资源(这个html文件件的权限可以设置一下)!


:注意:老外和中国遇到的情况是有差别的,他们可能会遇到时差问题(因为不 在同一个时区);但是中国人更容易遇到的是高并发量的问题,因为大家都在同一个时区,而且人又特别多,例如双十一的时候,大家在同一时刻一起点击,这时候的并发量还是很大的,而老外一般不在一个时区,就算在一个时区,它们几乎也不会一起干一件什么事!



21.为什么需要telnet?
  telnet就是查看某个端口是否可访问。我们在搞开发的时候,经常要用的端口就是 8080。那么你可以启动服务器,用telnet 去查看这个端口是否可用。
    输入telnet测试端口命令: telnet IP 端口 或者 telnet 域名 端口,回车。
  如果端口关闭或者无法连接,则显示不能打开到主机的链接,链接失败;端口打开的情况下,链接成功,则进入telnet页面(全黑的),证明端口可用。

22.注意:不仅仅是lvs可以配置keepalived高可用,nginx同样可以配置keepalived高可用!(即keepalived是独立于lvs的,它是单独的一个提供高可用的服务,那么至于后面为什么有了keepalived还要用zookeeper后面会给出解释!)


       






相关内容

    暂无相关文章