后台开发小白必学服务器框架——UDPServer


毕业后加入了一家大型的互联网公司的音视频产品部门做后台开发,其实我本身是学习自动化的,研究生的方向嵌入式系统,对互联网可是一知半解,因此能进入这样一个大公司还是很幸运的。

刚开始工作的半年应该是在上份工作最快乐的时光,那时候我们十来个人被抽调出来做好友系统,由Z组长负责。从产品到开发,大部分都是新入职员工,pm给画了一个大饼,大家都满怀憧憬。闲话少说,先介绍一下刚开始接触后台开发用到的服务器框架。

第一个接触的叫udpserver。顾名思义,就是只支持udp的服务框架。因为我们部门是做音视频产品的,音视频数据对实时性要求很高,因此常用udp传输数据。Udp server是同步多进程模型,包含1个Interface进程和多个Worker进程。

Iterface进程负责接收来自外部的请求,做一些合法性校验和格式转换后,转发给后端的Worker进程。Worker进程监听不同的端口收包,并处理业务逻辑。Worker进程的回包直接发给客户端。

此处有几个点值得关注:

首先,Worker进程监听的是不同端口。

监听相同的端口显然是更常见的做法,而监听相同的端口也需要注意一点,即监听的端口socket必须是从父进程中继承得到的,而非Worker自己创建的socket。因为对于前者内核才能保证调度的均匀性,而后者是没有这种效果的,内核只会把请求包扔给同一个Worker。

这里之所以使用监听不同端口的方案,是为了保证调度的可控性,请求包发往哪个Worker是有预期的,可以做更个性化的调度策略,问题定位也方便得多。Udp server默认是使用轮询的调度方式。

第二点是,Worker进程回包是直接返回给客户端的。

另一种常见做法是通过Interface进程回包,缺点是Interface会成为瓶颈。而Worker直接回包的缺点是向外部暴露Worker,不过这个问题并不十分严重。相较之下,我们更希望获得性能的提升。为了给客户端回包,Interface会把客户端的ip和端口封装到请求包发给Worker。

框架虽简单,但是性能非常优异,作为echosvr性能可达30w+ QPS。但是这个框架不支持TCP,因此只能作为内部的服务框架使用。

因为很久没用这个框架了,以上所述可能有不准确或者不充分的地方,望不吝赐教。

原文地址:https://blog.51cto.com/14621970/2468483

时间: 2024-07-30 05:10:20

后台开发小白必学服务器框架——UDPServer的相关文章

php后台开发(二)Laravel框架

php后台开发(二)Laravel框架 为了提高后台的开发效率,往往需要选择一套适合自己的开发框架,因此,选择了功能比较完善的Laravel框架,仔细学来,感觉和Python语言的框架Django非常类似. Laravel框架 Laravel是一套web应用开发框架,它具有富于表达性且简洁的语法,并提供了验证(authentication).路由(routing).session和缓存(caching)等开发过程中经常用到的工具或功能. 框架安装 安装composer http://docs.p

51零基础学单片机语言开发·经典必学,有视频、课件、源码

51零基础学单片机语言开发·经典必学,有视频.课件.源码51零基础学单片机语言开发·经典必学,包括每一节的视频.课件和源码!内容很大,一共是3.86G,赶紧顶我的帖子吧!从零基础到大牛,你值得拥有,具体看图片,希望能帮到大家,把自己所学的东西分享出来,你们可以到闯客网技术论坛下载,已经上传到上面了,上面关于单片机的资料非常多,同时也有单片机交流群呢:6133777058,是个不错的论坛下载链接:https://bbs.usoftchina.com/thread-199194-1-6.html 视

Django是Python开发最火热的一个框架!小白必学的Django框架!

私信小编007即可获取数十套PDF哦!即可获取数十套PDF哦! 3.Django项目目录 1) urls.py:网址入口,关联到对应的views.py中的一个函数(或generic类),访问网址就对应一个函数. 2) views.py:处理用户发出的请求,与urls.py对应, 通过渲染templates中的网页可以将显示内容,如登陆后的用户名,用户请求的数据等输出到网页. 3) models.py:与数据库操作相关,存入或读取数据时用到,用不到数据库时可以不使用. 4) forms.py:表单

前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供数据库来存储数据,目前在各大培训机构都会有1天左右的课程进行讲解,同时在实际来发中我们有存储数据和文件的需求,我们需要了解后台数据存储和提供的数据接口,以及如何获取数据,解析数据,也就是我们常说的前后端交互,数据访问等操作,首先我们来启动mongdb服务器. mongodb服务器启动的命令窗口方法:

HTTP协议原理+实践 Web开发工程师必学

第1章 课程导学对课程整体进行介绍,并且说明HTTP协议的重要性,以及学习的必要性.1-1 导学1-2 内容介绍 第2章 HTTP协议基础及发展历史本章主要介绍什么是HTTP协议,HTTP协议的发展历史,以及HTTP协议的底层--网络分层协议.在本章中你将学习到HTTP协议的基础内容,并理解为什么会产生HTTP协议,以及他的优劣势.2-1 5层网络模型介绍2-2 HTTP协议的发展历史2-3 HTTP的三次握手2-4 URI-URL和URN2-5 HTTP报文格式2-6 创建一个最简单的web服

办公小白必学PDF如何添加背景

PDF文件是一种办公室中非常常用的文件格式,可以说每一个办公人士都需要掌握如何修改pdf文件的方法.所以今天,小编就给大家介绍一下如何给pdf添加背景,希望能够给大家带去一些帮助. 1.如果我们想要给PDF文件添加背景,准备一款好用的PDF编辑器是我们第一步需要做的事情,这里小编使用的是迅捷PDF编辑器. 2.将pdf文件打开后,首先我们点击文档按钮,在弹出的选项中选择背景,再通弹出的二级菜单选择添加按钮. 3.在弹出的添加背景设置菜单中,我们可以选择将背景设置为纯色背景或者是图片背景. 4.这

java新手小白必看的学习路线图,快速入门!

要学习Java,你首先得了解一下什么是java: java新手小白必看的学习路线图,快速入门!Javaweb是用Java技术来解决相关web互联网领域的技术总和.说的简单的就是写网站的一种语言.一般分为前端和后端两种方向,前端所做的东西就像幕前表演的演员,所做的就是让网页看起来顺眼,用起来顺心,而后端则属于处理数据,让程序处理速度.能力不断优化,属于幕后.前后端的配合才能是一个网站正式投入使用.最后,如果大家如果在自学遇到困难,想找一个java的学习环境,可以加入我们的java学习圈,点击我加入

游戏服务器框架:Leaf/go

Leaf 是一个使用 Go 语言开发的开源游戏服务器框架,注重运行效率并追求极致的开发效率.Leaf 适用于几乎所有的游戏类型.其主要的特性: 良好的使用体验.Leaf 总是尽可能的提供简洁和易用的接口,尽可能的提升开发的效率 稳定性.Leaf 总是尽可能的恢复运行过程中的错误,避免崩溃 多核支持.Leaf 通过模块机制和 leaf/go 尽可能的利用多核资源,同时又尽量避免各种副作用 良好的模块支持. 一个 Leaf 开发的游戏服务器由多个模块组成(例如 LeafServer),模块有以下特点

2019 年软件开发程序员必学的编程语言 Top 3

随着时间的流逝,我们将迎来新的一年,这是富有前景和挑战的一年.我们已经看到 AI 和 ML 为所有有远见的人带来了希望,尽管币圈出现了混乱,但区块链仍然是本世纪最有前景的创新技术. 自动化浪潮风靡着整个行业.不过,尽管这些有前景的技术趋势吸引了所有人的眼球,但我们不能忘了编程语言和算法本身,它们才是这些现象背后的主要驱动因素. 以下是 2019 年软件开发人员必学的 3大 编程语言 ! Python 在这个编程语言世界中,Python 绝对不是什么新生事物.它由 Guido van Rossum