Coherence-英雄联盟的幕后英雄

2022-04-12 00:00:00 数据 节点 缓存 性能 单点

英雄联盟-史上成功的游戏之一
英雄联盟,简称LOL是由美国Riot Games开发、中国大陆地区腾讯游戏代理运营的英雄对战MOBA(Multiplayer Online Battle Arena)竞技网游。

游戏里拥有数百个个性英雄,并拥有排位系统、天赋系统、符文系统等特色养成系统。

《英雄联盟》还致力于推动全球电子竞技的发展,除了联动各赛区发展职业联赛、打造电竞体系之外,每年还会举办“季中赛”,“全球总决赛”,“AllStar全明星赛”三大赛事,获得了亿万玩家的喜爱,形成了自己独有的电子竞技文化。

据CNNIC2016年的的数据统计,在MOBA细分市场,LOL的玩家已超过65%,处于领先地位。根据Riot 2014年公布的数据:2014年一月:
LOL全球日均用户:2700万以上。
LOL全球月均用户:6700万以上。
LOL全球同时在线纪录:750万。

此后,Riot再没有公布游戏的上述具体数据,只是在2016年9月,Riot高层透露LOL月均用户有1亿左右。可见LOL的用户还在不断的增长中,正是因为有非常好的体验,LOL才如此成功。而这一切都依赖于LOL的底层技术架构。让我们了解下LOL的技术架构。

英雄联盟的幕后英雄-Coherence
如下图,LOL在服务端基本采用开源技术,的商业软件是Coherence


Coherence在里面起到一个非常关键的作用,通过Coherence缓存后台服务数据,主要有:游戏分区信息,玩家信息撮合,玩家的积分,游戏中的对话和交互,各种实时统计信息等。由于是在内存中直接访问这些数据而不是通过数据库,响应时间大大缩短,使游戏非常流畅,体验非常好。同时Coherence的动态线性扩展功能,保证在高峰期也有很好的性能和体验。具体可参见https://www.infoq.com/presentations/League-of-Legends

Coherence零数据丢失的内存数据网格
Coherence是2001年发布的个版本, 2007被Oracle收购。到现在已经16年的历史,历经演进,目前新的版本为12.2.1。Coherence可以说是早的NoSql和分布式缓存产品。与开源的产品相比,coherence是他们的前辈,更成熟稳定可靠。Coherence采用独特的P2P架构,没有单点故障和单点瓶颈,可以线性扩展。

Coherence可以对缓存的数据进行备份,保证有节点出故障或者停机时,数据不丢失。也可以动态加入新的节点。这时候数据会重新分布。这些对应用都是透明的。Coherence支持Java, C++, .Net客户端。支持REST访问。


Coherence不仅仅是缓存
缓存只是Coherence的功能之一,Coherence还可以对缓存的数据进行各种计算统计分析。如简单的求和,求平均值等。并且Coherence在做这类统计分析时是并行处理。比如1亿条数据,缓存到100个节点上,每个节点上面100万条记录。做统计分析时,是100个节点同时进行,然后把结果汇总,这样就大大提升了性能。

同时Coherence支持事务,支持JTA,可在内存中进行交易处理,并保证数据的一致性。

当缓存中的数据发生变化时,Coherence支持事件触发,在应用中就可以侦听相应的事件,进行处理。



Coherence的独特优势
现在的市场上的缓存产品很多,如常见的开源的Memcache, Redis等,商业软件如:Gemfire等。同他们相比,Coherence有如下优势:



1. 支持事务,支持JTA

如同时更新2个cache的内容并保证数据一致性,都成功或者都失败回滚。同数据库或者JMS队列等通过JTA,进行分布式事务。



2. 提供计算靠近数据的处理方式

Coherence提供类似Hadoop的计算靠近数据的处理方式EP(entryprocessor),减少网络访问,提高性能。



3. 提供多种缓存方式,供不同场景选择

有Local cache,Replicated cache ,Distributed cache, Near Cache 4种缓存方式。



4.内存和数据库之间的数据同步

内存中的数据更新,自动同步到数据库,数据库中的数据更新自动同步到内存cache



5.独特的P2P架构,没有单点故障和瓶颈,线性扩展

可以动态增加或者减少节点,缓存中的数据自动重新分布,对前端应用是透明的。



6.在Oracle弹性云一体机Exalogic上有超高的性能

Coherence在Oracle弹性云一体机Exalogic上做了专门的优化,Coherence+ Exalogic可以提供超高的性能,如下图:



7.轻量级,开发集成都很简单

Coherence的核心是一个只有十几M的jar包,非常容易同如今大行其道的Docker容器结合。开发也是简单的调用put, get等API. 另外Coherence很容易同Hibernate等OR mapping工具集成。还提供Memcached适配器,可以很容易把采用Memcached的应用迁移到Coherence



8.相比开源产品,Coherence作为商业软件,能够提供更好更及时的服务。

Coherence在2001年就发布了个版本,可以说是分布式缓存和NoSql产品的鼻祖,相比很多开源的产品更成熟稳定可靠。作为商业软件,能够有更好更专业及时的服务。



9.成熟稳定,有大量的客户案例

Oracle Coherence有大量的用户,在国内的电信,金融等行业也已经有很多案例。如某沿海移动公司就把核心的计费,账务,CRM等系统构建在Coherence之上,大大提升了性能和扩展性。同时实现去小型机化,把应用部署在X86开放平台的目标。



总之,在如今到处都强调用户访问体验的年代。Coherence这种把性能提升到的产品必将有越来越广泛的应用场景,在数字化时代大显身手。

相关文章