星型架构
|
为了解决上述问题,小游戏团队采用了星型架构,如下图:
不同节点之间通过 router进行通信,router是实现节点间消息转发的服务器。比如说 A节点中的 Player1对象要向发送 B节点中的 Player2对象发送组队邀请,可以将消息发送到 router,router再转发到 B节点处理之后再发送到 Player2的客户端。在这个结构中,所有的节点都是对等的关系,任何两个节点通过 router都可以实现消息互通。但是这个图有一个明显的题:router是一个单点,有容错性问题和可扩展性问题。对于容错性问题,可以通过引入主备机制来解决,借助 zookeeper可以实现主备的自动切换,当主节点不可用时,自动切换到备节点。
此外,可以通过 router将多个星型结构连接在一起,解决可扩展性问题,如下图:
player1 在 set 1的节点 A上,player2 在 set 2的节点 B上,player 1向 player 2 发送组队邀请时,消息可以通过 router1 转发到 router2,最后到达 B节点,在 B节点中进行必要的判断处理,最后通知到 player2的客户端,这就要求 router保存所有对象的路由数据,类似下面这个表:
这里,router做了以下事情:
一是收敛连接,简化了内部通信的管理;二是建立了通用的对象路由机制,简化了游戏的开发,游戏开发人员不用关心服务和进程,只用关心对象就可以了。三是可以通过 router进行负载均衡和广播。
router具有通用性,可以作为通用的游戏中间件。
基于这个架构,系统的扩展可以在两个层面进行,一个是 set内的扩展,当大厅或者对战节点不够了时,可以动态添加,新节点会去 router上注册自己,加入到系统中,当一个 set的承载能力达到上限时,可以继续通过复制 set进行扩展,假设已经有了 set0和 set1,当需要添加 set2时,整个过是先部署 set2,当 router2起来时,router0和 router1会通过 zookeeper发现它,并建立到它的连接,连接建立后,router2会向 router1或 router0获取全量对象路由信息,并且将自己上面初始化后产生的对象路由信息发送给 router0和 router1。
到这里整个系统的通信拓扑就已经建立完成了,set2可以对外开放,player2登录到 set2的大厅节点后,会向 router2发送自己的对象路由信息,router2会把这个信息同步给 router0和 router1。简单说,是通过复制节点和复制 set进行扩展,反之可以进行收缩。
下图就是扩展星型结构在腾讯云上的一个实践,对于实时性要求高的游戏,比如坦克大战这样的游戏,可以多点部署,让玩家就近接入,华南的玩家接入到广州的 VPC,华东的玩家接入到上海的 VPC,两个 VPC内部分别部署了 set1和 set2,并且通过跨域对等连接打通,使得router1和 router2能够建立内网连接,实现全区全服。
存储层设计
小程序设计的目标是建立一个大存储层以满足全区全服和动态扩容的问题。其中最重要的问题是数据库水平扩展的问题,自己做可以有三种方法实现:第一种基于增量区间的分片,它的优点是可以实现动态在线扩容,但是存在性能热点的问题,因为新分片永远是访问量最大的分片,而老分片会随着玩家流失出现性能闲置的情况;第二种方法是根据 ID的散列值将数据均匀分散到不同的分片,没有性能热点的问题,但是在对系统进行扩容时候,往往需要对数据进行搬迁,比较难以实现快速自动扩容;第三种方法就是将两者结合,可以同时解决两个问题,但是需要增加中间数据路由层,有研发负担和性能损耗。
为了简化存储层的设计,现在比较广泛使用的是腾讯云的分布式数据库产品 DCDB,它的原理是通过增加中间代理层,将一个逻辑表映射到到多个物理表,将分片的复杂性完全封装在代理层。对业务层可以做到近乎透明。
DCDB支持新增分片扩容和现有分片扩容,扩容时系统会自动对数据进行搬迁并且切换相应的流量,对在线业务可以做到无感知,开发者只需要在控制台进行简单的操作就可以实现自动扩容。
另一个能简化存储层设计的产品是腾讯的 TCaplus,TCaplus是腾讯自研的,专为游戏设计的 NoSQL分布式数据库,它的特点主要有三个:
一是支持 Protobuf接口访问,接口友好,非常适合游戏开发;二是将 Cache与硬盘结合,冷热数据自动换入换出,开发人员不用同时面对缓存数据库和持久化数据库;三是存储空间无上限,单表最大支持 50TB,支持不停服扩容,能很好地支持全区全服。
目前 TCaplus在腾讯内部得到了广泛使用,包括王者荣耀、火影忍者、CF以及绝地求生手游等数百款游戏,都以 TCaplus作为主数据库。
4工具:LayaAir引擎一键发布微信小游戏
LayaAir引擎是 Layabox推出的 HTML5开源引擎,不仅支持 AS3、TS、JS三种语言开发 HTML5游戏,还可以同时发布为 Native APP游戏和微信小游戏,以及 QQ玩一玩游戏。开发者可直接在 LayaAirIDE工具内快捷的开发产品和提交产品。Layabox 合伙人李明详细分享了如何利用 LayaAir引擎与 LayaAirIDE工具一键发布微信小游戏。
小游戏创建前的准备工作
发布微信小游戏之前需要做一些准备工作,包括环境配置、工具下载、创建账号等。
第一:环境配置,即下载并安装引擎的开发环境。LayaAir引擎的开发工具 LayaAirIDE、发布小游戏的功能适配都在这个环境里面实现;第三:创建一个小程序的企业开发者帐号,获得开发者 ID(AppID)。这里,值得注意的是,个人开发者不需要版号,但是也不能开内购支付;对于企业开发者,如果版号没办完,也可以提供版号申办回执。
H5引擎开发微信小游戏的流程
H5引擎开发微信小游戏主要包括创建、开发、发布、真机调试与上线发布等步骤,首先需要在 IDE里面创建小游戏示例项目,然后用 IDE内进行小游戏的开发,开发完成后在 IDE内可直接发布小游戏项目。小游戏项目发布后,还需要在微信的开发者工具内导入 IDE发布的小游戏项目,然后通过在微信开发者工具内的预览和上传功能,进行真机调试和上线发布。
在 IDE里面创建小游戏项目。这个比较简单,打开新建项目按钮即可看到创建界面,需要注意的是创建时一定要选择微信小游戏 2D示例或微信小游戏 3D示例,否则不会创建微信开发者工具的工程文件,以及不会导入小游戏适配库。IDE内进行小游戏开发。在小游戏开发过程中有一个很重要的关注点,是 4M本地包,这个本地包主要用于存放 JS文件与最基础的预加载资源(整 个项目的 JS必须放在本地包),本地包超过 4M后,可远程动态加载资源,通过 LayaAir引擎适配库的本地包白名单功能,可以方便的管理本地资源与远程资源的加载。另外,在小游戏的缓存管理这一块,LayaAir引擎适配库提供自动缓存管理与手动缓存管理,常用资源小于 50M的小游戏建议采用自动缓存管理,常用资源大于 50M的需要手动管理缓存。IDE内发布小游戏项目。项目开发完成后,可点击发布按钮,将 H5项目直接一键发布为小游戏项目,因为微信小游戏、QQ小游戏都提供了标准的渲染接口,LayaAir引擎通过建立适配库,对不同平台的接口与引擎 API进行对接,保障开发者一次开发就可以同时发布多平台。微信开发工具中导入项目。打开微信开发者工具,创建一个小游戏项目,创建时的目录直接指向发布后的小游戏项目即可。微信小游戏的调试。微信小游戏的调试包括常规开发调试和真机调试两个部分,常规开发调试只需开发时在 IDE或 chrome下调试即可(小游戏工具内也是基于 chrome),真机调试要求本地包必须小于 4M,微信的真机调试环境较为简单,调试主要靠 log输出。小游戏上线发布。微信小游戏调试结束后,如果打算上线,直接在微信开发者工具内点击上传,即可将小游戏版本提交到微信开发者平台中,在平台中提交相关资料,审核通过后,可上线。
以上,就是用 LayaAir引擎一键发布小游戏的完整流程。据悉,Layabox还将与腾讯云联手优化小游戏发布与开发流程,未来 LayaAirIDE中将集成一键上传微信小游戏的动态加载包到腾讯云,避免人工拆分目录 、打开服务器传输工具等繁琐流程,同时,用户还可以将 LayaAirIDE中的帐号与腾讯云关联绑定,通过 IDE快速购买腾讯云的服务器。
5实践:如何利用小程序技术解决企业销售难题
小程序时代,不仅需要懂开发,还要你善运营,一个拥有多功能和高性能的小程序,需要配合完备的运营手段,才能发挥最大的价值。加推科技联合创始人刘翌,分享典型企业营销场景痛点解析,以及加推如何结合小程序解决企业销售难题。
企业营销痛点解析
在讲解企业营销痛点之前,刘翌分析了企业营销的三大刚需,即收入、销售和销售管理,这里面,后两点直接影响了企业收入,那么,企业如何做销售和销售管理呢?下图是是一个中国 8000万名销售员的痛点的总结,可以大部分企业都会面临以下四大类的痛点:
首先获客难度大,获客成本非常高。举个例子,大家经常会碰到房产中介,每一天可能要打 300个电话,每个通话假设只有 30秒,核算下来也有 150分钟,但一般电话销售的最终转化都非常低;另外触达率很低:假设在人员密集的展会上,一个销售递出去 500张名片,这其中,可能有 480张名片将会被抛弃,获客触达难,所以成交率就低;销售流动性高:在所有职业里面,销售的流动性绝对是排前的,而一旦销售离职,很多该销售手上的客户就会被带走,最终造成客户流失;成交率低:不管是电话营销、现场交流还是名片传递,这些方式的成交率都非常低,可能 2000个电话里面才会触达 1个客户,10场展会只有 1个实现转化。
加推微信智能营销解决方案
不管是微信公众号、微商城、企业官网还是小程序,在企业初期阶段,没有推流和运营的情况下,获客率一般都不高;即便获的销售线索,由于缺乏可视化、智能化筛选工具,营销人员只能一对一联系跟踪,无法系统管理客户,工作效率较低。
那么,有没有一种通用的方法和工具,能够打通企业、微信、小程序等不同渠道,将推广、运营、销售转化形成有效的闭环?基于这种思路,加推结合微信小程序,从 SaaS小程序接入,开发了全球首款 B2S2C微信智能销售系统。通过 AI名片、AI雷达等解决方案实现微信小程序 10亿用户的触达与转化。
AI名片:智能生成个人小程序名片,用户只需扫一扫销售小程序码,即可添加名片,添加成功的用户可以随时查看销售个人信息,包括个人联系方式、公司职位、功能产品等,信息可根据需要自主设置;AI销售雷达:在小程序添加朋友之后,AI销售雷达通过智能“客户捕手”和客户管理等功能,实时追踪客户行为轨迹,随时随地掌控客户真实需求,及时跟进,同时客户管理功能通过客户画像分析,标签化分类用户,筛选精准用户;BOSS雷达:BOSS雷达通过可视化员工分析系统,将员工拜访执行过程同步到 BOSS系统,沉淀准客户资源,同时,员工客户数据自动保存云端,即使离职,所有数据都能保证全程可追溯。
总的来说,B2S2C微信智能销售系统主要先深度打通微信原生消息通道,打通微信数据层,实时抓取客户行为轨迹并生成用户画像,然后通过小程序技术重构个人名片,搭建企业版微信朋友圈,利用 AI核心算法分析用户行为数据,寻找商业合作突破口,重构客户通讯录,将微信流量导入企业官网或企业系统,BOSS平台可实时掌控员工客户数据,实现流量永久资源化。
(来源:砍柴网)