服务器架构设计
xunshuidezhu
这个作者很懒,什么都没留下…
展开
-
开源网络库owl分析(一)reactor模式分析
代码地址:https://github.com/xunshuidezhu/owlowl是本人开发的一个基于reactor架构的网络库,包含了reactor模型,日志库,协程库,http模块,计时器,采用epoll LT模式,配合协程的使用,可以轻松实现异步网络io,而不必采用非阻塞io+epoll的多线程并发模型.网络库的核心模型为reactor模式,主要有demultiplexer也就是...原创 2019-12-05 15:47:08 · 631 阅读 · 1 评论 -
生产者消费者与阻塞队列
队列以及锁和条件变量的封装,注意队列的阻塞在生产者消费者代码中实现,代码中的队列只负责任务的生产消费场所#include <bits/stdc++.h>#include <pthread.h>#include <unistd.h>using namespace std;struct Data { int data;};class...原创 2019-12-05 15:33:37 · 155 阅读 · 0 评论 -
应用层协议设计
应用层报文协议设计为了让数据能够按时间序列存储以及按时间序列设计索引取出数据,并且能够在应用层对数据包进行校验,能够用过状态机编程以实现数据的检验,重传,成功发送等多种状态。具体设计如下:时间戳字段,字段名time_stamp, 数据格式 time_t, 由七个uint16_t构成的结构体,分别表示年-月-日-时-分-秒-毫秒。时间戳字段一方面用于作为数据传输的校验功能,另一方面用于数...原创 2019-10-31 15:43:44 · 1518 阅读 · 0 评论 -
c++实现反射
https://blog.csdn.net/q1007729991/article/details/56012253转载 2019-10-07 16:15:56 · 178 阅读 · 0 评论 -
UML类图详解
UML类图在架构设计中还是很重要的,一篇总结类图很好的文章UML类图与类的关系详解虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;上面是UML的语法。在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization...转载 2019-08-06 10:57:25 · 436 阅读 · 0 评论 -
服务器架构设计模式(一)
相比与单机程序设计,多机分布式程序面临着更多的挑战,比如网络通信,多机并发,临界区同步,事件的分离与处理,不同操作系统的移植性。要想开发出健壮的,性能优秀的,跨平台的服务器/中间件,需要十分有经验的架构师,开发能力十分强悍,对底层认识很深的程序员。而设计模式帮助缓解了很多内在的和偶然的软件复杂性。模式是在特定环境中针对一个标准问题的可重复解决方案。设计模式是大师用他们的经验来帮助我们解决各种通用问...原创 2019-08-03 12:55:22 · 1163 阅读 · 0 评论 -
udp实现可靠传输
做项目正好需要用可靠传输UDP来做传输层,基本思路还是在应用层模仿TCP,超时重传,滑动窗口等机制,三次握手,四次挥手过于复杂,简化成了2次握手,仅确认SEQ或者ACK,如果没有收到正确的报文则重传报文。数据包在发送之前会先存到数据队列,实现缓存,每次发包从数据去取,超时重传时间,超时重传最大次数也要设置,以防止进程被阻塞。...原创 2019-07-23 22:00:48 · 282 阅读 · 0 评论 -
reactor模式与事件驱动
https://blog.csdn.net/baidu20008/article/details/41378761转载 2019-07-14 13:48:24 · 299 阅读 · 0 评论 -
tcp长连接保活与心跳机制
TCP Keepalive的起源TCP协议中有长连接和短连接之分。短连接环境下,数据交互完毕后,主动释放连接;长连接的环境下,进行一次数据交互后,很长一段时间内无数据交互时,客户端可能意外断电、死机、崩溃、重启,还是中间路由网络无故断开,这些TCP连接并未来得及正常释放,那么,连接的另一方并不知道对端的情况,它会一直维护这个连接,长时间的积累会导致非常多的半打开连接,造成端系统资源的消耗和浪...原创 2019-07-13 12:36:37 · 3185 阅读 · 0 评论 -
服务器设计:心跳机制
心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。应用场景:在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。更要命的是,有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。在这个时候,就需要我们的心跳包了,用于维持长连接,保活什么是心跳机制?...原创 2019-07-13 12:05:38 · 924 阅读 · 0 评论