分布式服务器框架之搭建C#+MongoDB+Redis初步

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: WebAccount站点主要干的事儿是下发 服务器状态信息,这个服务器会和WorldServer建立连接,等所有的GameServer初始化完成之后会同步给WorldServer,WorldServer同步给账号服务器站点,然后账号站点等待玩家请求。

二、三个服务器


1.Servers.GameServer


这个服务器只负责初始化配置、初始化与Redis连接、MogoDB连接、数据表初始化、GameServerManager初始化、日志管理器初始化。其实本身这个工程没啥逻辑,逻辑都被打散到了Model库克HotFix库里去了。


2.Servers.GateServer


干的事儿和GS的工作差不多:负责初始化配置、初始化与Redis连接、MogoDB连接、数据表初始化、日志管理器初始化。其实本身这个工程没啥逻辑,逻辑都被打散到了Model库克HotFix库里去了。唯一不同的是初始化的是GateServerManager。


3.Servers.WorldServer


一样,干的事儿和GS的工作差不多: 负责初始化配置、初始化与Redis连接、MogoDB连接、数据表初始化、日志管理器初始化。其实本身这个工程没啥逻辑,逻辑都被打散到了Model库克HotFix库里去了。唯一不同的是初始化的是WorldServerManager。


三、Web站点


1.WebAccount(账号服务器)


WebAccount站点主要干的事儿是下发 服务器状态信息,这个服务器会和WorldServer建立连接,等所有的GameServer初始化完成之后会同步给WorldServer,WorldServer同步给账号服务器站点,然后账号站点等待玩家请求。


2.CDN站点


CDN是资源(文件)站点,存放的主要是客户端热更资源,游戏客户端启动的时候会找到最近的CDN站点,下载CDN内的里的filelist文件,拿到文件中的所有md5和本地作比对热更新。cdn应该根据各个地区,分别架设,其目的主要是为了不同地区的玩家可以享受到相同的访问速度。


这是这个专栏的第一篇文章,后续的心血历程会记录在游戏服务器框架(C#+MogoDB+Redis分布式服务器)这篇专栏里面,分享下自己写的东西,如果对大家有启发就更好了,也记录下自己的成长之路。 后续项目都传到国内的代码平台上去(github龟速,太慢了,目前考虑gitee,有更好的托管平台小伙伴儿可以留言呀,不要藏着掖着~)


就这样,写完了~

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
1月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
7天前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
40 16
|
1月前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
59 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
|
23天前
|
NoSQL Unix Linux
Redis 服务器
10月更文挑战第19天
21 1
|
1月前
|
NoSQL Redis 数据库
计数器 分布式锁 redis实现
【10月更文挑战第5天】
47 1
|
1月前
|
NoSQL 算法 关系型数据库
Redis分布式锁
【10月更文挑战第1天】分布式锁用于在多进程环境中保护共享资源,防止并发冲突。通常借助外部系统如Redis或Zookeeper实现。通过`SETNX`命令加锁,并设置过期时间防止死锁。为避免误删他人锁,加锁时附带唯一标识,解锁前验证。面对锁提前过期的问题,可使用守护线程自动续期。在Redis集群中,需考虑主从同步延迟导致的锁丢失问题,Redlock算法可提高锁的可靠性。
73 4
|
1月前
|
Python
Flask学习笔记(二):基于Flask框架上传图片到服务器端并原名保存
关于如何使用Flask框架上传图片到服务器端并以其原名保存的教程。
74 1
|
1月前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
31 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
30天前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
41 0
|
1月前
|
缓存 NoSQL 算法
面试题:Redis如何实现分布式锁!
面试题:Redis如何实现分布式锁!