不同的业务,设计也不尽相同,但至少都一些共同的追求,比如性能。
做服务器开发很多年 了,有时候被人问到,服务器性能是什么呢?各种服务器间拼得是什么呢?
简单的回答就是QPS ,并发数,但有时候想想也许也不对。
QPS与并发数是针对同样的业务而言的,业务不同,相同 的服务器能承受的压力也会不同。
性能,也许可以打个俗点的比方:
服务器就是一艘船 ,性能就是船的容量,开的速度,行得是否稳当。
该用的用,该省的省。能用内存就别用IO, CPU则能少用就少用,相同的QPS,CPU和内存用的少点的性能就要比用的多点好,同样,QPS跑得多点的 就比
跑得小点的性能要好,哪怕多用了点CPU和内存。
什么是性能的保障呢?
高 效的事件模型,简单明了的业务架构,统一稳定的资源管理,外加纯熟的人员。
咱就从资源说 起吧。
资源多半与IO有关,如果你看过我前面的文章,一定不会对连接池陌生,没错,连接是 系统的一种IO资源,下面看看另一种IO资源:内存。
如果你看过apache, nginx之类服务器的代 码,或者想入手,那么多半应该从内存管理开始。
与服务器性能息息相关,内存池的设计也追 求快速与稳定,生命周期一般有下面三种:
global: 全局的内存,存放整个进程的全局信息。
conn: 每个连接的信息,从连接产生到关闭。
busi:业务相关的信息,伴随每个业务的 产生到结束
下面定义一个简单的内存池:
typedef struct yumei_mem_buf_s yumei_mem_buf_t; typedef struct yumei_mem_pool_s yumei_mem_pool_t; struct yumei_mem_buf_s { int size; char *pos; char *data; yumei_mem_pool_t *pool; }; struct yumei_mem_pool_s { int size; char *data; char *last; yumei_mem_pool_t *next; yumei_mem_pool_t *current; }; yumei_mem_pool_t* yumei_mem_pool_create( int block_size, int block_num ); int yumei_mem_pool_free( yumei_mem_pool_t *pool ); yumei_mem_buf_t* yumei_mem_malloc( yumei_mem_pool_t *pool, int size ); int yumei_mem_buf_free( yumei_mem_buf_t *buf );
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索内存
, 服务器
, int
, struct
, 性能
, 设计内存
, typedef struct内存
, mem.
, 业务
, mem
高并发设计模型
java高并发服务器设计、高并发服务器设计、编程中设计并发服务器、mqtt高并发消息服务器、1000并发 服务器配置,以便于您获取更多的相关知识。