ranch代码简述

最近要看一下erlang连接池,觉得ranch很不错。

github上面有人写了ranch的代码阅读,可以看一下,链接在这里

1. ranch可以同时监听多个端口,每个端口的连接信息可以单独配置。

每个端口的监听信息通过ranch_server进程记录,然后获取信息可以从ets表读取。因为配置信息很少修改,而获取信息比较多。这样的读写分离比较方便并发。

2. 每个连接可以设置最大连接数,通过ranch_conns_sup.erl模块控制。

每个连接过来,连接池都会通知ranch_conns_sup进程更新进程数,然后根据现在的连接情况而决定是否进行下一次socket的连接。

ranch_server记录并管理所有端口连接信息,ranch_conns_sup进程记录并管理单独端口中的连接池的信息,都是一对多的关系。

时间: 2024-10-08 09:03:11

ranch代码简述的相关文章

Linux TCP滑动窗口代码简述

前言:TCP的可靠性大致通过3类方法来保障:1.确认和重传.2.流量控制.3.拥塞避免.其中的流量控制中使用的滑动窗口,使得TCP的发送方和接收方速度得以匹配,从而为传输提供了可靠性支撑.本篇就介绍一下滑动窗口在Linux的大致代码,对于滑动窗口的基本知识已经有无数优秀的文章,更有TCP/IP卷一可参考,本篇不再赘述.代码基于 Linux 2.6.32. 1. 背景问题介绍 我们知道TCP是有确认机制的,就是对于发送方发送的每个字节,接收方都会显式的进行确认(连续确认实际也是确认了每个字节).那

设计模式(13)---观察者模式

观察者模式  Observer(行为型模式) 1.概述 观察者模式:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新. 例1:开车的司机作为观察者,路上的红绿灯作为观察目标,当红绿灯的颜色状态发生改变时,司机得到通知,并更新自己的行为. 例2:一个能够显示商品信息的页面,当数据库的关于商品的信息发生改变时,页面的信息也会发生相应的改变. 2.结构图 3.代码 代码简述:玩魔兽争霸这类游戏时,队友遭到敌人攻击,地图上会有红色标记提示,其他队友作

C++静态初始化的顺序

这两天项目代码中遇到一个很疑惑的问题,问题可以描述为:一个静态成员初始化的时候直接core掉,该静态成员初始化时通过另外一个文件中静态成员来完成.该问题同样发生在全局对象上.该问题可以描述为今天要讨论的:变量的静态初始化顺序. 具体可以用代码简述如下: //test1.cpp #include <string> std::string a = "test"; //test2.cpp #include <iostream> extern std::string a

[转]C语言构建动态数组完整实例

原文地址:http://www.jb51.net/article/52153.htm 本文以一个完整的实例代码简述了C语言构建动态数组的方法,供大家参考,完整实例如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <stdio.h> #include <malloc.h> int main(void) {     int len;     int * arr;     printf("请输入数组长度:&q

使用WebSocket构建实时WEB

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3795075.html 1 WebSocket与传统Web实时通信技术 1.1 WebSocket HTTP是一种典型的单工模式.即基于Request/Response的方式与服务器进行交互.HTML5提供了浏览器与服务端的双工通信协议WebSocket. 1.2传统Web实时通信技术 轮询 Comet 长轮询 Flash

Go语言AST尝试

Go语言有很多工具, goimports用于package的自动导入或者删除, golint用于检查源码中不符合Go coding style的地方, 比如全名,注释等. 还有其它工具如gorename, guru等工具. 作为工具它们都是使用go语言(查看)开发的, 这些工具都有一个共同点就是: 读取源代码, 分析源代码, 修改或生成新代码. 简述 很多编程语言/库/框架等都能生成代码, 比如使用rails, 可以轻松地new一个project出来, 生成项目基本代码, 我们称其为boiler

栈——PowerShell版

上一篇讲过队列(queue),队列就像是居民楼里的垃圾管道,从楼道的垃圾管道的入口处将垃圾扔进去,清洁工会从一楼垃圾管道的出口处将垃圾拿走.每一层的垃圾通道入口与一楼的垃圾管道出口之间都形成了一个队列,先被扔进垃圾道里的垃圾会先到达垃圾通道的出口,即:先进先出. 栈是一种更简单的数据结构,如果队列是垃圾通道,那栈就是垃圾桶,先扔进垃圾桶的垃圾都被压桶底了,反而是后仍进去的垃圾会先被倒出来.这种后进先出的数据结构,就是——栈(stack). 队列的三要素是队伍,队头,队尾. 在PowerShell

20962保护和安全

保护和安全 12.1  安 全 环 境 由于社会的复杂性和某些事物的不可预知性,使得计算机系统的环境往往是不安全的.为此,必须对我们的工作环境采取“保护”措施,使之变成为一个“安全”环境.“保护”和“安全”是有不同含意的两个术语.可以把“保护”定义为:对攻击.入侵和损害系统等的行为进行防御或监视.“安全”是对系统完整性和数据安全性的可信度的衡量. 12.1.1 实现“安全环境”的主要目标和面临的威胁 1. 数据机密性(data secrecy) 数据机密性是指将机密的数据置于保密状态,仅允许被授

博客园备份提取

目录 简述 程序代码 简述 在博客园记录了一些文章,想把它备份到github上,还好大部分博文都是markdown格式的,博客园也支持备份导出,但是到处的是单个的XML文件. 为了把每一篇博文单独提取出来,所以写了一个小程序来提取. github中需要如下图所示的格式,方能正确的分类 文件名需要日期开头,文件内容中最前面一段是文章的一些描述信息 程序代码 程序是用Golang编写的,代码如下: // cnblogs2githubpages project main.go package main