OpenResty在腾讯游戏营销技术中的应用和实践
另外 JSON 操作确实会消耗我们很多 CPU 的性能,我们一些同学也经常在 debug 里面去打印,想把这个 debug 日志里面去打印很多数据结构里面的内容(用json.encode来打印),然后放到生成环境上去,虽然这个 debug 操作是不会执行,但是这个函数,JSON encode操作是会执行的,这样的话会导致生产环境极大的性能损耗,等等这样类似的情况还是非常多的,所以我们在实际过程当中还是要去留意这样一些不好的编码的习惯。 正则表达式匹配的优化 第三个就是正则表达式匹配的优化。大家知道正则表达式匹配都是由正则表达式引擎来做的,常用的正则表达式引擎就是PCRE,于是我们就去考虑有没有更加高性能的正则表达式匹配的引擎呢?我们也去做了一些调研,正则表达式应用最多的领域其实是在安全领域里面,安全领域里面有这样的的IPS、IDS 这样的一些安全检测和防御性的产品里面会大量地使用正则表达式匹配的操作,它之前也是用 PCRE 来做正则表达式的匹配。后来就是在这两年的时候,都统一切换到了英特尔开源的 Hyperscan 这样的正则表达式引擎来了。 为什么它会去做这样的改变呢?Hyperscan 正则表达式引擎比这个PCRE有哪些优势呢?分析后发现它有这么几个方面的不一样或者说优点。
所以接下来是不是还有可以优化的空间?当然有,就是开启它的并性匹配度规则的操作,这个 Hyperscan 里面也是提供了回调,然后我们只需要把每个规则设置一个标志位,然后去匹配完之后检查这个标志位以后就OK了,就可以做得到了。 另外还有一件事情是什么呢?就是正则表达式规则编写难度的问题,我们不能要求业务开发同学每次都要去编写正则表达式,这个对他们来说也不一定编写得正确,也有一些学习的成本在里面。所以我们就去看了一下大部分的参数还是比较类似的,所以就把这些参数的正则表达式做一些归纳,然后用一些文字性的描述,做了一个模板,业务人员就可以直接去选择这些模板就OK了,也很好的解决了这个问题。 安全性方面的优化 第四个方面的优化就是安全性方面的优化。安全性方面的优化要做的一件事情就是,它需要把我们这个 API 网关的安全策略去和公司现有的一些安全的产品做结合。腾讯内部有这样的自己的安全产品,叫门神,所以我们在 http 请求进来post read阶段就去和安全产品做一个交互,让它去过滤流量。它过滤的流量没有问题之后,再进入到我们的安全策略里面。当然这个安全策略也相对会比较简单,包括有 API 白名单,配置到 API 的流量才可以进到里面来。然后还有基于用户过滤的黑白名单,还有登录校验,支持腾讯的手Q、微信等的多种校验方式,也都把它集成进来了。 另外去做参数校验,参数校验则用前面提到的正则表达式做非常严格的必选参数的校验。另外就是如果做了非常严格的正则表达式匹配的话,SQL 防注入等等这样的问题也不会有。这个就是安全性方面的优化。 可维护性方面的优化 最后就是可维护性方面的优化,我们也做了两点:
那到这里就快速简单介绍了一下第一个应用案例,在易用性、可用性、性能,还有安全性以及可维护性这五点,我们的一些思考和优化的过程。 OpenResty 在腾讯游戏、广告投放系统中的应用案例 接下来进入到第二部分,就是 OpenResty 在腾讯游戏、广告投放系统中的应用案例。还是和之前的内容一样,我不会涉及到很多具体的 OpenResty 的技术的细节,主要是想跟大家分享一下案例,以及在这个案例里面一些优化的思想。 这个案例相对会比较大胆一点,因为大概腾讯游戏有好几个亿的营销费用都会通过这个系统投放出去。广告投放的形式有很多种,有包段广告位的、包段时间段的、包段流量的,还有普通竞价的,还有实时竞价的。今天我想跟大家分享的就是实时竞价的广告投放形式和我们 OpenResty 的一个结合,以及 OpenResty 在里面的优化。 (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |