首页
精选文章LVS查看全文LVS是常用的四层负载均衡,目前已经被加入linux内核。四层负载均衡是指运行在传输层的负载均衡机制,而七层负载均衡一般是指运行在应用层的机制,比如nginx,haproxy等7层负载均衡组件都可以根据url进行路由,但是4层负载均衡没有对应的能力,同样,由于4级负载均衡不需要知道应用层协议,所以不需要解析请求,只是要将网络请求进行转发,所以一般拥有更高的性能。 LVS主要组成部分为: 负载调度器(load balancer/ Director),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。 服务器池(server pool/ Realserver),是一组真正执行客户请求的服务器,执行的服务一般有WEB、MAIL、FTP和DNS等。 共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。 LVS的负载均衡有三种策略,NAT,TUN,DR。 NAT VS/NAT是一种最简单的方式,所有的RealServer只需要将自己的网关指向Director即可。客户端可以是任意操作系统,但此方式下,一个Director能够带动的RealServer比较有限。在VS/NAT的方式下,Director也可以兼为一台RealServer。 TUN IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation…InnoDB查看全文InnoDB引擎设计上借鉴了Oracle数据库的架构,是一个事务安全的存储引擎,其最早有Innobase Oy公司研发,从Mysql 5.5开始就是默认的存储引擎。Mysql支持行锁,MVCC,一致性非锁定读等特性,是mysql在OLTP应用中首选的存储引擎。 InnoDB引擎的整体架构可以分为几个模块: 线程模型,InnoDB的线程模型较为复杂,有处理请求的IO线程,还有大量定时执行的线程。 内存模型,InnoDB引擎主要的内存区域是Buffer Pool,Buffer Pool同时承担Buffer和Cache的功能,即为读请求提供缓冲,也为写请求提供缓冲区。 存储模型,InnoDB引擎提供了B+树等数据结构作为索引。 事务模型,数据库事务的ACID,InnoDB引擎分别通过以下能力实现: 原子性,通过UndoLog回滚操作实现原子性。 一致性,提供唯一索引,外健等机制进行数据约束。 隔离性,不同的隔离级别实现的方式不同,对于默认的可重复读隔离级别通过MVCC、间隙锁等实现。 持久性,通过RedoLog等机制实现。 线程模型 内存模型 InnoDB存储引擎的持久化数据存在磁盘上,磁盘上记录的数据按照页的方式进行管理,出于性能考虑,InnoDB引擎设计了Buffer Pool(缓冲池),用于缓存磁盘上的数据,同时用于写操作的buffer。 InnoDB引擎对数据库的读写操作,都会首先从磁盘上加载数据到Buffer Pool,对于写操作会先修改Buffer Pool的数据,然后再以一定频率刷到磁盘上。 通常情况下,Cache和Buffer两个词的语义是有差别的,Cache一般是指数据缓存,主要解决的频繁读取热点数据的性能问题…IO模型查看全文IO是计算机术语,是Input(输入)和Output(输出)的简称。IO分为磁盘IO和网络IO,磁盘IO是指应用程序对磁盘数据进行读写的操作,网络IO是指应用程序对网络数据进行读写的操作。 IO操作一般和读操作,写操作关联。读操作是应用程序将数据从IO设备(磁盘或者网络)读取出来可以用于业务操作,写操作一般是应用程序将程序处理的结果写到IO设备(磁盘或者网络)。 一般的操作系统,例如Linux下,应用程序不能直接和IO设备交互,所以读写操作要经过系统调用调用内核的IO能力,内核再与IO设备进行交互。 因为IO设备一般读写速度都较低,为了提高读写的效率,一般都会采用读写缓冲区的方式,将数据提前缓冲做批量的读写操作。对于磁盘来说,Linux内核提供了统一的缓冲区能力,在进行读的时候会先从系统缓冲区中读取数据,当数据在缓冲区不存在的时候在进行实际的读取,读取之后会先放在系统缓冲区。 写入磁盘的时候,一般也会先写入磁盘缓冲区,之后批量进行磁盘的写入,写缓冲不仅仅可以提高写入的效率,还减少了磁盘的寻道时间。但是在断电情况下,可能会丢失部分数据。 同理,在网络IO的时候,内核也提供了Socket缓冲区作为数据的读写缓冲,但是因为网络IO不是设备级别,而是链接级别的,所以每个socket都会有自己的读缓冲区和写缓冲区。 综上,读操作需要2次数据拷贝,分别是将数据从用户空间拷贝到内核空间,从内核空间拷贝到IO设备。同理写操作也需要2次数据拷贝,将数据从IO设备拷贝到内核空间,再从内核空间拷贝到用户空间。 IO模型是指在进行IO操作的时候的线程模型以及读写模式,一般可以分为几种,BIO,NIO以及AIO。 BIO BIO是指阻塞IO… |
热门分类开源Golang消息队列JavaJavascriptLinuxMysqlNLPPHP事务内存管理分布式理论分类存储常用存储开源软件操作系统画图网络编程数据库算法虚拟化前端存储理论常用算法微服务数据结构算法应用计算机原理中间件共识算法分布式分治动态规划容器并发排序架构组件绘图工具网络协议编程语言理论算法思想树缓存架构C++字符串算法工程思想搜索
算法题库精选内容 |