搜索
查看: 7295|回复: 46
打印 上一主题 下一主题

[八卦杂谈] 聊聊关于50的IT技术。   [复制链接]

Rank: 8Rank: 8

贡献
0
金钱
2574
性别
保密
威望
0
最后登录
2020-12-25
精华
0
帖子
873
积分
3447
阅读权限
90
注册时间
2011-10-13
UID
119414175
跳转到指定楼层
楼主
发表于 2016-7-21 10:39:47 |只看该作者 |正序浏览
本帖最后由 mrmengyi 于 2016-7-21 10:39 编辑

刚看了几篇,关于服务器卡的帖子。
分析的头头是道。还是那句话:然并卵。
所以,技术的问题就丢给游戏商家自己解决吧,玩家只需要提出需要。

先举几个反例:
1、“现在九维的一台物理服务器上通过虚拟机的模式同时运行着几个游戏大区是不争的事实
评论:网页游戏,应不需要搞虚拟机这么麻烦。正巧我在公司的工作也涉及一些虚拟化的工作。
   使用虚拟机,平均会损失 30% 的计算资源。虚拟机的应用主要是在弹性计算资源的调配和系统隔离。
1.1) 弹性计算资源的调配:比如说30人工作,分三班倒。只需要15台的虚拟机资源,超分2倍,可以分配30个虚拟机,大家上班时间不一样,可以轮着使用又不互相干扰。
1.2) 系统隔离:网络服务的应用主要是多个托管商家在一个服务器上,使用虚拟化环境隔离,这样一个厂商的app挂了,不会影响同一个虚拟化环境的其他厂商。
   50的系统,用到了集群、负载均衡、多站点、高并发(ngnix)、高速缓存(memcache)等技术。在刚开发的那段时间,尚不流行虚拟机技术。

2、“所以其中一个游戏区因为“小号过多”等原因会争抢同一台物理服务器的性能资源,造成同服务器的其它区出现卡顿甚至崩溃。”
评论:同1.2。如果真的使用了虚拟机,实际上通过监控、隔离,不会因为一个区的崩溃,导致其他区的崩溃。

3、“给每个区增加角色数量上限”评论:实际上是有上限的。我记得有人注册小号遇见这个情况。可能是百万吧,记不清了。
-----------------------------

那么,挂小号影响多少性能?
实际上要看是怎么挂机。挂了哪些。
多挂一个号,会造成多少服务器的开销呢?做权威的应从运维人员这边获取数据,例如每秒请求数量,每秒完成请求数量。
虽然从研发角度并不能准确的评价,不过我可以尝试做一些分析: 一个号占用的资源,大约有:数据库中记录的数据;小号向服务器发出的请求。
1、数据库资源对于游戏,数据库的资源小号基本可以忽略。每个账户的数据有限,所以对数据库的负担增加只是线性。对于检索的时间,是对数级别(查询时间复杂度)。
通俗来说,如果100个号查询需要1毫秒。那么:200个号查询时间是1.15毫秒、300个号查询时间是1.238毫秒、400个号查询时间是1.3毫秒。

2、计算资源(CPU消耗)
CPU的消耗可以分为两部分:http协议处理的消耗和内部计算的消耗。
  有一些操作,可以合并。例如:卖999个技能书,可以分999次每次卖1本,也可以1次卖出999本。很明显,前者所消耗的CPU资源是后者的999倍。如果大量的操作可以合并,可以减少很多服务器压力。
  另外,不同的操作,对于CPU的消耗还有不同。例如,卖一本书和打一次怪,对于服务器的压力是不同的。前者只需要简单的计算,把书扣除并增加铜币;后者需要读取双方数据进行对战计算。根据实测数据,三万号只挂日常,不会影响现有服务器的运行。一个小号的日常请求数据为7次以内。21万的http处理,大约单线程120小时以内,对于集群来说是非常轻松的。


------------------------------
有朋友讨论这次问题,提了几个观点,个人比较赞同,这里纯粹转发:
1、不应截断大家获取铜币的方式。
2、老友卷、瑕疵石交易是触发大量建号的原因。
3、减少游戏的不必要功能。最典型的就是加血加蓝的药。在50世界里,这两类药就是两个大大的笑话。
4、允许多物品一次性兑换和买卖。减少服务器开销。
  BTW: 一次只能换一个,或者买一个,这一定是有多线程并发BUG。例如:一周能换3次的突破进阶石,为嘛一次只能换一个?
     不要问我为什么知道,用脚趾头都能想得到。



==================
建议彻底修正并发BUG。按照9wee技术员的尿性,这个问题应该还没彻底解决。现在是能打补丁的就打补丁。反正能糊弄就可以了。
这里,附送一个第5点的解决方案。是某互联网公司(上市公司,算比较大的)技术总监给我们讲课的时候get的方法。“如何解决高并发场景下,同时保证性能和数据一致性”
》》这方法在互联网上都是用烂的,不知道9wee的程序猿们是否知道。

如果两次并发交易,传统的加锁会导致处理队列排队,十分影响效率。而多台服务器并发,有可能导致花1份的钱,买到2份的商品。
众所周知(在程序猿的世界众所周知),数据库的分库分表(横向切割和纵向切割),能保证角色的数据分散在不同的数据库。这样一个角色的频繁请求只会影响同一个服务器,并且可以在该服务器排队。
同时,数据库层面可以通过事务的方式,保证一致性。一个单一的SQL,就是一个事务!


回到问题:如何保持高效和数据一致性
我们的目标仅仅是高效+数据一致性。那么当并发请求到达时,在计算处理层面,可以使用集群的分布式计算,在不同的服务器上处理。
在SQL之前记录一下当前的账户的余额,例如当前余额100元。然后处理交易数据(可以较长时间)。
然后在最后增加购买数量的时候,SQL里增加一个条件:WHERE '余额'=100
这样,只要余额不匹配就不会交易。而且处理交易的部分可以分布式急死俺,还可以有相对长的时间(10秒级)。不符合条件的情况下不会成交。


最后补充说明:我不是搞互联网的,也不搞大规模集群和高并发处理。只是我觉得这个方式是一种非常廉价和易于理解的方式。
有不正确的欢迎指导,写的不对了也不必嘲笑,大家切磋切磋。

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
4739
性别
保密
威望
0
最后登录
2024-7-9
精华
0
帖子
920
积分
5659
阅读权限
90
注册时间
2011-6-21
UID
35801177
47#
发表于 2016-7-22 01:01:20 |只看该作者
看了看  又点精神

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
4090
性别
保密
威望
0
最后登录
2019-8-16
精华
0
帖子
1137
积分
5227
阅读权限
90
注册时间
2011-6-21
UID
66439034
46#
发表于 2016-7-21 21:34:50 |只看该作者
Destiny123 发表于 2016-7-21 16:29
现在签到之前还需要去获取一次是否签到过的信息,否则它不给你礼包
...

貌似又不需要了

使用道具 举报

论坛元老

五毒教教主

Rank: 8Rank: 8

贡献
0
金钱
16010
性别
星座
天蝎座
威望
0
最后登录
2018-3-29
精华
0
帖子
12570
积分
28581
阅读权限
90
注册时间
2013-7-5
UID
60827184
45#
发表于 2016-7-21 19:32:47 |只看该作者

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
5943
性别
保密
自我介绍
漏洞越来越多了,各种活动,各种超前延后。2015.01.24武林好安静,论坛好清静。
威望
0
最后登录
2019-6-26
精华
0
帖子
3874
积分
9817
阅读权限
90
注册时间
2011-6-21
UID
105378048
44#
发表于 2016-7-21 19:00:50 |只看该作者
一帮技术员哦,莫非要下决心学学技术咯。一直太懒了。看到锁——保证一对一精确性;看到要单一服务器崩溃不影响其余的。
活动什么要再不严谨,广大低消费群体玩家填小坑的时间跨度更大了,额外的花费就是一次次的失望。为即将离开,提前说声( ^_^ )/~~拜拜

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
3442
性别
保密
自我介绍
重剑已死
威望
0
最后登录
2019-6-28
精华
0
帖子
1327
积分
4769
阅读权限
90
注册时间
2014-4-9
UID
126771052
43#
发表于 2016-7-21 17:20:43 |只看该作者
都去抗洪去,都围在这里干啥呢

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
7836
性别
保密
威望
0
最后登录
2024-11-24
精华
0
帖子
1613
积分
9449
阅读权限
90
注册时间
2011-6-23
UID
83759050
42#
发表于 2016-7-21 16:58:27 |只看该作者
V587 ~              

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
2868
性别
保密
威望
0
最后登录
2017-2-15
精华
0
帖子
1060
积分
3928
阅读权限
90
注册时间
2014-8-4
UID
129443080
41#
发表于 2016-7-21 16:40:10 |只看该作者

使用道具 举报

Rank: 6Rank: 6

贡献
0
金钱
1211
性别
保密
威望
0
最后登录
2019-11-5
精华
0
帖子
26
积分
1237
阅读权限
70
注册时间
2015-4-1
UID
128939038
40#
发表于 2016-7-21 16:29:54 |只看该作者
雪心吻蝶 发表于 2016-7-21 15:44
托管任务一次
签到一次
托管竞技一次

现在签到之前还需要去获取一次是否签到过的信息,否则它不给你礼包

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
2574
性别
保密
威望
0
最后登录
2020-12-25
精华
0
帖子
873
积分
3447
阅读权限
90
注册时间
2011-10-13
UID
119414175
39#
发表于 2016-7-21 16:24:28 |只看该作者
雪心吻蝶 发表于 2016-7-21 11:36
innodb的行锁效率很高的,不会影响,并发BUG问题是出在cache里的热数据无锁
而且游戏应 ...

cache里的数据无锁?解决不了并发期间的数据一致性么?
那么淘宝、支付宝、京东啥的早就歇菜了。


应该不会直接写数据库,但是通过透明的缓存应可以避免直接观察到缓冲层,对于应用层面和直接写库应该没有逻辑上的差异。


innodb的行锁效率很高的”。不怎么深入研究mysql。不过我一直认为行锁的效率再高,也会影响性能。
在大规模账户的线上系统中,我看到的都是自己分库分表,自己维护cache和锁。还没有见过直接用数据库锁的情况。如果有,请您分享一下,我去学**学**。


关于集群,我是一个猜测。因为大型游戏使用集群应是比较常用的方式。这里还可能有概念上的理解差异。
我能够确定的是,9wee通过域名解析返回的IP不同,使得不同区域的玩家访问到不同的服务器。我称为“集群”方式,可能和专业做IT的叫法不同。
比如你访问官服5区,同一个域名实际上至少有3个IP,任何IP都可以访问。然后就是你说的virtualhost。
打个比方,通俗的说(考虑到科普性质),就是有10台服务器的IP是 xxx.xxx.xxx.101 - xxx.xxx.xxx.110,同时给1区到10区提供服务。你的操作落在哪台服务器是不确定的。而任何一台挂了,只要域名解析哪里能快速调整,玩家是感受不到服务器宕机的。

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
2574
性别
保密
威望
0
最后登录
2020-12-25
精华
0
帖子
873
积分
3447
阅读权限
90
注册时间
2011-10-13
UID
119414175
38#
发表于 2016-7-21 16:04:51 |只看该作者
雪心吻蝶 发表于 2016-7-21 15:44
托管任务一次
签到一次
托管竞技一次

正解,翅膀果真是同道中人。
实际上我以前挂石头,只需要5次。说7次是估摸着放了点量

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
2574
性别
保密
威望
0
最后登录
2020-12-25
精华
0
帖子
873
积分
3447
阅读权限
90
注册时间
2011-10-13
UID
119414175
37#
发表于 2016-7-21 16:03:17 |只看该作者
heypop 发表于 2016-7-21 11:59
我知道你也是做IT的,但是说的都是秀才的话,武林的问题,不简单仅仅是程序员及编程技术上的问题,这还涉及 ...

首先,我想说的是。我只希望和有理智的人讨论技术问题。我欢饮继续交流和切磋技术问题。那么,我们先看一下您关于9wee技术的观点:
1、从各色人等以与客服交流的内容可以肯定:现在九维的一台物理服务器上通过虚拟机的模式同时运行着几个游戏大区是不争的事实,所以其中一个游戏区因为“小号过多”等原因会争抢同一台物理服务器的性能资源,造成同服务器的其它区出现卡顿甚至崩溃。
2、武林主要是托管在浙江金华的IDC机房,具体双方的合作方式外人并不清楚,这还包括硬件条件等,从综合运营成本考虑,九维游戏的部署模式也无可厚非,但是绝对不会连监控和隔离都不知道,肯定是受到了某些条件的限制和约束。更何况武林是10年前上线的游戏,没有采用现在流行的比较彻底的云架构。
----------
这里有个自相矛盾的观点,第一条中,猜测9wee使用了“虚拟机”的模式,第二条中又说“没有采用现在流行的比较彻底的云架构”。
请先说请说您的技术观点,对于9wee的IT技术的理解。


=====================
下一条:一个公司也罢,一个单位也罢,并不需要人人都懂,只要有一两个高水平的就足矣
我只想说,高并发+数据一致性的技术,并不是什么高深的技术,也并非秘密。9wee的CTO应有足够的能力解决问题,而不是像现在这样规避问题。
这里再解释一下什么是规避,什么是解决。
  若是解决问题,应该是报名黄金联赛就直接得到礼包,并且不会出现之前刷礼包的情况。
  现在是报名的时候不发礼包,事后再统计。我猜想是在周三的3:00-10:00直接做的吧。


=====================
关于是不是秀才言论。我承认我是外行。我是做程序设计和产品设计的。对于上线运维的东西一知半解,所以我只谈程序设计问题。


====================
“如果大家都切实遵守交通规则,就不会出现那么多交通事故”
这个比方并不恰当。开车闯红灯是要罚款的。是大家都知道的违法行为。官方能发一条规定,“小号**”么?记得发规定的时候说清楚“小号”的具体定义。

===============
下一条:你能找出一家现在不用这些技术的网页游戏吗?就像说一个人必须睡觉和吃饭,这都是废话。
废话么?我说的这些都是我能确认或者基本确认的内容。
我列一下我说的那些技术吧:
1、负载均衡。前几年我停市场部同事说过,上海的九维向我们公司购买了一些负载均衡板。所以我有这个猜测。
2、集群。如果是单一服务器,一般就不会刷出那么多黄金联赛的礼包了。
3、多站点。9wee的50游戏站点,大体分为几个区域。比如官方的区。基本上可以用相同的IP地址访问。服务器侧用域名作为区域区分。
   也就是说,你访问1区,和访问90区,可能是同一组服务器在工作。
4、高并发。从服务器的应答看,50最外层的服务器可能是ngnix。这是一款业界比较有名的高并发web服务器。记得是使用了linux的epoll特性。
5、memcache。在页面错误的时候看到过memcache的报错。
而这里我很想问一下您是怎么知道9wee使用了虚拟机(参见第一条)。如果信口开河,和您继续讨论就是在浪费时间了。




使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
10096
性别
保密
威望
0
最后登录
2024-11-24
精华
0
帖子
2348
积分
12444
阅读权限
90
注册时间
2011-12-25
UID
36539007
36#
发表于 2016-7-21 15:57:12 |只看该作者
不明觉厉

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
4090
性别
保密
威望
0
最后登录
2019-8-16
精华
0
帖子
1137
积分
5227
阅读权限
90
注册时间
2011-6-21
UID
66439034
35#
发表于 2016-7-21 15:44:51 |只看该作者
打你是為你好 发表于 2016-7-21 12:42
回复 mrmengyi 的帖子

几个问题:

托管任务一次
签到一次
托管竞技一次
领取任务一次
领取竞技一次
领取修身养性一次
领取全民福利一次
总7次
OVER

使用道具 举报

Rank: 6Rank: 6

贡献
0
金钱
1949
性别
威望
0
最后登录
2024-7-31
精华
0
帖子
1015
积分
2964
阅读权限
70
注册时间
2015-12-17
UID
131738085
34#
发表于 2016-7-21 14:26:22 |只看该作者

使用道具 举报

论坛元老

前排卖瓜子,后排卖汽水。

Rank: 8Rank: 8

贡献
0
金钱
3973
性别
保密
威望
0
最后登录
2024-11-12
精华
0
帖子
1972
积分
5945
阅读权限
90
注册时间
2014-3-29
UID
128196106
33#
发表于 2016-7-21 13:14:29 |只看该作者
小队长 发表于 2016-7-21 13:05
重要的是心态,9维挖坑太容易,我为什么要用大量时间,或者真金白银去填呢? 大不了少打几层幻境,几层副 ...

追求不一样                                     现在玩游戏大多不是以前单服的问题了。。。
前排卖瓜子,后排卖汽水。

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
4279
性别
保密
威望
0
最后登录
2023-10-13
精华
0
帖子
526
积分
4805
阅读权限
90
注册时间
2011-6-21
UID
90098
32#
发表于 2016-7-21 13:05:11 |只看该作者
一个人的约会 发表于 2016-7-21 12:06
首先。。。。。。。。。九维坑太大、、、、别人充值我返券我帮别人弄铜币。九维充值的铜币根本跟不上出坑 ...

重要的是心态,9维挖坑太容易,我为什么要用大量时间,或者真金白银去填呢? 大不了少打几层幻境,几层副本,要知道多获得的那点道具也有下一个坑等着你,我们是来玩游戏,休闲的,不是来填一个又一个坑的,这和事业上克服一个又一个难关取得成功是完全不一样的概念。

使用道具 举报

Rank: 6Rank: 6

贡献
0
金钱
1211
性别
保密
威望
0
最后登录
2019-11-5
精华
0
帖子
26
积分
1237
阅读权限
70
注册时间
2015-4-1
UID
128939038
31#
发表于 2016-7-21 13:01:32 |只看该作者
打你是為你好 发表于 2016-7-21 13:00
聽說那幾千個人喝掉的, 回家後會吐出來(或其它方法出來), 再餵給那個帶人來的...

另外, 我是做技術的... ...

那你喝个几千份汤试看看

使用道具 举报

Rank: 6Rank: 6

贡献
0
金钱
1451
性别
保密
威望
0
最后登录
2020-12-26
精华
0
帖子
780
积分
2231
阅读权限
70
注册时间
2013-7-19
UID
47871133
30#
发表于 2016-7-21 13:01:23 |只看该作者
这就是你元老了的原因么

使用道具 举报

Rank: 8Rank: 8

贡献
0
金钱
9115
性别
保密
威望
0
最后登录
2024-11-13
精华
0
帖子
2490
积分
11605
阅读权限
90
注册时间
2011-6-21
UID
87050220
29#
发表于 2016-7-21 13:00:12 |只看该作者
本帖最后由 打你是為你好 于 2016-7-21 13:00 编辑
Destiny123 发表于 2016-7-21 12:49
这位仁兄的比喻实在是不妥,可能是因为你不是做技术的。
一个付费的客人带着几千人来喝免费的汤。。。
那 ...

聽說那幾千個人喝掉的, 回家後會吐出來(或其它方法出來), 再餵給那個帶人來的...

另外, 我是做技術的...

使用道具 举报

您需要登录后才可以回帖

手机版|九维网

GMT+8, 2024-11-25 14:24

沪ICP备07016242号-1 BBS Based on Discuz! © 2006-2024 9wee.com

回顶部