乐趣区

关于腾讯云:资源利用率提高67腾讯实时风控平台云原生容器化之路

导语

随着部门在业务平安畛域的一直拓展,围绕着验证码、金融广告等服务场景,腾讯水滴作为撑持业务平安反抗的实时风控系统,上线的工作实时性要求越来越高,须要撑持的业务申请量也随之减少。对于业务疾速上线和资源疾速扩缩容的需要,且公司自研上云我的项目往全面容器化上云方向推动,水滴风控平台开始进行自研上云的革新。本文次要针对腾讯水滴平台上云过程中的实际总结,心愿对其余业务迁徙上云有肯定参考价值。

水滴后盾架构

水滴平台次要是用于业务平安反抗的高可用、高性能、低延时的实时风控策略平台,提供一系列的根底组件给策略人员进行构建策略模型,可能帮忙策略人员疾速地实现策略模型的构建和测试验证。
水滴零碎架构如下图所示:

水滴实时风控平台零碎次要由 配置解决模块 数据处理模块 两局部组成。

配置解决模块 次要由前端 web 页面、cgi、mc_srv 和 Zookeeper 等组成。策略开发人员通过在水滴前端页面进行策略模型的编辑、策略工作的创立、上线和更新操作,构建实现的策略模型信息以 json 格局通过 cgi 和 mc_srv 接口存储到 Zookeeper 数据中心,数据处理模块通过 agent 拉取 Zookeeper 上不同业务对应的策略信息。

数据处理模块 次要由 access、engine 和内部零碎等形成,外围解决逻辑为 engine 模块。不同业务启动独立的 engine 实例以确保业务间的隔离,业务数据申请通过发送到指定北极星服务地址或者 ip:port 地址,由 access 接入层接管申请数据后依据工作号转发到对应工作的 engine 实例上,存在内部零碎拜访组件的状况下 engine 会将申请数据查问内部零碎。

自研上云实际

在水滴平台革新上云过程中,先对 TKE(Tencent Kubernetes Engine) 平台进行了个性相熟和测试验证,并梳理出影响服务上云的关键问题点:

  1. Monitor 监控零碎与 TKE 未买通,持续采纳 Monitor 指标监控零碎的话将须要大量的人工染指;
  2. 应答突发流量状况须要人为进行扩缩容,过于麻烦且不及时;
  3. TKE 反对北极星规定,原有 CL5(Cloud Load Balance 99.999%) 存在局部问题;

针对上述自研上云的关键问题点,咱们别离从指标革新、容器化革新、流量散发优化等方面进行革新优化以保障业务服务上云顺利。

指标监控革新

腾讯水滴平台采纳 Monitor 监控零碎进行零碎指标视图查看和告警治理,但迁徙上云过程中发现 Monitor 监控指标零碎存在不少影响上云的问题点,为了解决原有 Monitor 指标监控零碎存在的问题,咱们将指标监控零碎由 Monitor 监控零碎革新为智研监控零碎。

Monitor 监控零碎问题

  1. TKE 未与 Monitor 监控零碎买通,云上实例 ip 地址发生变化时需人工增加对应容器实例 IP 到 Monitor 零碎中,且云场景下实例 IP 频繁变动难于保护
  2. Monitor 指标针对 NAT 网络模式下的容器实例指标无奈实例级别的辨别,NAT 网络模式下雷同属性指标,不利于实例级别的指标查看
  3. Monitor 监控零碎灵活性较差,有新的属性减少时须要申请属性 ID 并调整更新代码实现

智研指标革新过程

Monitor 监控指标零碎的指标上报次要是属性 ID 和属性指标值,针对不同指标须要事后申请属性 ID,在平台零碎实现过程中集成 Monitor SDK 进行不同属性 ID 的埋点调用。如:不同工作申请量指标须要事后申请属性 ID

在应用智研指标革新过程中,咱们平台零碎实现中集成了智研 Golang SDK,将原有的 Monitor 指标上报进行了智研调用革新,智研指标革新过程中最重要的是从 Monitor 零碎的单属性指标思路须要转换到多维度指标下,须要对智研维度和指标概念有肯定的了解和指标设计。

如:设置工作维度,工作取值通过调用上报实现

智研指标和维度设计:
智研的指标在实现革新过程中,最次要是了解指标和维度的含意。

指标: 作为一种度量字段,是用来做聚合或者相干计算的。

维度: 是指标数据的属性,通常用例过滤指标数据的不同属性。
维度属性采纳指标数据中可能进行对立形象的个性,如实例 IP、工作号、组件 ID、指标状态等维度,无奈形象成维度的属性则作为指标属性。智研指标革新后期,未进行正当的维度设计,导致指标和维度抉择过于凌乱,不便于后续的减少和保护。

智研告警告诉优化

智研指标革新实现后,咱们对平台侧和业务侧的指标告警进行辨别,将业务侧相干的指标告警通过告警回调形式间接转发给业务侧,及时告诉业务侧进行异常情况的解决,进步了业务侧接管异样的及时性且升高了平台侧解决业务侧告警的烦扰。

优化智研指标视图 Dashboard 展现,将罕用的智研指标视图整合到智研 DashBoard 页面,不便经营人员疾速理解要害指标状况。

路由散发优化

路由散发问题

1.CL5 首次查问某一个 SID 的节点时,容易遇到以下 -9998 的问题

2.CL5 SDK 无奈进行 NAT 网络模式下的就近拜访,在异地服务状况下数据申请容易呈现超时状况

迁徙北极星 (腾讯服务发现治理平台) 革新

采纳 CL5 进行申请路由状况下,当容器实例采纳 NAT 模式时,应用 CL5 接口无奈获取到物理机 ip 地址,从而导致申请数据就近拜访失败。将负载平衡 API 接口由 CL5 调整为北极星服务接口后,采纳北极星接口可能失常获取 NAT 网络模型下容器实例所在物理机 IP 信息,从而可能实现就近拜访。

CL5 迁徙北极星过程中,将原有的 CL5 SDK 替换成北极星 polaris-go(Golang 版本 SDK)
北极星 polaris-go 应用示例:

//*********************** 获取服务实例 ***************************
// 结构单个服务的申请对象
getInstancesReq = &api.GetOneInstanceRequest{}
getInstancesReq.FlowID = atomic.AddUint64(&flowId, 1)
getInstancesReq.Namespace = papi.Namespace
getInstancesReq.Service = name
// 进行服务发现,获取繁多服务实例
getInstResp, err := consumer.GetOneInstance(getInstancesReq)
if nil != err {return nil, err}
targetInstance := getInstResp.Instances[0]
//************************ 服务调用上报 *************************
// 结构申请,进行服务调用后果上报
svcCallResult := &api.ServiceCallResult{}
// 设置被调的实例信息
svcCallResult.SetCalledInstance(targetInstance)
// 设置服务调用后果,枚举,胜利或者失败
if result >= 0 {svcCallResult.SetRetStatus(api.RetSuccess)
} else {svcCallResult.SetRetStatus(api.RetFail)
}
// 设置服务调用返回码
svcCallResult.SetRetCode(result)
// 设置服务调用时延信息
svcCallResult.SetDelay(time.Duration(usetime))
// 执行调用后果上报
consumer.UpdateServiceCallResult(svcCallResult)

容器化革新

依据水滴平台架构图可知,业务方在水滴平台创立不同的工作后,水滴平台上会启动不同的 engine 实例进行对应工作的计算操作,水滴平台工作与水滴工作 engine 实例呈 1:N 关系,工作越多须要部署上线的 engine 实例越多。为了疾速地上线不同的水滴工作 engine 实例,咱们须要可能确保工作对应的 engine 实例疾速的部署上线,因而 engine 实例模块进行容器化和自研上云可能晋升经营效率。

水滴平台数据处理模块随着申请量的变动,须要对 access 实例和 engine 实例进行扩缩容操作,因而对 access 和 engine 实例会进行频繁地扩缩容操作。
水滴数据处理模块架构图:

物理机部署状况

  1. 工作创立:新减少工作状况时,须要申请新工作对应的北极星名称服务地址,将工作的 engine 过程部署在不同的物理机上启动,并手动将 engine 实例与北极星名称服务绑定,须要人工手动进行过程的启动和治理、增加和批改对应的负载平衡服务,治理简单,运维老本高

  2. 工作降级:工作程序降级过程,须要将工作对应的所有 engine 过程程序进行更新,并重启所有相干的 engine 过程

  3. 工作扩缩容:工作进行扩容过程,须要进行在物理机上部署并启动新的 engine 过程,再将新过程实例退出到对应的北极星名称服务中;工作进行缩容过程,须要将缩容过程先从北极星名称服务中剔除,再对相应 engine 过程进行暂停。服务扩缩容流程相似于服务降级过程。

TKE 平台部署状况

  1. 工作创立:新减少工作状况时,须要申请新工作对应的北极星名称服务地址,再在 TKE 平台进行工作对应 engine 利用实例创立

  2. 工作降级:工作程序降级过程,更新工作对应 engine 实例镜像版本即可

  3. 工作扩缩容:工作进行扩缩容过程,在 TKE 平台页面通过设置 HPA(Horizontal Pod Autoscaler) 主动调利用实例的扩缩容

云原生成熟度晋升教训

1. 对不同的业务类型进行服务划分,CPU 密集型服务创立核数大的 Pod 服务,IO 密集型服务 (目前次要应答刹时流量业务状况,网络缓冲区易成为瓶颈) 创立核数偏小的 Pod 服务,如 CPU 密集型业务单 Pod 取 4 核,而刹时突发流量服务单 Pod 取 0.25 核或 0.5 核。

2. 容器服务采纳 HPA 机制,业务接入时依据业务申请量预估所需的 CPU 和内存资源,由预估的 CPU 和内存资源设置 Pod 服务的 Request 值,通常放弃 Request 值为 Limit 值的 50% 左右。

自研上云成果

水滴平台在进行迁徙上云过程中,自研平台迁徙到 TKE 云上后带来了不少的效率晋升。
上云后带来的效率晋升次要有以下方面:

  1. 上云资源申请流程更加简略疾速,上云前机器申领搬迁、虚构 IP 申请、机器转移等流程周期一周左右,上云后资源申请周期缩短为小时级别
  2. 机器资源利用率进步 67%,上云前 CPU 利用率约 36%,上云后 CPU 利用率 59.9%.
  3. 应答突发流量无需人工进行扩缩容操作,通过 HPA 机制可实现扩缩容,从人工扩缩容周期15 分钟左右缩短到一两分钟。
  4. 业务策略部署上线周期可由 2 小时缩短至 10 分钟。

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

退出移动版