極光筆記 | 極光服務的信創改造實踐

發表於2023-09-18

什麼是信創?

信創全稱為“資訊科技應用創新”,主要包含應用於通訊、雲端計算、大資料、人工智慧、工業網際網路等諸多高新產業的基礎技術。基礎技術則包含基礎硬體、基礎軟體、應用軟體、資訊保安四大板塊。其中:
基礎硬體主要包括:晶片、伺服器/PC、儲存等;
基礎軟體包括:資料庫、作業系統、中介軟體等;應用軟體包括:辦公軟體、ERP和其它軟體等;
資訊保安包括:硬體安全、軟體安全、安全服務等各類產品。

信創的核心是透過國產和自主創新實現資訊科技產業的“自主可控、安全可信、高效可用”。

為什麼要做信創?

長期以來,歐美國際IT巨頭利用技術優勢佔據了大量的市場份額,壟斷了全球的資訊基礎設施,也幾乎完全控制了IT底層技術的制定標準,把控了整個資訊科技產業的核心生態。

我國自改革開放以來,在資訊科技領域發展迅速,但在底層基礎核心技術領域依然一直處於模仿和追隨者的被動地位。

近些年,隨著外部環境的逐漸惡劣,一系列的事件倒逼著我國信創產業向自主可控的方向發展。諸如:
2008年微軟的黑屏事件
2010年伊朗震網病毒事件
2013年美國稜鏡門事件
2018年美國中興晶片斷供事件
2019年華為晶片斷供事件
2020年微軟windows7停服事件

於是,2020年在國家政策的大力支援下,信創產業開始全面爆發和佈局,成為信創元年。

至今,2023年,信創經過三年的大力發展和推廣,覆蓋的領域越來越廣,信創產品和應用從最初的黨政領域,向醫療、教育、交通、金融等行業全面推進。因此,極光的訊息產品在服務這些行業時,也面臨著信創的改造和升級。

極光服務的信創改造之路

近些年,極光服務積極擴充了金融,黨政機關等多個行業的私有云客戶。為了配合客戶的信創需求,極光服務於2022年也開啟了信創改造之路。極光服務信創改造主要涉及使用到的諸多中介軟體。

以下是極光服務重點對接適配的幾個信創中介軟體:
1、RocketMQ 替換為東方通 TongHtp2.0
在獲得相關檔案後,極光開發對東方通提供的十來個資料進行了查閱調研。

一開始,我們選擇基於非同步介面進行系統改造,一般來說,非同步介面在每次請求後都會收到一個對應的回撥,是適用於UMS 業務需要的,但在實際除錯時,我們發現只有第一條才會有回撥返回,這樣的邏輯讓UMS系統無法判斷訊息是否已傳送。而東方通表示該非同步介面的設計現狀就是如此,不得已,我們只好對同步介面進行封裝後再整合到UMS 中使用,浪費了一些時間。

在對「檔案上傳功能」進行適配時,發現TongHtp2.0 出現字元流資料讀取亂碼的問題,分析發現是因為TongHtp2.0 不支援gzip格式。在這個情況下,我們需要對業務涉及字元流的地方進行特殊編碼處理才能完成相容適配,最後透過修改成十六進位制的編碼解決了這個問題。

由於 TongHtp2.0 依賴.so動態庫,無法在本地的開發環境進行除錯,必須在部署指令碼中指定依賴的動態庫,然後打包放到伺服器上,透過打日誌的方式來進行除錯。因為除錯方式複雜使得適配工期拉長。

經過反覆的除錯、溝通討論,最終我們在8 月末順利完成東方通TongHtp2.0 的開發、自測。

2、Redis 替換為東方通 TongRDS2.2.1.2

9 月,我們在測試環境中安裝了TongRDS ,編寫了一個測試Client 與測試Server 測試其對Redis 協議的相容性,其中Client 用於實現資料的寫,Server用於實現資料的查詢,我們測試驗證了string、list、set、hash、zset等幾種常見的資料型別,同時驗證了ttl 以及資料持久化。

在 Redis相容性驗證之後,由於東方通TongRDS 有原生的Go sdk,因此我們用TongRDS 替換Redis,部署在我們的UMS 測試環境中,驗證UMS 的業務功能是否正常。

3、Nginx 替換為東方通 TongHttpServer

9 月,我們在測試環境中安裝了TonghttpServer,替換UMS 系統使用的Nginx 後驗證 UMS Portal 基本功能,可以正常執行。

在驗證高階功能時,因為在頻率限制、黑白名單等功能中用到了Nginx Lua,所以需要驗證TonghttpServer 對Nginx lua 的支援和相容性。我們編寫了Nginx lua 指令碼,將其放到TonghttpServer 的對應目錄並更新配置檔案,重啟後驗證api limit 以及路由轉發功能是否正常。

4、MySQL 替換為 TiDB

經過調研發現,TiDB基本可以相容 MySQL,因此我們直接利用TiDB 的資料遷移工具,將MySQL資料庫的存量資料遷移到TiDB,進行基本功能驗證即可。

5、 寶蘭德的適配

為了以最快的速度完成信創的相容,確保上線時間,我們在寶蘭德和東方通的調研、適配上安排了多個開發同步進行,當遇到阻礙時及時商討方案,調整選型和人力配置,最後按時完成了開發提測。以下是我們在寶蘭德適配上遇到的問題和經驗分享:

從寶蘭德廠商獲得BESMQ、BCS(對應Redis)以及 Web伺服器 bws3.1 的測試Licence,將UMS系統使用的 RocketMQ、Redis以及 Nginx等中介軟體替換為對應的寶藍德元件,開始進行相容適配工作。

在驗證 BCS(對應Redis)時,因為寶蘭德不支援原生的Go 客戶端,所以極光必須自行開發一箇中間服務做Redis 協議轉發,透過把Go 的協議轉發給Java 的 SDK來實現。我們先呼叫 Java SDK 客戶端對 Redis的幾種資料型別(string、set、hash、list、zset)做了相容性驗證,發現資料讀寫都是正常的。

另外,也寫了一個簡單的協議轉發服務proxysrv,用於將umsserver 對 Redis的操作轉發給 BCS的原生SDK,在對基本場景驗證後確認方案可行,但是由於協議轉發存在效能損耗,同時由於proxy 與 ums server 之間是一個長連線,涉及連線保活的機制,要完美實現可能會有點複雜,因此決定放棄適配寶蘭德,選用東方通RDS。

在驗證 BESMQ時,同樣遇到了沒有 Go SDK的問題,我們自研開發了一個代理服務用於協議轉發,但在自測過程中遇到了連線無法保活的問題,如果要保活則需要實現心跳機制,心跳機制相對比較複雜,因此決定放棄適配,選用東方通TongHtp。

因上述元件選用了東方通,而東方通的 TonghttpServer 已驗證透過,因此未繼續驗證bws3.1 替代 Nginx。

信創改造實踐總結

在經過一段時間繁瑣的適配開發後,極光私有云服務已改造成能適配絕大部分需求,但對接的過程中也遇到了不少問題,諸如:

  • 各行業信創標準不統一,尤其同型別不同信創元件,對接介面不一致,適配工作量重複且繁瑣
  • 國產信創元件搭建穩定的測試驗證環境困難,很多時候只能在客戶整合測試環境才能完成最終驗證
  • 國產信創元件三方交付配合,尤其在問題定位時,溝通成本較高

展望未來,信創改造是一項長期需要投入的工作,為了提高後續的接入開發和交付效率。信創改造依然有許多值得最佳化的地方,目前總結有以下幾點:

  • 開發過程中,對中介軟體的使用介面應抽象成泛型,並以外掛的形式快速接入不同型別的信創元件
  • 交付過程中,對已能支援的元件,使用配置化的方式支援定製化切換
  • 提高不同信創元件的使用經驗和運維能力,包括開發定製化的工具支援系統元件的視覺化,故障監控告警,完善標準化檔案等等。

關於極光
極光(Aurora Mobile,納斯達克股票程式碼:JG)成立於2011年,是中國領先的客戶互動和營銷科技服務商。成立之初,極光專注於為企業提供穩定高效的訊息推送服務,憑藉先發優勢,已經成長為市場份額遙遙領先的移動訊息推送服務商。隨著企業對客戶觸達和營銷增長需求的不斷加強,極光前瞻性地推出了訊息雲和營銷雲等解決方案,幫助企業實現多渠道的客戶觸達和互動需求,以及人工智慧和大資料驅動的營銷科技應用,助力企業數字化轉型。

相關文章