首页 文章 精选 留言 我的

精选列表

搜索[游戏],共9469篇文章
优秀的个人博客,低调大师

游戏是选择独立服务器还是云主机

随着云计算的快速发展,“云”技术在互联网中运用的趋势提升,云主机的概念也火热起来,越来越多的IDC公司为用户提供了云主机服务。大力的宣传,使得用户如何在服务器租用、服务器托管、云主机业务中,用户如何选择适合自己企业发展需求的产品,成了问题? 云主机其实是VPS的升级版。它是在一组集群服务器上划分出来的多个类似独立主机的部分。集群中的每台机器都会有云主机的一个镜像备份。当其中一台机器出现故障时。系统可以自己访问其他机器上的备份。所以云主机在安全与稳定性方面比VPS更加强大。 云主机有以下的特点: 1、更优价格:品牌服务器、零首付、零押金、零维护,按月支付按月使用,同等性能价格更低。 2、高可靠性:主机服务支持多级的备份与恢复,包括备机、系统备份与应用备份。 3、安全性:从硬件级别上实现故障和安全性的隔离,平台内置ARP攻击防护能力,分布式和规模化提升防DDOS攻击能力。 4、自助服务:通过基于浏览器的自服务界面,客户可远程安装操作系统,远程集中管理分布在不同数据中心的云服务器,省心省力。 5、 高性能:主机业务单元独立,独占硬件资源,提供独享带宽,确保高性能。 6、 快速供应:提供多种操作系统和应用标准镜像,需求无论是一台还是百台、Windows还是Linux,均可实现瞬时供应和部署。 独立服务器是一台真实存在的物理设备。它的性能以及安全方面都非常强大。一方面是硬件在运行的过程中比较稳定。另一方面是物理硬件。性能很强, 在同 等配置的情况下。云主机的性能是不及独立服务器的。安全方面则因人而宜。因为与平时的使用习惯以及对安全常识的了解程度也有关系。 了解他们的特点以后。你自己可以根据需要去做出选择。如果对性能以及安全方面的要求较高。推荐还是用独立服务器。若是追求较高的性价比。 那么云主机是不错的选择。毕竟比服务器便宜的多。

优秀的个人博客,低调大师

online游戏服务器架构—用户登录数据组织

sprite_t类型的数据结构是核心数据结构,每一个登录用户对应一个,它的初始化在用户登录的时候,此后一直到用户退出或者离线一直保存在系统内存当中,在此过程中该sprite_t数据结构被保存在两个哈希表当中,一个是以用户的id为索引,这个是逻辑相关的,另一个是以此连接的套结字描述符为索引,这个是逻辑无关的: int parse_protocol(uint8_t *data, int rcvlen, fdsession_t* fdsess) { protocol_t pkg; sprite_t *p, tmp; //tmp是个局部变量,分配于栈上,由于此后的执行续是串行的,也就是说在动态分配sprite_t数据结构于堆上之前并不清除此函数的调用栈帧,因此这里使用局部变量很安全。 int i; i = 0; //此处用UNPKG_XX系列解析pkg.len, pkg.ver, pkg.cmd, pkg.id, pkg.ret … p = get_sprite_by_fd(fdsess->fd); //以套结字描述符查找sprite_t数据结构,如果该用户已经登录,那么一定能查找到的,因为用户和online的交互是长连接,如果是登录包,那么肯定查不到,因为这是第一个包 if ((pkg.cmd != PROTO_LOGIN && !p) || (pkg.cmd == PROTO_LOGIN && p) …){ ERROR_RETURN(("pkg error”); } … if (pkg.cmd == PROTO_LOGIN) { sprite_t* old = get_sprite(pkg.id); //以id为索引查找该用户是否已经登录 if (old) notify_user_exit(old, -ERR_multi_login, 1); //如果已经登录,那么踢出已经登录的用户 p = &tmp; memset(p, 0, sizeof(*p)); p->id = pkg.id; //设置用户的id,登录期间一定唯一 p->item_cnt = 0; p->fd = fdsess->fd; //设置fd,套结字描述符,一定是唯一的 p->fdsess = fdsess; } return dispatch_protocol(p, pkg.cmd, data + sizeof (pkg), pkg.len - sizeof (pkg)); } 由此可见,一个sprite_t数据结构连接在两个哈希列表中,一个是套结字描述符为索引的,另一个是用户id为索引的,注意这两个索引都是唯一的索引。每每分配一个sprite_t数据结构都要将之插入到两个哈希表当中,以套结字描述符为索引的查找函数如下: sprite_t* get_sprite_by_fd(int fd) { sprite_t* p = g_hash_table_lookup(all_sprites, &fd); if ( !p || IS_NPC_ID(p->id) ) return 0; return p; } 以用户id为索引的查找函数如下: static inline sprite_t *get_sprite (uint32_t id) { sprite_t *p; list_for_each_entry (p, &idslots[id % HASH_SLOT_NUM], hash_list) if (p->id == id) return p; return NULL; } 对于登录包,最终dispatch_protocol会进入到auth_cmd,该函数对用户的一些信息进行一些如MD5之类的验证,然后进入到do_auth函数: static inline int do_auth(sprite_t* v) { sprite_t* p = add_sprite(v); //该函数将新分配的sprite_t数据结构插入到两个哈希链表当中 notify_user_login(p, 1); ADD_TIMER_EVENT(p, long_time_min45_in_game, 0, now.tv_sec + 45*60); ADD_TIMER_EVENT(p, long_time_min10_in_game, 0, now.tv_sec + 10*60); if (IS_GUEST_ID(p->id)) { //如果是访客的话进入下面流程 enter_map(p, 1, 0); //为访客直接设置地图 rsp_proto_login(p); return 0; } else { return db_get_sprite_with_mail(p); } } sprite_t* add_sprite(sprite_t* v) { sprite_t* p = alloc_sprite(v->fd); *p = *v; p->stamp = now.tv_sec; INIT_LIST_HEAD(&p->hash_list); INIT_LIST_HEAD(&p->map_list); INIT_LIST_HEAD(&p->timer_list); … list_add_tail(&p->hash_list, &idslots[p->id % HASH_SLOT_NUM]); //插入到以用户id为索引值的哈希链表 return p; } static inline sprite_t* alloc_sprite(int fd) { sprite_t* p = g_slice_alloc(SPRITE_STRUCT_LEN); //分配一个sprite_t数据结构 p->fd = fd; //初始化一个套结字索引值 g_hash_table_insert(all_sprites, &(p->fd), p); //以套结字描述符为索引插入到全局的哈希链表 ++sprites_count; return p; } enter_map是一个很重要的函数,它设置了玩家的地图信息,每一个地图都是一个数据结构map_t,里面包含一个list_head类型的数据结构sprite_list_head,而每一个sprite_t数据结构都有一个list_head类型的map_list,每次初始化完了一个sprite_t之后最终都要调用一个list_add_tail (&p->map_list, &tile->sprite_list_head)将该sprite_t加入到一个map的list当中,这里的list_head就是linux内核中的最常见的list_head数据结构 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274108

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册