自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(18)
  • 收藏
  • 关注

原创 HTTPS Batch request的幂等性研究和实践

通过HTTPS请求的幂等性设计,来提升网络敏感APP的用户体验

2023-12-26 22:20:26 416

原创 Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现(三)

七、可靠性UDP的优化细节4.5章节中,我们提到了KCP本身的优化提高,由于可靠性UDP是这个方案是否优秀的关键,而各种可靠UDP协议中都有TCP算法的影子,所以下面我们再仔细的谈一下这个部分。按照惯例我们从基础知识谈起。1)路由器技术随着现代路由器技术的发展,已经从第一代发展到第五代、第六代,详见百度百科的《路由器技术》,从淘宝上可以看到各个路由器的价格和外观。一条链路上可能由各种路由器、网关、WiFi等设备组成,而同一时间段发送的消息包可能有多条链路。...

2021-08-17 10:27:15 612

原创 Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现(二)

六、用户态实现通过上篇文章,我们可知在用户态实现IO多路复用的大规模可靠UDP服务器不能用原生的udp协议,否则会面临当链接数增加的时候CPU和内存占用都增加很快直至承受不住的情况。要规避内核的种种弊端,就必须要用用户态协议栈来实现,这也是最适合最顺理成章的方案。我们可以站在前人的肩膀上,让我们来看一下DPDP+MTCP架构。1.dpdk+mtcpdpdk在驱动层工作,前文有所介绍。mtcp在tcp协议层工作,不仅实现了mtcp_socket、mtcp_bind、...

2021-08-05 14:07:46 561

原创 深度学习与围棋 名词笔记(一)

对于对于1对于一门学科来说对于一门学科来说,把书读薄,也就是记住与理解其相关名词是最重要的事情,记住与理解之后,这门学科也基本通透了。《深度学习与围棋》这本书中涉及到的深度学习相关知识众多,算法众多,名词也超级多,在此记录深度学习与围棋的名词目录。名词 解释 页数 注释 机器学习 机器学习不用直接实现算法,而是从样本数据推断出程序或算法。因此,在应用机器学习技术时,我们仍然向计算机提供数据,但不再提供指令,也不再等待预期的输出,而是向它提供我们所...

2021-08-03 13:01:41 679

原创 Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现(一)

一、范围本文会由浅入深的讨论Linux系统下基于IO多路复用的大规模可靠UDP实现,知识范围主要涉及到IO多路复用、UDP协议、UDP可靠传输、协议栈内核态/用户态实现等。Linux内核版本为5.13。本文将主要分为三大部分,第一部分介绍相关基础知识,第二部分介绍在内核态实现,第三部分介绍在用户态实现。UDP高并发比较难做,本文涉及的部分技术点也会比较难懂,那么我们这么做有什么好处呢?二、好处与现有问题使用可靠UDP协议的业务越来越多,如直播、网络游戏(王者荣耀、...

2021-08-03 12:42:02 1581

原创 基于A*和势场寻路的快速小队伍动态势场避障寻路

前言先把本算法的适用场景和优缺点写在前面,需要的可以继续看,不适用的就可以直接略过了。然后在循序渐进介绍本算法。演示效果在最后。本算法适用场景每次寻路以小队伍为单位(几个至几十个队员) 队员之间(互斥)需要动态避障优缺点运算速度快,效率高 队伍行进效果好,逼真度高 由于结合了A*算法和势场寻路算法,所以这两者的优化、特例化算法基本都可以结合到本算法中。 缺点是适用范围窄,在特殊需求下需要另写算法一、A*寻路A*寻路算法是基于格子的启发式探索寻路,优点是准确可靠、适用性强,缺点

2021-07-21 13:52:41 3610 4

原创 ROK(万国觉醒)服务器卡顿解决方案

万国觉醒是一款SLG策略手游,拥有庞大的用户群体和较好的口碑,是一款品质很高的SLG手游。但是往往到晚上玩家上线比较集中、战斗比较激烈的时候,就会出现服务器卡顿现象。经过分析,是战斗太多造成的。于是我写了两篇利用CUDA、DPDK、NUMA、Thread-Affinity优化服务器战斗的方案。文章链接如下。TW项目后端GPU加速、DPDK网络加速TW项目后端加速精益求精 用NUMA优化如果服务器端用Java语言,那么需要用JNI技术。但是在用libdpdk.so或者libmtcp.so时会出现C

2021-04-23 11:40:46 2421

原创 基于NavMesh寻路、漏斗寻路、RVO动态避障自创的服务器大规模寻路+动态避障算法的实现

一、描述TW项目是一个拥有较广阔野外空间的SLG游戏,玩家的军队方阵可以在野外进行长距离行军、短距离自由行军、占领要塞、驻扎、形成战斗阵型战斗等行为。其中,野外的山脉、河流等会产生静态阻挡;而由玩家迁城、把守要塞、驻扎等行为,会在野外地图上产生动态阻挡。每个服务器活跃军队方阵目标5万个,每天产生的长距离寻路请求可能达几十万或者百万个,并且都需要在服务器端计算,用常规的A*寻路、navmesh寻路、ROV避障算法计算量巨大,影响服务器效能。所以我们可以采用两种解决方案:第一...

2021-04-22 10:49:48 5142 3

原创 修改 mtcp 源代码来添加对 udp 支持

mtcp 是一个用户态的 tcp 协议栈,结合 dpdk 可以实现高性能的收发包。mtcp 不支持 udp 协议,想要在 bind 里利用 mtcp 进行加速,需要改动源码以提供支持。mtcp 项目地址:https://github.com/mtcp-stack/mtcp1、修改配置文件支持UDP1.1、修改数据结果struct mtcp_config,增加对UDP协议支持标记变量。1.2、在core.c文件中的mtcp_init函数中,会调用config.c文件中的LoadConfigurat.

2021-04-21 17:53:31 438

原创 HUAWEI河图项目后端高并发探讨

HUAWEI河图项目后端高并发探讨一、需求 河图项目是HUAWEI的数字新世界,可用于地图、虚拟交互等数字化服务。应对未来发展,可能会出现千万级用户同时在线、局部有十万人同时交互体验的超高并发需求。二、需求分析 1、超高及时并发要求: 项目要求同场景(例如某景区前)存在十万人,并且产生交互(例如放烟花、与九色鹿对话、自身移动、定会议室、寻路等),假如每个人都在交互并且实时通知其他人,在局部场景内会产生十万*十万=百亿次广播并发,如果每人每秒同步一次(合并数据包、降低刷新频...

2021-03-26 15:30:42 520

原创 编译dpdk和mtcp动态库

一、dpdkdpdk编译默认是静态库,要编译成动态库的话需要修改:dpdk/config/common_base中的CONFIG_RTE_BUILD_SHARED_LIB=y,编译成功后会出现libdpdk.so二、mtcp可能会出现如下错误:1、error: converting a packed ‘const struct ether_addr’ 修改./mtcp/src/Makefile中CFLAGS+=-g -O2 -Wno-address-of-packed-member2、un..

2021-03-22 12:59:42 764

原创 使用机器学习构建SLG陪玩系统

使用机器学习构建SLG陪玩系统一、目的和意义对于SLG游戏来说,玩家在游戏内相互竞争是游戏活跃度的重要体现,也是游戏收入的重要来源。但是相互竞争也是玩家流失的一个最主要原因,当游戏中某玩家没有竞争对手的时候,这个玩家也会觉得游戏乏味,趋于流失。游戏陪玩系统可以为上述没有对手的玩家陪玩,增强游戏活跃度、减少流失率、提高付费、延长游戏生命周期。二、如何通过机器学习的方式实现陪玩系统SLG类型的游戏陪玩系统比较复杂,原因如下:1、不同于moba或者一些单机小游戏,人工智能决策输出结果比较复杂,对于部

2021-03-17 13:54:25 444

原创 TW项目后端加速精益求精 用NUMA优化

TW项目后端加速精益求精 用NUMA优化一、问题描述 上一篇文章描述了在每一次战斗时大量的并行计算被分布进行在CPU和GPU同时计算的方法,本篇文章介绍在CPU运算时,由于战斗线程、游戏逻辑线程、网络线程、数据库存取线程等被分别绑定到不同的CPU核心,所以战斗线程还可以运用numa技术,充分利用cpu的l3cache将运算效率进一步提高20%-30%。二、利用线程与CPU核心绑定和该核心的L3Cache内存(少量)提高运算 1、首先将战斗线程与CPU内核绑定(https://githu...

2021-03-17 11:52:10 754

原创 Centos下编译dpdk,mtcp

一、内核版本 使用uname -a查看内核,版本必须大于3.13 查看内核启动顺序,发现新内核顺序为0 init 6或者reboot 重启成功后uname -r二、升级gcc# 安装gcc9 toosetyum install centos-release-sclyum install devtoolset-9-gcc*scl enable devtoolset-9 bash# which gcc# gcc --version三、安装libnumawge...

2021-03-17 11:22:19 915

原创 TW项目后端GPU加速、DPDK网络加速

TW项目后端加速一、问题描述 对于回合制游戏,战斗每秒运行一次(一个回合),在这一次战斗中要进行所有的军队(army)的攻击、反击和将领(英雄)的技能的计算。大致的计算方法如下: 军队攻击: for 所有军队 for 军队中所有的不同兵种 for 被攻击军队的兵种 计算当前增益、互克等 计算当前兵种总攻击,被攻击军队防御和反击 按计算公式计算当前军队总伤害 ...

2021-03-17 11:14:17 898

原创 TW寻路最优实践2

背景上次完成了初步的寻路设计方案之后,可以顺利的进行静态寻路了,但是对动态避障寻路支持并不好。经过跟项目设计者仔细研究,发现ROV等算法并不能满足现有需求,原因如下:我们的动态障碍物是突然出现的,不是从某个其他方向走过来的 每个对象,都需要每隔一小段时间,就要检查一下自己前进的方向是否有阻挡 我们不能由前端运算,因为有时差问题,只能由后端运算。据此,我们需要另辟蹊径,找到一个适合自己的算法。算法描述由于我们的障碍物是可能突然出现在前方的,我们并不能像ROV那样预先计算,选择一个另外路...

2020-12-31 18:12:03 795

原创 TW项目寻路算法最优实践

TW项目寻路算法最优实践一、描述 TW项目是一个拥有较广阔野外空间的SLG游戏,玩家的军队方阵可以在野外进行长距离行军、短距离自由行军、占领要塞、驻扎、形成战斗阵型战斗等行为。其中,野外的山脉、河流等会产生静态阻挡,可能会用到navmesh寻路;而由玩家把守的要塞、由玩家在空地上的驻扎行为,会在野外地图上产生动态阻挡;自动形成战斗阵型等行为,可能会兼用鱼群寻路算法或者ROV避障寻路算法。 每个服务器活跃军队方阵可能有几万个,每天产生的长距离寻路请求可能达几十万或者百万个,而...

2020-12-31 18:03:33 885

原创 浅谈如何从业务逻辑角度将百度春晚红包服务器从10万台优化到200台

一、起因除夕夜晚上9点多到家,打开电视看春晚。听到主持人说打开百度摇红包的时候,心里一喜,立刻打开百度APP摇了几个红包,但部分红包需要下载其他APP才能领取。于是打开某应用商店,出我意料的,某应用商店竟然挂了,于是返回APP继续愉快的摇红包,最后一共中了几块钱。第二天大年初一看到新闻说由于百度红包总流量达到了X亿,苹果华为小米等应用商店全因此挂掉。本着对技术的好奇,根据新闻里给出的公开数据...

2019-02-28 19:02:54 1154

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除