linux启动过程

  1. 开机自检,加载BIOS
  2. 读取MBR
  3. Boot Loader grub引导菜单
  4. 加载kernel内核
  5. init进程依据inittab文件夹来设定运行级别
  6. init进程执行rc.sysinit
  7. 启动内核模块
  8. 执行不同运行级别的脚本程序
  9. 执行/etc/rc.d/rc.local
  10. 执行/bin/login程序,启动mingetty,进入登录状态

ha和nginx的区别

  • Nginx优点:
  1. 工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名.目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行。
  2. Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能。
  3. Nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来。
  4. 可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS小。
  5. Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码.超时等,并会把返回错误的请求重新提交到另一个节点。
  6. 不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的Web应用服务器。LNMP也是近些年非常流行的Web架构,在高流量环境中稳定性也很好。
  7. 可作为中层反向代理使用。
  8. 可作为静态网页和图片服务器。
  9. Nginx社区活跃,第三方模块非常多,相关的资料在网上比比皆是。
  • Nginx缺点:
  1. 适应范围较小,仅能支持http.https.Email协议。
  2. 对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。
  • LVS优点:
  1. 抗负载能力强.是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
  2. 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
  3. 工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
  4. 无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
  5. 应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http.数据库.在线聊天室等等。
  • LVS的缺点:
  1. 软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
  2. 如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。
  • HAProxy优点:
  1. HAProxy是支持虚拟主机的,可以工作在4.7层(支持多网段)
  2. HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
  3. HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
  4. HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。
  5. HAProxy负载均衡策略非常多
  • HAPorxy缺点:
  1. 不支持POP/SMTP协议
  2. 不支持SPDY协议
  3. 不支持HTTP cache功能。现在不少开源的lb项目,都或多或少具备HTTP cache功能。
  4. 重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好。
  5. 多进程模式支持不够好
  • 总结

从定位上来说,nginx重点是web服务器,替换的是apache,同时具备lb的作用,haproxy是单纯的lb,可以对照lvs进行比较
从架构上来说,进程模型不一样,haproxy是单进程方式无法充分利用多核,nginx是多进程模式
上手难易上来说,nginx的模块化更好,和lua之耦合比较紧密,比较方便进行业务模块的添加,开发起来轻量,haproxy需要多整体架构比较熟悉才能二次开发,haproxy在转发性能上略胜一筹,代码里面有很多geek的用法,比如rbtree非常高效
两个都是比较好的开源软件,nginx社区活跃,haproxy更新稍慢,比如https功能做了很久才发布

mysql主从原理

  1. 主写binlog
  2. 主向从推送binlog
  3. 从开启io线程,读取binlog内容写入relaylog
  4. 从开启sql线程复现sql

keepalive协议

vrrp协议

pxc与主从的区别

  1. PXC集群方案所有节点都是可读可写的,Replication从节点不能写入,因为主从同步是单向的,无法从slave节 点向master点同步。
  2. PXC同步机制是同步进行的,这也是它能保证数据强一致性的根本原因,Replication同步机制是异步进行的, 它如果从节点停止同步,依然可以向主节点插入数据,正确返回,造成数据主从数据的不一致性。
  3. PXC是用牺牲性能保证数据的一致性,Replication在性能上是高于PXC的。所以两者用途也不一致。PXC是用于 重要信息的存储,例如:订单、用户信息等。Replication用于一般信息的存储,能够容忍数据丢失,例如:购 物车,用户行为日志等。

apache与nginx的区别

  • Nginx 配置简洁, Apache 复杂 ;Nginx 静态处理性能比 Apache 高 3倍以上 ;
  • Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用;Apache 的组件比 Nginx 多 ;
  • apache是同步多进程模型,一个连接对应一个进程;Nginx是异步的,多个连接(万级别)可以对应一个进程;
  • Nginx处理静态文件好,耗费内存少;动态请求由apache去做,Nginx只适合静态和反向;
  • Nginx适合做前端服务器,负载性能很好;Nginx本身就是一个反向代理服务器 ,且支持负载均衡。

nginx自动增减负载节点是怎么做的

Tomcat 的连接器

Tomcat 的连接器有两种:HTTP和AJP
AJP(Apache JServ Protocol):AJP是面向数据包的基于TCP/IP的协议,它在Apache和Tomcat的实例之间提供了一个专用的通信信道
主要有以下特征:

  • 在快速网络有着较好的性能表现,支持数据压缩传输;
  • 支持SSL,加密及客户端证书;
  • 支持Tomcat实例集群;
  • 支持在apache和tomcat之间的连接的重用

tomcat工作模式

Tomcat Connector(连接器)有三种运行模式:bio nio apr

  • bio(blocking I/O)

即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。是基于JAVA的HTTP/1.1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的。一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。(Tomcat7 或以下,在 Linux 系统中默认使用这种方式)

一个线程处理一个请求,缺点:并发量高时,线程数较多,浪费资源

  • nio(new I/O)

是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。要让Tomcat以nio模式来运行只需要在Tomcat安装目录/conf/server.xml 中将对应的中protocol的属性值改为 org.apache.coyote.http11.Http11NioProtocol即可

利用 Java 的异步请求 IO 处理,可以通过少量的线程处理大量的请求

注意: Tomcat8 以上版本在 Linux 系统中,默认使用的就是NIO模式,不需要额外修改 ,Tomcat7必须修改Connector配置来启动

  • apr(Apache Portable Runtime/Apache可移植运行时) ( 安装配置过程相对复杂)

Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。从操作系统级别来解决异步的IO问题

kvm