余 欣,王子建,徐楨虎
(四川封面傳媒有限責任公司,四川 成都 610000)
智媒體是指用人工智能技術重構新聞信息生產與傳播全流程的媒體,技術驅動是智媒體的本質特征,人機協同是智媒體的重要標志,智能傳播是智媒體要達到的目標追求。智媒體在利用大數據和人工智能等新技術對智能分發、用戶沉淀、商業模式、生態體系等方面進行探索的過程,需要來自內外多個領域的團隊協同來打造智媒技術平臺,推動數據驅動、算法重構和應用升級。基于市場發展和企業架構的理解,這種創新需求強烈、技術領域繁雜、異構系統眾多、跨界協作密集的智媒技術平臺的成熟進化正是業務中臺的價值所在。為了高效應對變化,支撐前臺應用的快速落地,集成后臺服務的復雜邏輯,業務中臺在媒體領域應運而生。
智媒體業務中臺從功能上將智媒能力可見、可控、可用、可聯,讓協同建設的團隊對各系統的理解從產品層面深入能力層面,由此提升溝通和建設效率,根本上是要加強如下三個方向:加固中臺基底、提升中臺效能和開放中臺能力。
(1)加固中臺基底。智媒體應對快速創新和海量訪問的同時要保持系統穩定運行,需要通過服務治理框架和統一運維平臺的搭建,為中臺的上層提供完整的穩定性保障[1],讓下層更關注在基礎資源能力本身,讓智媒體技術平臺成為媒體系統的設計出發點。
(2)提升中臺效能。用充分和不斷完善的業務理解讓中臺能力適應更多場景,支撐更多復用,提升中臺的賦能效率。通過服務治理框架和持續集成平臺從場景支撐和研發效率兩個方面體現中臺的效能價值。
(3)開放中臺能力。中臺的能力應對第三方應用可見、可用,在保障第三方使用過程的隔離性時,還要做到可控、可聯,不因自身原因影響其他系統。
基于這三個方向,業務中臺需要通過服務治理框架支撐更多應用場景,通過智能API 網關提供高性能、高可用性的API 托管服務,通過運維研發一體化平臺來提升研發效率和系統質量。我們需要建設如下系統:智能API 網關、持續集成平臺、統一運維平臺、服務治理框架。
業務中臺提供的能力從技術實現上講就是一個個接口服務并用不同方式組合起來。為了讓業務中臺適應更多的場景,就要對接口服務不斷進行治理,整合拆分,對外開放。目前的接口服務按照互聯網產品的開發模式,采用微服務架構,Spring MVC(一種Java 框架)作為程序框架,用Dubbo(一種遠程過程調用框架)作為分布式框架,用K8s(Kubernetes,容器集群)完成容器的調度。在微服務架構的基礎上形成業務中臺能力不斷生長的服務治理框架。
智媒體的本質是用新技術驅動新傳播,在快速進化過程中,不斷消化新技術、融入新創意、產出新內容,而它的進化依賴于技術體系三個層次的升級迭代:開放接口服務、智媒服務矩陣、深融服務治理。
2.1.1 開放接口服務
第一層次是開放接口服務。支持在智媒體技術系統基礎上進行快速的創新探索和試錯。媒體是一個創新驅動的行業,媒體節奏相對于技術周期突發而迅速,需要技術創新能夠跟上媒體節奏。這個層次的升級為的是在時間窗口內占位,更多的是解決應用快速創新和試錯的能力[2],開放接口在領域和平臺上的覆蓋度很重要。在智媒體的核心領域包括用戶、稿件、文章、視頻、直播、音頻、積分、績效、頻道欄目、社區動態、問政報料、自媒體等部分,都應該有相應的接口開放出來,同時要支持在不同技術棧上協同開發,還要將開發接口封裝成不同平臺上的軟件開發包和橋接接口,從而引入上層的第三方技術生態伙伴,加快創新的節奏。
除了快速應用,媒體技術同樣需要穩扎穩打來應對更長遠的需求,因此需要通過更多類型的服務治理,完成智媒體技術系統自身的升級,支持更多應用場景,與其他行業深度融合。
2.1.2 智媒服務矩陣
第二層次是智媒服務矩陣。智媒服務矩陣沉淀和整理智媒體所需的各種服務,覆蓋內容生產的六大環節,如采集匯聚、策劃指揮、內容生產、審核發布、數據分析、綜合服務,同時對系統集成和定制區域進行歸納,識別出核心服務。不斷升級核心服務,一方面,基于業務中臺向下開放的程度,在底層引入更多新技術供應商在AI、數據、算法上的能力,在智媒服務中暴露出來;另一方面,強化業務中臺向上支撐的力度,通過自身技術團隊不斷細化和強化核心服務,支持內容生產端、呈現端和互動端更長遠的技術準備。在內容生產端上主要是細化六大環節的各項功能,并預埋定制接口方便升級和接入;在內容呈現和交互端上不僅要在服務端上強化服務能力,更要在移動端上強化移動中臺服務的支持,在充分理解移動傳播的基礎上,通過移動中臺為上層應用提供開箱即用的服務能力。在移動端的中臺服務如圖1所示。
移動中臺從工程效率、移動監控、App 端安全、App 端AI、基礎設施和業務組件六個領域為上層功能提供服務支持。

圖1 移動中臺
工程效率包括模塊化、打包服務、灰度部署;移動監控包括本地日志、異常監控、業務監控、離線報表、性能監控;App 端安全包括代碼混淆、應用加殼、數據加密、接口加密;App 端AI 包括語音識別、語音合成、用戶畫像、智能助手、端智能平臺、AR、圖像識別;基礎設施包括網絡庫、圖片加載、列表行為、音視頻播放、相冊、數據庫管理、文件管理、推送、二維碼生成及掃描、自定義表情、長鏈接、H5 容器、路由框架、內部通信、權限引導、應用內升級、視頻編解碼、素材庫、直播推流;業務組件包括分享以及第三方登錄、社區圈子、動態話題、新聞列表、新聞詳情、直播、音頻新聞、小視頻、報料及其管理、云求助、提問、稿件審核、頻道管理。
2.1.3 深融服務治理
第三層次是深融服務治理。在前兩個層次的支持下,智媒體可以支持更多應用場景,通過媒體+、智能+、數據+的模式不斷融合到其他領域,在這個層次中,更重要的是服務架構自身的靈活程度。智媒體需要在如下三個方面進行加強:服務編排配置管理、服務多租戶改造、服務注冊/發現。
服務編排配置管理讓業務中臺的微服務能更加靈活地適應各種應用場景,通過配置管理切換微服務的運行模式、運行環境和運行狀態。配置中心中不同客戶、不同項目的配置在ZooKeeper(一種分布式協調服務)上分開存儲。同時配置中心提供團隊的公共配置,同一團隊下的項目共享此配置,如果項目配置中存在和公共配置相同的配置,則優先從項目配置中讀取此配置;在項目啟動時,配置中心根據AppTeam、AppName,從ZooKeeper 中讀取項目配置和公共配置,對此項目配置數據節點目錄和公共配置數據節點目錄建立監聽;在項目Bean初始化完成后,掃描項目中所有使用占位符的方法和屬性,將占位符替換為Bean 實例、屬性和方法;當項目配置或公共配置數據節點發生變更時,配置中心會收到數據變更通知事件;收到數據節點變更通知后,獲取此次發生變更的配置Key 和Value,使用反射技術更改屬性或方法的值。
服務多租戶化支持服務的不同業務實例,需要進行微服務的多租戶化改造。這里改造要解決兩個難點,一個是在微服務無狀態的調用特性情況下,如何進行租戶ID 的透傳;另一個是多個租戶的數據源如何管理和下發。在不侵入程序的情況下,用擴展而非修改的方式進行服務的多租戶化改造,可采用如下幾種措施:開發多租戶Agent,利用Java 的Agent 技術,從旁路集成到微服務程序,攔截服務被調用或者調用其他服務時的請求,并自動在請求中增加租戶ID;對于微服務使用的中間件,采用全鏈路監控的探針技術,完成租戶ID 透傳。對于第二個難點,我們通過分布式協調統一下發數據源配置,動態管理租戶數據源,對系統代碼零入侵。
服務注冊/發現是微服務框架中的標準功能,微服務必須經過注冊后,才可以被調用方發現。在業務中臺中,我們在服務注冊/發現能力上進行了兩個方面的加強,首先是對前臺應用增加注冊功能,前臺應用在通過智能網關調用API 之前,必須通過服務注冊獲取該應用的Token,通過Token 調用各種服務;其次是下發定制信息,通過注冊中心主動推送消息到服務中,比如租戶的數據源信息等。一個智媒體技術系統通常由幾十個甚至上百個服務構成。我們采用Client-Sever 架構,獨立出一個注冊中心,每個服務啟動后都去注冊中心進行自我注冊,當注冊中心有了新的數據源信息時,就會基于事件把新的數據源信息推送給每個注冊的服務,然后每個服務將新增的數據源加入自己的數據源集合中。
智能API 網關將接口層調用管理和性能控制集成到業務中臺中,各種前臺應用從能力上、項目上減少和后端開發的緊耦合。根據不同的企業中臺需求痛點,智媒體主要在如下四個方面打造智能網關:
(1)API 發布與管理。業務中臺包含大量的業務中心,同時存在多個異構系統。API 網關通過統一的發布與管理來進行這些業務接口和服務能力的治理和托管。
(2)API 租戶與計費。TOB 屬性將會作為業務中臺對企業能力的強補充。API 網關的客戶端管理、租戶與計費功能將會作為企業TOB 能力的統一出口。
(3)API SLA 功能管理。為了保證高可用的接口服務,API 網關實現了接口的降級、熔斷、限流、黑白名單等非功能性的需求。
(4)API 統計分析。通過統計分析功能對接口調用情況進行量化,能夠查看到SLA 指標或者加入監控的功能。
智能API 網關總體采用的架構思想,如圖2所示:

圖2 智能網關整體架構
智能網關支持各種程序語言,客戶端可以采用多種方式訪問智能網關,Java 原生程序或者Spring 框架程序可以通過SDK 訪問,其他語言的程序可以通過Http 協議來訪問;服務端可以通過Dobbo、Http、Spring Cloud 等協議提供接口,同樣也支持各種語言開發的服務端程序;網關集群上實現路由組件和服務組件的高可用和高性能,避免這個環節的單點故障,提高性能,網關消耗在1 ~2ms;通過插件化設計思想,在插件層可以通過熱插拔、易擴展的方式接入更多插件;內置豐富的插件支持,包括鑒權、限流、熔斷、防火墻等,實現靈活的流量篩選,能滿足各種流量控制。
封面智能API 網關使用服務管理和路由管理兩個功能來完成服務的發布與管理。
3.2.1 服務管理
服務管理指的是整個業務中臺能夠提供的各種服務,可以是一個Rest 請求的接口,一個Dubbo 的服務,或者是一個AI 的算法服務等。
網 關 支 持Http、Https、Dubbo、Nacos 等多種服務配置。Http 和Https 服務配置超時時間和對應的URL 地址,URL 地址支持負載均衡;Dubbo 配置ZK 地址和服務Group、ID、超時時間等;Nacos 配置服務器地址、接口名稱、Group 等。
3.2.2 路由管理
網關對外的最終出口都是通過Restful 接口方式,路由配合則決定了一個Resturl 會被路由到哪個服務上。主要的配置信息應該包括:路由是配置網關對應的URI 跳轉到那一個服務的;主要配置分組(分組可以帶一級URI)、URI、對應的服務;配置是否開啟認證,開啟之后會通過消費者管理認證規則進行認證;完成了服務和路由的配置后,業務中臺的各種能力就有了一個統一的對外接口。
企業一般通過PASS 平臺的方式完成TOB的技術支撐。一般的PASS 平臺都會具有租戶、鑒權、計費等功能。封面把這些功能也做到了智能API 網關中。
3.3.1 消費者管理
消費者在這里表示為PASS 平臺的租戶。對每個消費者可配置其自己的AccessKey 和AccessToken 用作權限校驗;對每個消費者配置其可以訪問的接口列表。
3.3.2 計費能力
對每個消費者智能網關支持定義其對每個接口每一天和每個月的訪問次數上限;超過上限后會發送告警給管理員,并且會對接口進行限速。
為了實現更好的可擴展性,API 網關支持Java 語言的插件擴展。
目前使用了內置的插件功能來完成對接口各種非功能的特性進行支撐。目前主要提供的插件為:
Mock 插件。可以Mock 接口的請求,可以用作測試環境。
IP 訪問控制。可以設置IP 訪問的黑、白名單來增加安全性。
斷路器。用來配置系統降級之后的業務行為,保證高可用性。
流量保護。防止突發流量把系統打垮,可以實現流量限制。
3.5.1 系統功能統計分析
為了能夠從整體上更好地進行業務接口質量和能力的評估分析,提供了詳細的統計分析功能。主要包括如下的分析內容:
API 請求次數統計:按照不同時間周期統計API 調用次數。
API QPS 統計:統計接口單位時間的調用情況,為性能優化提供數據。
API 流量統計:統計接口調用對流量帶寬的占用情況。
API 響應平均時長:統計接口單次調用的響應時長,和QPS 一起成為性能優化的重要依據。
API 響應狀態碼統計:統計接口成功和錯誤的數量,作為質量優化的重要依據。
API 可用率計算:接口穩定性的重要指標。
斷流、限流出發次數統計:接口容錯性的重要指標。
3.5.2 接口調用情況監控與告警
基于實時的API 網關監控分析功能,封面網關還提供了對指定指標進行告警的功能。主要需要配置監控指標、告警規則和告警方式。其中,監控指標主要有錯誤數量、請求次數、流量、QPS 等;告警規則主要有超出某個閾值、多長時間內沒有響應等;告警方式主要有釘釘、郵件、短信通知等。
業務中臺通過原生容器云和各種運維工具的引入,實現自動化的流程、快速敏捷的開發、持續交付和部署。以此來提升我們的研發效能與代碼質量。
運維研發一體化平臺包括持續集成平臺和統一運維平臺。
持續集成平臺提供開發測試部署上線運行全流程中的各個環節的自動化、安全性和應急操作,通過應用發布流水線管理,讓代碼、構建、測試、質量、鏡像、灰度、藍綠、發布等環節自動化;通過K8s 的引入讓服務彈性橫向擴容功能更便捷,擴容速度更快;通過各種環境和資源隔離等操作,為上層應用提供統一安全保障。
統一運維平臺使用云和其他基礎設施能力以及應用各種技術中間件的能力進行整合和包裝,通過各種監控手段對業務中臺運行情況進行收集和展示,包括監控Portal、提供基礎監控、接口監控、業務監控;統一日志,提供日志查詢、分析、異常告警的能力;全鏈路監控,提供全鏈路監控和全鏈路壓測的能力。運維研發一體化平臺為業務中臺打下了堅實的基礎。
整個平臺依賴于虛擬化技術來構建底層分布式容器能力,整體架構主要具有如下特點:使用Docker 虛擬化技術來屏蔽硬件環境的異構性;使用K8s 進行容器編排,提供底層完備的運行時環境和分布式PASS 平臺能力;充分利用Kubernetes 共享信息,自動化配置;通過快速集成能力,與各種DevOps 工具相結合。
持續集成的目的是持續交付和持續部署。整個流程主要分為構建管理、資源管理、代碼管理和部署發布管理四個部分,通過Jenkins+Gitlab+定制開發實現這四個部分。
構建管理:通過監控代碼發布,配置測試環境和編譯環境,實現自動化測試和構建。
資源管理:為構建和自動化測試分配資源,通過精細化管理,為持續集成管理節點資源。
代碼管理:基于Gitlab 自建代碼庫,定義發布模板和分支規范,為持續集成管理代碼分支。
部署發布管理:定制開發部署發布系統,一邊對接構建管理,一邊對接容器集群和鏡像倉庫,實現自動化交付。
智媒體業務中臺為了應對各種復雜的業務,采用敏捷開發、持續集成等開發方式。系統架構也從單機大型軟件演化成微服務架構。微服務構建在不同的軟件集上,這些軟件模塊可能是由不同團隊開發的,可能使用不同的編程語言來實現,還可能發布在多臺服務器上。因此,如果一個服務出現問題,可能導致幾十個應用都出現服務異常。
全鏈路跟蹤系統可以記錄請求范圍內的信息,例如,一次遠程方法調用的執行過程和耗時,全鏈路跟蹤系統是我們排查系統問題和系統性能的重要工具。
4.3.1 全鏈路跟蹤的總體架構
全鏈路跟蹤系統通過使用客戶端Agent 的方式來采集各種應用程序的使用和接口調用信息,然后輸出日志到分析中心,最后在分析中心進行統計分析和監控告警。
鏈路追蹤的主要工作流程為客戶側的應用程序通過集成鏈路追蹤的多語言客戶端SDK 上報服務調用數據;數據上報至鏈路追蹤控制臺后,鏈路追蹤組件進行實時聚合計算和持久化,形成鏈路明細、性能總覽、實時拓撲等監控數據。
4.3.2 全鏈路跟蹤的主要功能
全鏈路跟蹤的主要功能如下:
分布式調用鏈查詢和診斷:追蹤分布式架構中的所有微服務用戶請求,并將它們匯總成分布式調用鏈。
應用性能實時匯總:通過追蹤整個應用程序的用戶請求,來實時匯總組成應用程序的單個服務和資源。
分布式拓撲動態發現:用戶的所有分布式微服務應用和相關PaaS 產品可以通過鏈路追蹤收集到分布式調用信息。
多語言開發程序接入:基于OpenTracing 標準,全面兼容開源社區,例如Jaeger、Zipkin。
智媒體采用業務中臺后,取得非常明顯的效果,系統部署上線時間從2 周縮短至3 天,新業務接入縮短至以周為單位,系統提供更多開發模式,使更多第三方合作伙伴可以加入智媒體周邊的開發當中,為媒體業務的技術驅動提供聯盟、合作、生態、共享的解決方案。
基于智媒體業務中臺的研究和探索,我們在智能API 網關、持續集成平臺、統一運維平臺、服務治理框架四個方面進行開發和搭建,根本上要解決如下三個方面的問題,中臺基底的加固、中臺效能的提升和中臺能力的開放。
一是中臺基底的加固。通過服務治理框架和統一運維平臺的搭建,系統具有各種監控手段對業務中臺運行情況進行收集和展示;具有統一日志和異常告警能力對異常情況進行快速排查和解決;具有全鏈路監控和全鏈路壓測工具對系統運行鏈路進行全環節完整的監控和優化。中臺層面上的監控、告警、全鏈路工具為中臺的下層提供完整的穩定性保障,讓下層更關注基礎資源能力本身。
二是中臺效能的提升。中臺作為上層應用賦能單元,其賦能效率非常重要。只有在中臺基礎上更快速、更完整地支撐上層應用,中臺的價值才能體現出來。微服務治理框架為系統帶來配置中心、注冊中心和多租戶能力,通過多層配置、服務注冊、租戶改造,中臺將適應更多應用場景。持續集成平臺提供開發測試部署上線運行全流程中各個環節的自動化、安全性和應急操作,通過應用發布流水線管理,K8s的引入讓開發運維更加敏捷,從場景支撐和研發效率兩個方面體現中臺的效能價值。
三是中臺能力的開放。中臺作為技術生態體系的組件,開放程度很重要,中臺的能力應對第三方應用可見、可用、可控、可聯。智能API 網關通過可視化手段將大量業務中心的業務接口和服務能力在智能網關中治理和托管,通過統計分析功能對接口調用情況進行量化,實現能力可見;作為業務中臺對企業能力的強補充,API 網關的客戶端管理、租戶與計費功能將會作為企業TOB 能力的統一出口,實現能力可用;API SLA 功能管理保證高可用的接口服務,實現了接口的降級、熔斷、限流、黑白名單等非功能的性能需求,實現能力可控可聯。