05 2021 档案
摘要:对于块设备而言,linux可以使用同步IO、POSIX IO、linux AIO、io-uring,前俩者是linux的同步IO接口,后者是linux内核提供的异步io接口,linux AIO只支持直接IO,未来趋势是io-uring。网络IO多用select/epoll,将其封装使用起来像异步IO
阅读全文
摘要:服务端编程需要构建高性能的IO模型,常见的IO模型主要有以下四种 同步阻塞IO 同步非阻塞IO 默认创建的socket都是阻塞的,非阻塞IO要求socket设置为NONBLOCK IO多路复用 经典Reactor设计模式,异步阻塞IO,select epoll 异步IO 异步非阻塞IO 同步与异步
阅读全文
摘要:Nginx 多进程网络模型 进程模型 nginx启动后以daemon的方式在后台运行,后台进程包括一个master进程和多个worker进程 master进程主要作用,接收来自外界的信号;向各worker进程发送信号;监控worker进程的运行状态;当worker进程退出后,会自动重新启动新的wor
阅读全文
摘要:Nginx HTTP 和 反向代理web服务器 epoll 占用少的系统资源、支持更多的并发连接 负载均衡 安装简单、配置灵活 热部署、启动快、不间断服务情况下对软件配置进行升级 反向代理 反向代理 客户端-> 代理<->服务器 Nginx 没有自己的地址,它的地址就是服务器的地址 Nginx 明确
阅读全文
摘要:nginx是对外的服务接口,外部浏览器通过url访问nginx,nginx接收到浏览器发送过来的http请求,将包解析分析url,如果是静态文件则直接访问用户给nginx配置的静态文件目录,直接返回用户请求的静态文件。 若不是静态文件,动态请求的话,nginx将请求转发给uwsgi,uwsgi接收到
阅读全文
摘要:在日常的工作中涉及到了关于检测用户是否在线的功能需求,在方案设计过程中考虑过使用http-keepalive的方式,由于我们获取到的keepalive是经过nginx转发的keep-alive,所以最后选择了实时更新数据库的方案,借此机会总结一下关于http-alive的一些问题。 http kee
阅读全文
摘要:RabbitMQ默认集群原理 rabbitmq 本身是基于erlang编写,erlang语言天生具备分布式的特性(通过同步Erlang集群各节点的erlang cookie实现),RabbiteMQ天然支持集群,集群是保证可靠性的一种方式,同时可以通过水平扩展可达到增加消息吞吐量能力的目的 上图为三
阅读全文
摘要:python 中nonloal 关键字用来在函数或其他作用域中使用外层变量(非全局),也可使用global需要在函数外部
阅读全文
摘要:消息中间件在工作中一般都不会采用单机模式的,该篇其实是对mq的高可用等等常见问题做一些归纳。 消息队列的高可用 普通集群与镜像集群模式,此处不做深究,另开一篇专门讲述此处 如何保证消息不被重复消费 保证消息队列幂等性,为什么会造成重复消费,正常消费时消费者在消费消息时候,消费完毕会发送一个确认信息给
阅读全文
摘要:在工作中常常会用到消息中间件RabbitMQ,但是自己却一直没合适的机会总结一些关于rabbitmq的知识,今天就总结一下这方面的知识 消息队列 消息,在应用间传送的数据。消息队列,应用间的通信方式,消息发送后可以立即返回,由消息队列来确保消息的可靠传递,发布者只负责讲消息发布到MQ中,消费者只管从
阅读全文
摘要:在实际的业务开发中遇到过由于无幂等性,造成脏数据的情况,阅读过系统中别人写的请求去重部分的逻辑,深感在开发过程中保证接口幂等性的重要,由此总结接口幂等的内容。 幂等的数学概念 幂等是源于一种数学概念。其主要有两个定义 如果在一元运算中,x 为某集合中的任意数,如果满足 f(x) = f(f(x))
阅读全文
摘要:当对两个点的实例进行值的比较时,比如p1=Point(1,1) p2=Point(1,2),判断p1==p2时__eq__()会被调用,用以判断两个实例是否相等。在上述代码中定义了只要x和y的坐标相同,两个点相等。需要注意,__eq__()对is不生效,==是比较的值,而is比较的是引用,也就是内存
阅读全文
摘要:append 添加的是一个对象 extend 添加的是序列与原序列合并
阅读全文
摘要:在工作学习中会碰到一些python中变量与内存层面的问题理解,虽然是在不断的解决,但是并没有做过这方面的总结。 变量:用来标识(identify)一块内存区域。为了方便表示内存,我们操作变量实质上是在操作变量指向的那块内存单元。编译器负责分配。我们可以使用Python内建函数id()来获取变量的地址
阅读全文
摘要:RIP基于UDP,BGP基于TCP,OSPF EGP基于IP 在TCP/IP协议栈中定义的路由协议用于发现和维护前往目的地的最短路径。可以认为它们不属于网络层协议(注意,是用based on,而不是实现了,BGP用TCP,所以BGP是应用层的,TCP用IP,所以TCP是传输层的,OSPF用IP,所以
阅读全文
摘要:python 元组解包unpacking,同一语句中多重赋值 cpython 认为几种变量的交换是比较常见的,提供了专门的优化指令,像【-5,256】预先放到了整数池中一样,
阅读全文