自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 全图化在线系统设计

Graph是一个Serverless全图化业务托管平台。Graph应用全图化开发模型,提供丰富的运行时组件,支持CI/CD全生命周期项目管理,具备主动式资源优化能力。

2023-10-09 22:11:41 268

原创 智能算力方向分析

明确算力决策要解决的问题,定义算力决策的目标是一切讨论的基础。

2023-10-09 21:08:00 302

原创 工程架构设计指导原则

工程架构设计指导原则

2022-11-17 19:11:34 551 1

原创 经典论文研读:《F1:A Distributed SQL Database That Scales》

论文研读

2022-10-07 14:06:12 1143 1

原创 关于分布式架构的底层思考

在讨论架构时,首先要说明为什么会出现架构。我们说的架构更确切的指的是“分布式架构”,即以RPC为基础构建的服务独立部署的系统架构。

2022-10-07 12:39:04 1102

原创 广告召回技术标准化进程

广告召回本质上是一种数据处理过程,可以使用常见的数据处理模型来分析其特性。

2022-10-07 12:37:09 1245

原创 广告业务机器资源成本优化思路及建议

广告业务机器资源成本优化思路及建议

2022-06-19 15:06:28 980

原创 经典论文研读:《Bigtable: A Distributed Storage System for Structured Data》

一 概述BigTable是以大神Jeffrey Dean为首的Google团队在2006年公开的分布式存储系统,是Google“三驾马车”论文中(GFS、MapReduce、BigTable)中最后公开的。在BigTable论文中,Google构思、设计并实现了一套支持结构化数据存储的超大容量分布式存储系统。BigTable中关于数据模型、底层存储技术和架构模型的设计思路直到今日仍被奉为经典,下面我们就按照这三个维度来看下BigTable的设计细节。二 数据模型BigTable本质上是一个为稀疏结构化

2021-11-06 23:27:50 2058

原创 关于商业化广告与自然推荐之间的关系思考

近期在与PM共建的过程中听到了PM同学对业务现状的一些描述,很有感触。PM同学说:“外家中只有20%的商家能活过半年”、“有些广告主把投广告当作给平台交保护费”。这些描述引发了我对广告业务本质、广告与推荐之间的关系的一些思考。为此,我建立了一个博弈论模型,做出了如下几个基本假设(不一定是真实情况,只是为了进行理论定性分析):(1)商家无限竞争:各个商家之间进行“无限竞争”,即在达到某种平衡态时,一定会有一方出于自身利益打破平衡(2)平台完全逐利:广告业务平台是完全逐利的,即一切以提高广告收入为目的

2021-10-28 14:36:16 240

原创 大数据批流处理方案分析

一 Lambda架构与Kappa架构本章节内容大量摘自:https://docherish.com/post/da-shu-ju-chang-yong-de-jia-gou-lambda-he-kappa/1.1 Lambda架构Lambda架构基本介绍:Lambda架构最早是由storm的创始人,Nathan Marz进行提出并描述了我们目前所了解的lambda架构。Lambda架构先入为主,已经适用在了绝大部分的公司里面了。绝大部分公司从刚开始发展大数据技术为主,到现在都是采用的La

2021-10-28 14:20:34 747

原创 存储检索技术发展历史

1966年geoHash出现1970年B树Organization and Maintenance of Large Ordered Indices 一文中提出的[1]。它采用多叉树结构,降低了索引结构的深度,避免传统二叉树结构中绝大部分的随机访问操作,从而有效减少了磁盘磁头的寻道次数,降低了外存访问延迟对性能的影响。它保证树节点中键值对的有序性,从而控制search/insert/delete/update操作的时间复杂度在O(log(n))的范围内布隆过滤器布隆过滤器(Bloom Fi

2021-10-28 14:11:28 253

原创 广告检索内核设计

一 设计思路广告检索具有数据量较小、数据结构复杂、检索性能要求高、更新实时性要求高等特点。这要求设计者在进行内核整体设计时,需要做出倾向性的考量。本文介绍的检索内核在设计思路上的主要前提如下:纯内存存储对比于文档搜索动辄TB量级的数据量来说,广告场景的数据量一般在10GB至100GB量级。当前业界主流的资源划分方式均可以提供10G至100GB大小的内存,因此为了追求高性能,广告索引大都采用纯内存存储方案。本文设计的内核使用Linux提供的mmap进行文件映射,对索引文件进行类似于内存的直接操作,

2021-10-28 14:02:56 959

原创 基于tensorflow的服务调度框架

一 开发&运行框架二 开发示例相关TensorFlow官方文档C++自定义算子使用方法:https://www.tensorflow.org/guide/create_op?hl=zh-cn保存TensorFlow图文件:https://www.tensorflow.org/api_docs/python/tf/Graph2.1 组图脚本import osimport sysimport tensorflow as tf​CURRENTPATH = os.path.split(

2021-01-20 12:23:12 548

原创 高性能kv存储设计 之 cacheline对齐

最近在设计高读性能的kv存储,为了尽可能保证cache的命中,应尽可能将"同时读取"的数据放到一起,以此来保证数据大概率同时出现在高速cache中。当前大部分计算机的cacheline size为64字节对齐,即当读取地址0x403140(64的整数倍 + 0)的时候,会将0x403140 ~ 0x40317F(64的整数倍 + 63)中的内容都加载进缓存。以此为参考依据来设计数据结构的大小可以加强数据访问速率,在极端场景下获得较大收益。测试程序#include <stdio.h>#inc

2020-11-24 20:00:10 977

原创 智能算力思考

一 背景在广告业务体量不断扩大,但机器资源有限的大前提下,业务优化的思路从“优化总收益”向“优化资源收益效率”转变,如何将CPU/GPU的每一个运转周期发挥出其最大价值是一个新的课题。在这样的大背景下,智能算力分配的概念应运而生。从工程的角度出发,智能算力主要解决两个问题:1、优质流量分配算力过少,运行rt不满足系统rt强约束,导致超时,浪费算力且没有收益2、流量总体规模大于系统承载能力时,没...

2020-03-22 22:00:33 950

原创 Lucene内核索引实现方式简析

Lucene是apache软件基金会的一个子项目,是一个开源的的全文检索引擎工具包,是现在检索技术领域非常优秀的开源项目。本文针对Lucene倒排索引技术的特点进行了初步解析与分享。1 索引优化Lucene的倒排索引技术实现比关系型数据库要快很多,尤其是对多条件的过滤支持的非常好。传统关系型数据库采用B+树的方式存储索引,其主要目的是为了提高数据的更新效率。但当实际业务场景并不需要快速的更新...

2019-08-03 19:20:45 369

原创 技术选型背后的思考

笔者在工作经历中曾多次遇到关于技术选型的问题,而每一次的技术选型都无一例外的纠结、反复。经常出现的现象是,在项目推进的过程中多次反复修改技术选型,客观上造成了效率的降低,而当最终选定某一个选型时,又觉得这个结果似乎是显而易见的。为了避免反复纠结造成效率降低,笔者觉得有必要总结下选型中常见的思考方式,方便以后参考。每一次技术选型都是在特定的需求场景下,结合各种各样的主观、客观因素,最初一个最优的选择...

2019-07-27 21:53:20 1516

原创 超大规模检索中的索引设计

一 问题背景1.1 业务背景精准广告场景中,人群定向的常用方法是:根据各种不同的规则,将每一个用户(User)打上丰富的标签。与此同时,广告主(Member)在根据规则圈选投放人群时,系统也会将广告(Ad)打上各种的标签。当一个Ad和一个User被打上同一个标签(Tag)时,就表示该Ad圈定了这个User,即该Ad会参与对该User的展现竞价。本次优化的难点出现在一个特定业务场景下,我们需...

2019-07-27 21:52:34 603

原创 致命的巧合:一次结算异常排查总结

一 异常现象.1、2018-04-02 16:00左右,实验田的两台机器手动部署基线、拉取索引、追消息并接流。 2、第二天接到大量广告主投诉,投诉内容是广告的结算价格远大于自己的出价 3、通过pv日志查询,发现存在大量pv的orgprice值(广告主出价)被错误地写成score值(广告海选质量分),而score在数值上通常是orgprice的几百倍 4、所有出问题的流量(后简称异常流量)...

2019-07-27 20:15:36 118 1

原创 Blink学习(四):数据流

DataStream是Blink对数据流进行的的抽象。每个数据流都需要指定一个数据源,并可以调用接口对数据流进行命名、配置并行度配置堆栈内存等。 DataStream<TTLogBlock> dataStream = env .addSource(p4p_pv2_source) .name("p4p_pv2_source...

2019-07-23 00:06:44 1139

原创 Blink学习(三):定义运行环境

1 StreamExecutionEnvironmentStreamExecutionEnvironment是对流处理引擎运行环境的抽象,可以通过调用它的接口来对运行环境进行配置常用配置如下:final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.enab...

2019-07-21 00:31:11 773

原创 Blink学习(二):代码运行框架

1 运算节点通过这张图我们可以看到,在一个 DAG 图中,不能被 chain 在一起的 operator 会被分隔到不同 的 Task 中,也就是说,Task 是 Flink 中资源调度的最小单位。2 运行框架Blink 运行时包括两类进程:JobManager(又称为 JobMaster):协调 Task 的分布式执行,包括调度 Task、协调创 checkpoint 以及当 job...

2019-07-21 00:30:02 433

原创 Blink学习(一):运行状态管理

Blink是一个非常优秀的流处理任务开发框架,相对于之前的jstorm开发框架,它最显著的特点是具备非常完备的状态管理体系,解决了流处理任务中让人非常头疼的“保证EXACTLY ONCE的错误断点恢复”问题。下面着重梳理下blink是如何进行状态管理的。1 Checkpoint Barrier在处理数据流时,定期插入checkpoint barrier,当一个计算节点收到checkpoin...

2019-07-21 00:28:01 1989

原创 artis索引体系梳理与分析

artis索引体系梳理与分析一 artis技术体系梳理artis目前主要使用场景是内存量级的存储,即数据文件可以完全存放在内存当中。1.1 内核1、支持关联表artis最大的特点是支持关联表的数据结构。其中每个表在逻辑和存储上是完全独立的,可以独立建立倒排。同时内核天然支持表间关联检索。2、mmap加载 + tmpfs加速artis采用mmap的方式打开索引文件。由于mmap加载的数据...

2019-06-13 22:50:38 473

原创 HA3搜索引擎梳理与分析

HA3搜索引擎梳理与分析一、HA3技术体系梳理HA3搜索引擎技术体系图1.1 内核网络访问存储:通过网络访问盘古系统(集中式存储)实现存储与计算分离,支持独立扩展,降低运维成本,提高稳定性热数据cache:支持使用mmap(lock/非lock方式)、blockcache对数据进行加载,实现对热数据的memcache自适应bitmap:支持根据检索热度自动将部分token转换为b...

2019-06-13 22:48:34 4433

原创 精准广告预算分桶背景分析

一 背景概述在广告主预算的强约束条件下追求整体收益的最大化是广告业务场景最独特的特点之一,精准广告算法的迭代无一不建立在这个约束条件之下。随着业务发展,部分算法策略开始将预算的影响因素也纳入到算法模型之中。预算的设定是广告主行为,日常投放产生的消耗必须严格控制在设定的预算金额内,这给算法实验带来了很大的困扰。算法实验的最常用方法是对通过控制变量后的策略进行AB Test实验,即在其他条件一致的...

2019-01-09 13:03:06 2249 2

原创 pageblock_pfn_to_page性能热点问题排查

一 问题背景在一次广告检索内核的迁移过程中,偶然发现迁移新内核后的检索服务在一定条件下会触发rt毛刺问题。rt毛刺现象出现的条件如下,任何一条均可复现:使用超高压力将服务压至崩溃状态,然后将压力恢复正常压力状态,毛刺现象复现使用正常压力长时间对服务加压,持续30分钟左右之后,毛刺现象复现通过性能埋点监控发现,在rt毛刺点,rt的增长主要集中在多线程并行使用内存池申请内存的代码部分;通过p...

2018-12-17 14:25:37 889 1

原创 精准广告业务中的关键问题分析

1 召回阶段度量的选择广告和推荐最大的区别就在于广告引入了广告主出价的维度,这让数据具有很强的实时性,给工程技术带来了很大的挑战。在全库检索的定向召回阶段,是否要将广告doc的出价也考虑进去是一个关键问题。若不考虑出价,本质上召回阶段是按照相关性召回(也可以简单地理解为ctr),若考虑price则对应的是按照ecpm进行召回。特别的,在cpm广告场景中ecpm等于出价。 在计算广告中,平台起...

2018-04-26 16:00:25 1322

原创 精准广告matching方案调研与分析

一 背景精准广告matching阶段查全率是影响业务效果的重要因素,matching结果作为广告rank的前置环节,是rank效果的天花板。随着业务发展,算法对matching环节查全率的要求越来越高,传统的“user-&gt;tag、tag-&gt;ad”两段式检索已经限制了业务的发展,我们的技术体系面临新的挑战——全库matching。 全库matching面临的主要挑战来自于计算量的大...

2018-04-13 14:53:29 842

原创 全量数据接入——设计方案

全量数据接入的过程本质上是数据集群件复杂的事件同步与时间相应的过程,涉及到触发、反馈、反馈状态检查、分批等。因此,需要有一个事件控制组件作为基础。 一、事件控制组件 1.1 使用zk同步数据 zk路径规划: ${zk_base}/${event_group}/${date}/${event_name}/${event_version}.info 说明:${event_version}.i...

2018-03-31 01:18:44 6008

原创 广告系统索引应用HugePage调研

一 背景在广告系统中,在投广告的信息作为核心数据,具有改动频繁、实时性要求高的特点。为了设计并实现一个满足业务需求的广告系统,目前业界比较常见的解决方案是在广告检索集群每一台服务器的内存中存放索引数据,并通过mmap技术进行持久化(也可以直接使用tmpfs,不进行磁盘级别的持久化)。 众所周知,为了方便内存管理,提高内存使用效率,操作系统对内存进行了分段分页处理,其中分段管理的粒度较粗,分页...

2018-03-27 20:45:21 419 1

原创 计算广告实时结算超投问题解决方案的分析

计算广告实时结算超投问题解决方案的分析1、超投问题应对方案大流量高并发的实时结算系统会有一个令人十分头疼的问题,就是超投。在广告系统中,结算环节会实时计算各个广告主账户内的余额,如余额为0,既要立刻停止投放。所谓超投,就是指在结算系统发出停止投放的指令到系统实际将广告下线的这段时间内,投放系统错误的将下线广告投放出去。这部分被错误投放的广告是不能向广告主收钱的,也就造成了平台的损失。由

2018-01-16 14:53:01 2943

原创 C++左移操作的陷阱

发现的过程十分曲折,在这里不做赘述。为了说明问题直接上代码。#include int main() { int off = 3; int64_t a = (1 << off); off = 35; int64_t b = (1 << off); if (a == b) { std::cout "There is a bug.\n"; } return 0;

2018-01-11 21:41:06 1229

原创 广告检索一致率排查过程

事件流程:1、7月11日上午11:15,通过freedom发布dump-ecpm、sn-ecpm、emerge到smoke环境,由于本次dump-ecpm修改了索引结构,因此通过freedom发布sn-ecpm时应用无法启动,原因是索引结构不兼容updated无法正确追消息,也就无法自动拉起master进程。此时只能等待dump模块build索引完成后切换索引。 2、dump在build过程

2017-07-14 19:03:06 203

原创 [问题解析] 记一次__do_global_ctors_aux导致的coredump

一次__do_global_ctors_aux导致的coredump

2017-03-10 15:19:08 1661 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除