
高并发服务器
文章平均质量分 87
后续会上传两个项目
一碗姜汤
科学的世界,你只是去习惯它。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【高并发服务器 03】——epoll模型
创建并返回一个epoll实例,这个实例文件在自己的进程空间里有一片存储空间(里面存储了文件描述符集合),为了避免将实例中的数据,在每次传送给内核让内核去修改的时候,内核需要首先对数据进行拷贝,然后在这份拷贝的基础上对数据进行修改,最终将这份拷贝传送给用户态。(网页服务器,http服务器),用户如果想访问,Apache会开一个进程跟用户去沟通,并由这个进程给用户提供服务,用户下去之后,这个进程就被销毁了。表示,如果事件发生了,我就必须响应你,如果在发生的那一刻我没来得及响应你,那么之后我也必须响应你(原创 2024-03-24 17:13:23 · 1246 阅读 · 0 评论 -
【高并发服务器 02】——线程池与IO多路复用
ifdef是一个预处理指令,用于在编译时根据条件判断是否编译特定的代码块。它的作用是根据条件判断编译不同的代码,可以用来实现条件编译。当条件为真时,编译#ifdef和#endif之间的代码;当条件为假时,忽略#ifdef和#endif之间的代码。这样可以根据不同的编译条件,在不同的环境中编译不同的代码,实现对不同平台、不同需求的适配。#ifndef 的作用就是确保只定义一次。原创 2024-03-22 23:17:52 · 1016 阅读 · 0 评论 -
【高并发服务器 01】—— 基础知识回顾
程序的映像(image),实例(instance)、运行的程序,动态的、资源分配的基本单位(虚拟内存)、封闭性、独立性。原创 2024-03-20 22:47:21 · 995 阅读 · 0 评论 -
高并发场景下,缓存“穿透”了该怎么办?
但是空值并不是真实的业务数据,如果有人恶意访问这些并不存在的 key,则会占用很大的内存空间,从而将正常的业务 key 给自动淘汰掉。用户访问一个不存在的 key,“穿透”到数据库中,数据库返回空值,并不会回填到缓存中,那么后续不管查询这个key多少次,都会缓存命中失败,直接“穿透”到数据库中。所以,在访问不存在的数据时,虽然第一次“穿透”到数据库获取的是空值(NULL),但可以用这个空值(NULL)回填缓存(称为“回种空值”)。即可能存在 "误判为存在" 的情况,但不存在 "误判为不存在" 的情况。原创 2023-12-31 21:35:29 · 507 阅读 · 0 评论 -
在高并发场景下,缓存“雪崩”了怎么办
但在较大的瞬时流量洪峰到达时,如果流量比较集中,正好落在一两个缓存节点上,则这个节点很容易因为内存、网卡过载而出现异常,然后这些节点下线,之后大流量 key 请求被 rehash 到其他的缓存节点上,进而导致其他的缓存节点也过载,异常持续扩散,最终整个缓存系统无法对外提供服务。但是,DB 是很难承载这么多请求的,很容易出现大量的慢查询,最终整个系统不可用。通常是由于缓存体系中有较多的缓存节点不可用,且不支持 rehash,所以请求会“穿透”到 DB,从而导致 DB 不可用,最终导致整个缓存系统不可用。原创 2023-12-31 10:22:40 · 806 阅读 · 0 评论 -
什么是高并发系统?
从第一次发出请求到收到系统完整响应数据数据所需时间。直接反映系统响应的快慢。:单位时间内系统所处理的用户请求数。直接反映系统的负载能力。服务器在一秒内共处理了多少个请求,主要用于表示“读”请求。:即服务器每秒处理的事务数。(一个事务包括“客户机向服务器发送请求 + 服务器响应”的过程):用户每对网站中的1个网页访问1次被记录1次:访问某个站点或点击某个链接的不同IP地址数。(即在同一天内,UV只记录第一次进入网站的具有独立IP地址的访问者,在同一天内访问者再次访问该网站则不计数。原创 2023-12-29 00:07:07 · 1522 阅读 · 0 评论