大家好,又见面了,我是全栈君。
是计算机中程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单元,是操作系统结构的基础。进程是一个执行中的程序
进程的三态模型:运行、就绪、阻塞
进程的五态模型:新建态、活跃就绪/静止就绪、运行、活跃阻塞/静止阻塞、终止态
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。
线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。
在单个程序中同时运行多个线程完成不同的工作,称为多线程。
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
线程与进程
协程和线程
多进程模式
多线程模式
缺点
现在各种高并发异步IO的服务器程序都是基于epoll实现的
IO复用异步非阻塞程序使用经典的Reactor模型,Reactor顾名思义就是反应堆的意思,它本身不处理任何数据收发。只是可以监视一个 socket句柄的事件变化
reactor模型
常见reactor模型
查询缓存可以看做是SQL文本和查询结果的映射,第二次查询的SQL和第一次查询的SQL全相同,则会使用缓存
表的结构或数据发生改变时,查询缓存中的数据不再有效
配置:
query_cache_type
查询缓存类型,有0、1、2三个取值。0则不使用查询缓存。1表示始终使用查询缓存。2表示按需使用查询缓存。
query_cache_size
默认情况下 query_cache_size
为0,表示为查询缓存预留的内存为0,则无法使用查询缓存
SET GLOBAL query_cache_size= 134217728
使用
querycache_type
为1时,亦可关闭查询缓存
SELECT SQL_NO_CACHE FROM my_table WHERE condition;
query_cache_type
为2时,可按需使用查询缓存
SELECT SQL_CACHE FROM my_table WHERE condition;
其他
查看命中次数
SHOW STATUS LIKE'Qcache_hits';
清理缓存
FLUSH QUERY CACHE∥清理查询缓存内存碎片
RESET QUERY CACHE∥从查询缓存中移出所有查询
FLUSH TABLES;//关闭所有打开的表,同时该操作将会清空查询
缓存中的内容
redis
/ memcache
缓存索引创建原则
索引注意事项
优化查询过程中的数据访问
优化长难句的查询语句
优化特定类型的查询语句
尽量使用 Inno DB存储引擎
分区操作
分库分表
负载均衡
基于URL等应用层信息的负载均衡
Nginx的 proxy是它一个很强大的功能,实现了7层负载均衡
nginx负载均衡
优点
功能强大,性能卓越,运行稳定
配置简单灵活
能够自动剔除工作不正常的后端服务器
上传文件使用异步模式
支持多种分配策略,可以分配权重,分配方式灵活
Nginx负载均衡策略
内置策略: IP Hash、加权轮询
扩展策略:fair策略、通用hash、一致性hash
加权轮询策略
首先将请求都分给高权重的机器,直到该机器的权值降到了比其他机器低,才开始将请求分给下一个高权重的机器
当所有后端机器都down掉时,Ngnx会立即将所有机器的标志位清成初始状态,以避免造成所有的机器都处在 timeout的状态
IP Hash策略
Nginx内置的另一个负载均衡的策略,流程和轮询很类似,只是其中的算法和具体的策略有些变化
IP Hash算法是一种变相的轮询算法
fair策略
根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流
通用Hash、一致性Hash策略
通用hash比较简单,可以以 Nginx内置的变量为key进行hash,
一致性hash采用 Nginx了内置的一致性hash环,支持 memcache
配置
http {
upstream cluster {
server srvl;
server srv2;
server srv3;
}
server {
listen 80;
location /
proxy_pass http: //cluster;
}
}
通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器
LvS实现服务器集群负载均衡有三种方式,NAT,DR和TUN
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111971.html原文链接:https://javaforall.cn