淘寶客?CPS技術是怎麼實現的?

  • 2020 年 11 月 17 日
  • 筆記

前言

微信搜【Java3y】關注這個有夢想的男人,點贊關注是對我最大的支援!

文本已收錄至我的GitHub//github.com/ZhongFuCheng3y/3y,有300多篇原創文章,最近在連載面試和項目系列!

今天來給大家科普下「分佣」是大多數怎麼做的,這篇文章非常適合新手觀看,應該可以學到不少的「常識」。

前幾天可以發現三歪推了幾天的伺服器,一方面是的確便宜(75塊一年去哪裡找呢),一方面三歪會從中抽取點伺服器的傭金(賺點吃飯錢💰 不香嗎)。

這也沒啥好隱瞞的,好的東西分享給大家,你買到了實惠的東西,我再從中收取部分的利益,達到了雙贏。

根據訂單成交額獲取一定的受益:從廣告專業的角度叫做CPS

回到現實生活中,比如你買了車,銷售會有提成吧?比如你買了房,銷售也會有提成吧?

如果想對廣告有個基本的了解,可以先看看我上一篇的廣告科普文,裡邊也提到了CPS的概念:廣告基礎入門

那我們要不來猜一下這個CPS(分佣/返現)的功能是怎麼實現的?如果猜錯了,大佬出來打我臉,那那那那….就算了唄。

不多BB,我們開始吧。

Cost Per Sale

我要在線上賣某件商品,賣出去後我得能拿到提成,這功能必然有一套完整的系統在背後支撐著。

但不管怎麼樣,我買東西也好,推廣賣東西也好,我肯定是這件商品所歸屬的平台用戶

所以說,我肯定有我需要推廣雲伺服器的帳號。

畫外音:無論是買家還是推廣者,在平台的眼裡我們都是用戶。可能推廣者就多了個標記位來標識這個用戶是推廣人,賣了伺服器需要給他返現。

成為了推廣者之後,那麼三歪就可以進行推廣了。所需要的東西實際不多,一個鏈接足以:

//www.aliyun.com/1111/pintuan-share?ptCode=MTk2NjQwOTYyMDkyNzI4MXx8MTE0fDE%3D&userCode=pfn5xpli

鏈接由兩部分組成:

如果你打開鏈接之後,可以發現的是:我購買伺服器只要「核心資訊://www.aliyun.com/1111/pintuan-share」就足夠了。

那參數有什麼用呢?關聯用戶

三歪在推廣賣伺服器,敖丙在推廣賣伺服器,你們也在推廣賣伺服器,那平台是怎麼知道三歪賣了多少台呢?那不可能三歪說賣了10台,平台就給三歪10台的伺服器傭金吧?總得有個準確的計算方法的吧。

這裡靠的就是鏈接後帶的參數。從我「專業」的角度來看,鏈接後帶有兩個參數,分別是ptCodeuserCode。嗯,一看就是ptCode綁定了拼團的資訊,userCode判定的用戶的資訊(這裡的用戶,肯定是指三歪的啦)

再從我「專業」的角度來看參數值:MTk2NjQwOTYyMDkyNzI4MXx8MTE0fDE%3Dpfn5xpli 。嗯,看不懂,跳過。(能看懂就有鬼了,我又不是對應的開發)

OK,我們現在知道鏈接是帶了「私貨」的,那回到最重要的問題上:平台是怎麼識別到這個用戶是從三歪那裡來的呢?鏈接是有參數,那具體是怎麼做的呢

Cookie

第一我們能想到的可能是Cookie,只要在用戶點擊這個鏈接的時候,我們給這個用戶頒發Cookie,那該用戶對該域名的所有交互,都會帶上Cookie (包括下單)。

那麼,只要下單的時候,交易的同學把Cookie的資訊寫到訂單消息報上,那廣告的同學就能通過訂單消息報的內容追蹤到該下單用戶是從哪個推廣者所帶來的。

畫外音:較大的公司,交易和廣告是分開的。廣告需要監聽交易的消息報來完成自己的業務邏輯

Trace

除了Cookie的方式來追蹤,還有什麼辦法嗎?有的,也可以使用鏈路追蹤的方式。

所謂的鏈路追蹤,從本質上來講,就是用戶點擊鏈接的時候,把點擊用戶以及鏈接的參數(推廣者)存儲起來。

要知道的是,你在平台上的每一次點擊都會被記錄下來(點擊pv就是這麼來的)

點擊的數據,一般會產生一個點擊的消息報topic,誰要點擊的數據就誰去消費這個topic就好了。

每個業務(廣告、商品、演算法等等)都可以消費點擊消息報,得到的都是平台所有的點擊,然後會過濾掉不需要的點擊。

比如CPS業務只會取鏈接帶有userCode的點擊,然後對這些「想要」的點擊做業務的規則。常見的就是判斷點擊鏈接的用戶是否為「新用戶」

有好多同學可能在買伺服器的時候發現只有新用戶才會便宜,老用戶都不會有特別大的優惠。於是都會調侃說一句:老用戶不如狗。

道理也很簡單:如果你已經是老用戶了,那要不要續費,要不要繼續購買是從商品本身的性價比來考量的(該買的還是會買,不買就自然會流失)。而如果你是新用戶,可能你之前甚至沒聽過這個平台,可以通過足夠多的優惠下單來讓你成為平台的用戶(把新客留在平台,可能會創造出更多的價值,這是平台願意去付出的成本)

當然了,大多數平台也會持續保證自己的競爭力來儘可能留住所有的用戶

從用戶聽過你的平台,到用戶下載你的APP,再到用戶註冊APP,最後到用戶從APP購買商品,這是一個漏斗。從廣告的角度而言,每個環節都會對應一個市場價,現在以CPS的方式可以讓這個流程一整套直接走完,所以平台會以大的優惠力度給予新人,希望能得到轉化,平台得到新的血液。

所以廣告側會只會篩選出點擊事件里自己需要的部分,經過一系列的規則(可能是新用戶,可能是各種的校驗),然後會將資訊單獨存儲到某個地方(可以是HBase,可以是DB,也可以是快取,就看你怎麼考量了)。

一般來說,HBase或帶過期時間的存儲還是比較方便好用的,因為從業務上都會有一個關聯時間(有可能是30天,有可能是60天,也有可能是1天),存儲到HBase相對應的列簇,可以設置過期時間,就不用手動去刪除了。

等到用戶真正下單購買的時候,廣告側還是監聽交易的消息報,只不過這一次是去存儲的地方找相應的記錄,只要找到了,就把這個訂單歸給推廣者。

QA

Q:有的同學就想問了:如果三歪你是推廣者,我也是推廣者,現在有個叫「敖丙」的進來都點了我們倆的鏈接,他最後購買了,那那這算是誰推廣的?

這具體看平台的規則

有的平台會以最後一次來判定這個訂單屬於哪個推廣者。比如說,敖丙先點了你的鏈接,沒買,然後點了我的鏈接,買了。最後敖丙下單的時候,發現我是最後一次點的,所以訂單算我的。

也有的平台會有「保護期」的概念。比如說,敖丙點了我的鏈接,然後敖丙已經跟我關聯起來了,他再點你的鏈接,由於保護期範圍內生效,所以他不會跟你關聯。所以,敖丙在這段時間內下單,都是算我的。

補充

不同的平台會有不同的規則,最後CPS的業務邏輯都會變得相對複雜。

上面我所講到的是一個最最最基本的CPS流程,主要由鏈接開始(CPS必須要帶關鍵的參數)。主要的實現,要麼就把關聯的資訊存到用戶(Cookie),要麼就是把關聯資訊在用戶點擊的時候就存儲(關鍵位置追蹤)。

實際上需要考慮的問題也會更多,因為CPS 還是跟錢💰相關的,期間不能出錯。

就比如說:」廣告側消費訂單消息報的時候,突然掛了,怎麼辦?「

是不是需要做at least one + 冪等 來讓訂單的數據不會丟以及不會重複….

想不想了解更多?來個點贊和關注轉發唄,後面會繼續分享的喲

涵蓋Java後端所有知識點的開源項目,已有10K+ star!內含1000+頁原創電子書!!!

PDF文檔的內容均為手打,有任何的不懂都可以直接來問我