Kylin 在 eBay 的成長曆程與實踐

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在演講之前,我想首先代表 eBay 祝賀 Apache Kylin 成立 5 週年。Apache Kylin 是出色的 OLAP 產品,希望 Apache Kylin 社區在未來能夠帶來更多了不起的功能,並對行業產生更大的影響。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"今天的議程包括:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"介紹 eBay 的開源文化"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Apache Kylin 在 eBay 中的發展歷程"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Kylin 在 eBay 中的應用"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eBay 未來的計劃"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"01 eBay 的開源文化"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eBay 是一家擁有 30 年曆史的電子商務公司,爲全球的買賣雙方提供線上市場。我們的業務發展速度極快,通過進行巨大的技術轉型和發展,後端技術團隊在促進 eBay 業務實現方面發揮着非常重要的作用。在過去的十年中,核心技術團隊推動着開源文化成爲了我們的 DNA,給我們帶來了巨大的改變和豐碩的成果。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/bd\/d6\/bd2617aeeca5206862c3e50de0fcb7d6.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eBay 鼓勵開源內部項目。正如大家在 eBay 公共 GitHub 上看到的那樣,eBay 有 100 多個開源項目,並且會越來越多。我們認爲,他們值得與社區分享,使更多的用戶從中受益。eBay 的一些重要產品,例如 Kylin,Eagle,Griffin等,有着更大的社區影響力,目前他們都已經貢獻到了 Apache 軟件基金會。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除了鼓勵內部項目開源之外,eBay 還參與並使用了大量外部開源產品來重建我們的基礎架構和平臺。我們利用 Kubernetes 構建了我們的第三代雲平臺。我們還使用了 Apache Hadoop 和 Spark 來支持大量數據處理和即席查詢。我們也利用了 Kafka 和 Flink 來構建託管的實時數據平臺。在使用這些產品的同時,我們也爲它們做出了貢獻。在 eBay 這樣的大型環境中,我們檢測出了許多問題,貢獻了數千項對原有項目的改進,並以此回饋社區。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源文化就是我們的 DNA,我們也非常高興我們的技術能與所有行業中領先的技術相結合。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"02 Kylin 在 eBay 的發展歷程"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來讓我談談 Kylin 在 eBay 上的發展歷程。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/53\/75\/53458b0da49779cd49b30a367c928875.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eBay 和 Apache Kylin 有着悠久的歷史與關係。2013 年,爲了解決在 Hadoop 大型數據集上的 OLAP 查詢性能需求, Kylin 項目在 eBay CCOE 中啓動。它基於多維數據集技術構建,可以在亞秒級內響應查詢。經過一年的發展,Kylin 成爲 Apache 孵化器項目,並最終在 2015 年 11 月畢業成爲 Apache 頂級項目。這是 eBay 團隊的一項重大創新,並且在今天給更多的社區用戶帶來了益處。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"Cube Planner"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eBay 一直與 Apache Kylin 社區緊密合作,持續地貢獻了有關功能改進以及錯誤修復的相關代碼。在 Kylin 2.3.0 版本中的 Cube Planner 就是來自 eBay 貢獻的一項主要功能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"OLAP 解決方案權衡了在線查詢速度和離線 Cube 構建成本,即構建 Cube 的計算資源,以及用於保存 Cube 數據的存儲資源。資源效率是 OLAP 引擎最重要的能力。爲了達到這個目的,選擇性地只預構建那些最有價值的 Cube 是至關重要的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Kylin 擁有的 aggregation group 聚合組的功能可以減少 cuboid 的數量。藉助 Cube Planner 能使 Apache Kylin 的資源利用率更高。它可以智能地構建 partial cube,以最大程度地降低構建 Cube 的成本,同時最大程度地爲最終用戶查詢提供符合預期的服務,在運行時從查詢中學習其模式和規律,並相應地動態地推薦 cuboids。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/67\/80\/6732e8ed68744ee3c7d5yy55c2fa2c80.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在圖中大家可以看到,在第 1 階段中,Cube Planner 可以在構建 Cube 之前根據估計的 cuboid 大小來列出建議構建的 cuboid,在第 2 階段中,可以根據查詢統計信息爲現有的 Cube 對 cuboid 列表作出建議。Cube 需要在線一段時間去獲得足夠的查詢命中率,然後 Cube Planner 才能足夠智能並且給出建議。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此功能在 2.5.0 中默認啓用,極多維度的 Cube 構建就可以從中受益。更多關於 Cuboid 剪枝優化和 Cube Planner 的介紹👉 "},{"type":"link","attrs":{"href":"http:\/\/mp.weixin.qq.com\/s?__biz=MzAwODE3ODU5MA==&mid=2653081972&idx=1&sn=8cfda39ab42322d53c7cb7259c1aeede&chksm=80a4af85b7d32693627fe71a11078e4f915ac7679a2710a48a5f484f65ae8a78028022c79294&scene=21#wechat_redirect","title":"","type":null},"content":[{"type":"text","text":"Kylin 新手必看:Cube 越用越好,存儲越用越少"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"實時 OLAP"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Kylin 還在 Kylin 3.0 中提供了實時 OLAP 功能。有了這個功能,我們可以實時在生成數據後進行決策。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/82\/a3\/829d0e9ff4bec37b804a100e17b5b0a3.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大家可以看到,在 Kylin 架構中,爲了實現實時功能,我們添加了藍色方框中的兩個組件。一個是 Streaming coordinator,另一個是 Streaming receiver。Streaming coordinator 負責管理接收器的操作。Streaming receiver 負責從流式數據源獲取數據並回答實時數據查詢。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"實時段數據首先存儲在內存中,然後以列式存儲的片段文件形式刷新到接收器的本地磁盤,並且當磁盤上的片段過多時,它們將被自動合併,最後移交到完整的 Cube 構建階段。無論 cube segment 的數據在哪裏,查詢都可以隨時被回答。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們擴展了 Query Engine 查詢引擎和 Build Engine 構建引擎,以支持實時數據查詢和 Cube 構建。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在這裏概述幾個要點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"數據準備只是毫秒級延遲"},{"type":"text","text":" :一旦 Kylin Streaming Receiver 接收了流數據,Cube 的預計算就會在內存中進行,那時實時 Cube 已經能夠回答查詢請求;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"支持 Lambda 架構"},{"type":"text","text":" :實時數據通常不可靠,這可能是由多種原因引起的,例如,上游處理系統存在錯誤,或者數據一段時間後需要更改等。我們支持 Lambda 架構,從批處理源(例如 Hive)刷新 Cube 歷史記錄;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"更少的 MR 作業和 HBase 表"},{"type":"text","text":" :在 Kylin 1.6 中,社區提供了一種流解決方案,該解決方案允許用戶使用 MR 作業(如幾分鐘內的微批次)來攝入 Kafka 數據。它將導致系統中存在大量的 Hadoop 作業和小的 HBase 表,增加 Hadoop 系統的負載和發生潛在問題的可能性。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此功能已在 eBay 中使用,我認爲它對於實時場景應該非常有吸引力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"03 Kylin 在 eBay 中的應用"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"目前在 eBay 中,Kylin 平臺是爲決策分析用戶案例提供支持的主要服務。"},{"type":"text","text":" 我們在多個數據中心設置 Kylin 服務,以與 Hadoop 基礎架構和業務數據分佈保持一致。數據能夠以精心設計的安全方式從 Hadoop 和 Rheos 中提取。我們擁有專用的 HBase 集羣來穩定服務器的查詢延遲。此外,作爲平臺團隊,我們提供 24 * 7 緊急事件響應和技術支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/54\/66\/54c08c15c2e943bd56101ea76a796d66.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分享一些重點如下:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們在 40 個項目中分配了 300 多個 Cube。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最大的 Cube 在源表中具有 1.18 萬億個原始數據,最終的 Cube 大小爲 96.2 TB。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"平均構建時間爲 16 s\/MB 源數據,平均 Cube 膨脹率爲 0.46。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們每天處理大約 80 萬條查詢,平均延遲時間約爲 0.68 秒。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/7f\/c3\/7fbb3ea93fce224282c31118f5a405c3.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eBay 中有一些典型的使用模式。 "},{"type":"text","marks":[{"type":"strong"}],"text":"第一種模式即最主要的模式,是爲決策提供支撐"},{"type":"text","text":" 。通常,這些用例具有精心設計的業務模型,例如星型模式或雪花模式,它具有清晰的過濾維度和按維度分組以及目標度量。這種模型需要龐大的數據集作爲分析基礎,以便對每週,每月,甚至每年的趨勢進行比較。同時,企業所有者還需要深入分析和彙總分析的功能,並期望他們的決策案例能得到快速響應。這裏是一個用例。此案例爲庫存計劃員和採購員提供了類別表現的概述。他們可以進行站點過濾和類別深入分析以及彙總分析,以獲取深刻的見解。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/13\/fd\/13683efc1c9782ae73f29c9abb6635fd.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第二種模式是爲分析師提供 eBay 自助服務分析指導,以探索更多的商機"},{"type":"text","text":" 。用戶案例所有者(如 eBay 數據服務和解決方案團隊)將在 IDL 數據集上構建 Cube。IDL 是集成數據層,它是一組用通用業務邏輯進行了轉換的表,可以爲一個域或跨域內的一個或多個業務流程提供服務。基於這些數據的 Cube 具有許多相關的度量和維度。統一的UI解決方案爲最終用戶提供了靈活性,可以輕鬆地拖放不同的維度和度量組合以進行特定分析。這是一個用例,最終用戶可以從 30 個維度和 200 個度量中選擇一種組合來分析 B2C 業務績效。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/69\/cf\/699e320c1247134237b54d28a51f2fcf.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第三種模式是實時 OLAP"},{"type":"text","text":" 。最重要的需求是數據處理後的度量的實時反映。而且,由於實時事件管道中存在一些不確定性,用戶要求 Lambda 架構從 ETL 流中調整度量精度。這是 BU 需要實時監視站點電子郵件號碼以瞭解其性能的一個示例。同時他們還需要回顧龐大數據集中的逐年指標。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"04 eBay 未來計劃"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於 eBay 朝着向目標用戶(如分析師和業務部門)提供更多自助服務和智能數據分析功能的方向發展,我們的數據服務和解決方案團隊正在構建增強版分析解決方案,該解決方案需要更多來自 Kylin 平臺的靈活性和彈性支持,例如從多個 Hadoop 羣集中提取數據,對龐大查詢量的系統彈性,以及構建高維 Cube 的靈活性和性能。因此,建立更高的靈活性和彈性系統將是我們明年的首要任務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,我們還在考慮替代 HBase 的存儲解決方案。Kylin 社區已經開始了一項重大計劃,也就是使用 Parquet 提供輕量,列式存儲,雲友好的解決方案。我們明年也計劃對存儲解決方案部分進行一些調研。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在過去的兩年中,我們的團隊致力於一項重大計劃,該計劃通過在 SparkSQL 上進行大量軟件優化來提供對 Hadoop 數據的快速特定查詢體驗。我們也會考慮將 Kylin 用作整個藍圖中的加速層之一。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"作者介紹"},{"type":"text","text":":"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Lisa Li,在 eBay 中國研發中心大數據平臺部門擔任研發主管。帶領的團隊主要負責 SQL on Hadoop 的方案,給使用 SQL 查詢語言的數據分析師在開源的 Hadoop 數據平臺上提供更加快速穩定的數據處理和查詢體驗。主要包括 Kylin 和 Spark 兩個軟件產品的深度開發和服務運維工作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"本文轉載自公衆號apachekylin(ID:ApacheKylin)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接"},{"type":"text","text":":"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/mp.weixin.qq.com\/s?__biz=MzAwODE3ODU5MA==&mid=2653082008&idx=1&sn=1df8f2501cf72d43e5f25f9f6f5b2943&chksm=80a4af69b7d3267f81580563ef38e4cbe0694a938ae9839d3704c5f82c3e84e98569b98ebca1&token=1340822333&lang=zh_CN#rd","title":"","type":null},"content":[{"type":"text","text":"Kylin 在 eBay 的成長曆程與實踐"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章