极光笔记DSP高并发应用实践

作者:极光高级工程师——陈策

导言

广告业务简介

SSP:供应方平台,互联网有大量拥有用户流量的媒体网站和APP,他们可以通过发布广告进行流量变现。而SSP就是可以实现流量变现的媒体服务平台,媒体可以通过它进行广告资源的管理,分配,定价,筛选。

DSP:需求放平台,互联网有大量的广告主需要寻找优质的媒体和用户来推广自己的产品,并产生收益。而DSP就是为广告主提供服务的平台,他们可以在平台上设置自己的广告、目标受众、地域、出价等。

ADX:广告交易平台,连接买方和卖方,ADX以拍卖的方式为各个DSP提供SSP委托管理的广告位和流量并最终决定竞得者。

广告核心竞价流程

用户A访问媒体

媒体向ADX请求广告展示给用户A

ADX向各个DSP发起竞价请求,询问是否需要竞价并传输用户A的设备信息、广告位信息等。

DSP的竞价引擎接收到请求后,将用户数据和投放需求进行匹配,决定是否参与出价并作出响应,返回广告物料。这个过程必须在ms内返回,否则会被ADX自动判定为放弃此次竞价。

ADX接收到所有DSP的出价响应后由竞价决策服务进行竞拍,价高着得。并返回广告物料给APP。

用户A看到APP的广告,当前竞价流程结束。

下面主要介绍极光DSP系统实战。

DSP业务系统架构

DSP的高可用网络架构

内部服务使用kubernetes集群进行管理,可做到如下几点:

1.水平扩缩容

通过k8s管理平台对应用进行扩容和缩容。

2.故障转移

当node节点关机或挂掉后,node节点上的服务会自动转移到另一个node节点上,这个过程所有服务不中断。

3.服务发现和负载均衡

当发生扩缩容时,无需配置自动实现服务发现和负载均衡。

4.资源调度

当node节点上的cpu、内存不够用的时候,可以扩充node节点,新建的pod就会被kube-schedule调度到新扩充的node节点上。

DSP高性能技术框架及服务治理

极光DSP的技术框架选用了vert.x-web,vert.x-grpc并通过集成springcloud微服务组件对服务进行治理。

Vert.x

vert.x是基于事件模型的异步非阻塞框架,具有异步编程和高并发的特性,能够充分利用多核CPU的优势,支持海量连接。工作原理如下:

Vert.x中主要有两种线程:EventLoop线程和Worker线程。其中,EventLoop线程结合了Netty的EventLoop,用于处理事件。每一个EventLoop都与唯一的线程相绑定,这个线程就叫EventLoop线程。EventLoop线程不能被阻塞,否则事件将无法被处理,它是典型的异步步编程模型。为了充分利用多核CPU的性能,Vert.x中提供了一组EventLoop线程。每个EventLoop线程都可以处理事件。为了保证线程安全,防止资源争用,Vert.x保证了某一个Handler总是被同一个EventLoop线程执行,这样不仅可以保证线程安全,而且还可以在底层对锁进行优化提升性能。所以,只要开发者遵循Vert.x的线程模型,开发者就不需要再担心线程安全的问题,这是非常方便的。

Verticle是vert.x的部署单元,网络请求通过acceptor线程将请求放到事件队列中,然后verticle进行处理。verticle可以被deploy多个实例,每个verticle从属于一个eventloop线程,无论有多少请求处理,都只会被这个eventloop线程来处理。Acceptor线程也会轮询将事件发放给不通的verticle实例。

一个应用程序通常是由在同一个Vert.x实例中同时运行的许多Verticle实例组合而成。不同的Verticle实例通过向EventBus上发送消息来相互通信。

总的来说,它以非阻塞IO的思想来实现高性能,非阻塞IO的实现,基于EventLoopVertical和WorkerVertical的分离,在Vert.x中,EventLoop用于接收,并将短业务操作交由其内部的Vertical来处理,该模块是非阻塞的,这样可以保证请求的处理效率;阻塞任务通过Vert.x的事件机制脱离当前线程,转移到WorkerVertical中执行,并将执行结果返回给EventLoopVertical。这一过程完成的核心是EventBus,EventBus中注册了所有的事件,通过事件匹配完成事件转移和结果返回,从而将整个流程衔接起来。相比传统的阻塞模型,相同的资源配置下,它能处理更高的并发。

当前极光实时竞价服务一个实例配置6c,12G。Verticle类型使用standardverticle,服务启动发布12个verticle实例,内部使用future进行异步编程,对于IO阻塞操作(如redis,rpc)采用异步回调的同时设置超时时间。经测试,响应时间在ms内,一个实例最高能处理到左右的qps。

Grpc

特点:

1.Grpc基于


转载请注明:http://www.guyukameng.com/jspt/jspt/15700.html