超鏈接實驗室,是融云策劃推出的IT 系列直播課,攜手行業(yè)專家,一起聊聊 IT 國產(chǎn)化、協(xié)同辦公通信、通信中臺、企業(yè)數(shù)字化的那些事兒。融云政企公眾號[融云RongCloud]回復(fù)“超鏈接實驗室”,獲取入群報名鏈接。
融云支持國產(chǎn)化的初心,可追溯到2017 年進(jìn)入政企市場之日起。時至今日,融云已成為國產(chǎn)化支持最完善、徹底的企業(yè)之一。
(融云國產(chǎn)化適配范圍)
基于豐富的國產(chǎn)化經(jīng)驗,「超鏈接實驗室」首期課程《國產(chǎn)化之路—— 國產(chǎn)化適配的那些坑》于 3 月 30 日正式開播。融云服務(wù)端研發(fā)架構(gòu)師陳祥從服務(wù)端國產(chǎn)化適配、客戶端國產(chǎn)化適配、以及國產(chǎn)化部署交付等三個部分為主要切入點,詳細(xì)講述了融云在國產(chǎn)化適配過程中曾遭遇的難題,并提出了一系列經(jīng)過融云多次驗證的解決方案,希望正走在“國產(chǎn)化之路”上的伙伴們可以以此為鑒,少走彎路。
國產(chǎn)數(shù)據(jù)庫下命名沖突怎么辦?
中間件編譯失敗怎么辦?
客戶端截屏功能?法正常使?怎么辦?
……
01服務(wù)端國產(chǎn)化適配
◆ 關(guān)系型數(shù)據(jù)庫表名 / 字段名建議全?寫且避免以單個單詞命名
?持SQL 的數(shù)據(jù)庫?般由存儲服務(wù)(Service)、存儲引擎(Engine)組成,分析器進(jìn)? SQL 語句的詞法和語法分析,執(zhí)?器負(fù)責(zé)與存儲引擎交互,國產(chǎn)關(guān)系數(shù)據(jù)庫分析器層?均遵循 SQL 規(guī)范,但在存儲引擎上各不相同。主流國產(chǎn)關(guān)系數(shù)據(jù)庫人大?倉、達(dá)夢、神舟通用、南大通用雖然都?持 SQL ,但并不意味 MySQL 上執(zhí)?沒有問題的 SQL 語句在國產(chǎn)數(shù)據(jù)庫上執(zhí)行同樣沒有問題。
融云建議:關(guān)系型數(shù)據(jù)庫表名/ 字段名建議全?寫,并且避免以單個單詞命名(在極端情況下可以將其列為開發(fā)規(guī)范明令禁止)。
全?寫可以避免因為數(shù)據(jù)庫大小寫敏感設(shè)置所導(dǎo)致的找不到庫/ 表 / 字段的情況的發(fā)生;不以單個單詞命名表 / 字段,則基本可以避免關(guān)鍵字沖突問題。
◆ 使用 jdk-8u192 作為 Java 運行環(huán)境
為了保障高性能,融云協(xié)同辦公產(chǎn)品的所有接入接口服務(wù)均使用Netty(Netty 提供異步的、事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序)。問題是,Netty 依賴的第三方包較多,因此出現(xiàn)不支持 ARM / MIPS 的可能性較大,容易遭遇 HTTPS 處理失敗等問題。
經(jīng)過多方嘗試,建議:使用jdk-8u192 作為 Java 運行環(huán)境,并在對應(yīng)架構(gòu)下重新編譯。
需要補(bǔ)充說明的是,2019 年 1 月起 Oracle 對 JDK8 進(jìn)?收費,8u192 是 2018 年的最后?個版本更新,可以繼續(xù)免費使用下去。但是從 2019 年 1 月開始,如果還想獲取 JDK 的更新,則需要付費訂閱。
◆性能測試應(yīng)覆蓋主要國產(chǎn) CPU 型號
(融云公眾號后臺回復(fù)【超鏈接實驗室】獲得講師PPT)
從國產(chǎn)芯片現(xiàn)狀可以看出,國產(chǎn)化CPU 以精簡指令集陣營居多,并且,在實際交付中,我們所能夠碰到的國產(chǎn) CPU 也是以精簡指令集類型居多。例如:ARM 架構(gòu)的鯤鵬 / ?騰系列、MIPS 架構(gòu)的?芯(龍芯后續(xù)會主推 LoongArch 架構(gòu))等。由于復(fù)雜指令集和精簡指令集的設(shè)計初衷不同,導(dǎo)致精簡指令集 CPU 在性能上與復(fù)雜指令集存在較大差異(相同規(guī)格復(fù)雜指令集的 CPU 性能高于精簡指令集 CPU)。
融云建議:在實際的交付部署中,根據(jù)不同的性能指標(biāo)進(jìn)行部署資源估算。而關(guān)于性能測試覆蓋范圍,融云建議以下幾種:
鯤鵬920 / 920S、飛騰 2000 / 2000+、龍芯 3B3000 / 4000,搭配的操作系統(tǒng):統(tǒng)信 V20 及麒麟 V10。x86 架構(gòu)的海光 CPU ,性能上可以認(rèn)為與其他同等規(guī)格的 x86 CPU 相近即可。
02客戶端國產(chǎn)化適配
多數(shù)的國產(chǎn)系統(tǒng)都分桌面版和服務(wù)版,對于客戶端的國產(chǎn)化適配,我們只針對桌?版來看待和解決問題,桌?客戶端在國產(chǎn)化適配中,容易遭遇如下問題:
◆ 不同操作系統(tǒng)打包規(guī)范不同導(dǎo)致桌?客戶端各種?問題
主要問題如:卸載后圖標(biāo)未被清理、托盤顯示2 個圖標(biāo)、托盤不閃爍等。
融云建議:先找到國產(chǎn)操作系統(tǒng)廠商咨詢,索要打包規(guī)范,然后依據(jù)規(guī)范再進(jìn)行打包(這里需要說明的是,各大廠商非常重視自身生態(tài)發(fā)展,所以對于咨詢的態(tài)度是十分開放的,可以大膽咨詢)。
◆ 不同操作系統(tǒng) libc 版本不?致導(dǎo)致桌面客戶端不能正常使用
融云協(xié)同辦公產(chǎn)品客戶端協(xié)議棧使用C++ 作為開發(fā)語言,同時,插件也基于 C++ 開發(fā),而在客戶端國產(chǎn)化適配過程中,C++ 的協(xié)議棧、插件等因為不同操作系統(tǒng) libc 版本不?致,也容易引發(fā)一系列問題。
經(jīng)過多次嘗試,衷心建議伙伴們:無論是ARM 還是 MIPS 架構(gòu),都在麒麟系統(tǒng)上進(jìn)行編譯,因為同一架構(gòu)下麒麟系統(tǒng)的 libc 版本比統(tǒng)信系統(tǒng)低,一般麒麟系統(tǒng)的 libc 版本為 2.2.3 ,統(tǒng)信的則為 2.2.8 。這樣基本可以避免客戶端 C++ 插件及組件的異常。
◆ 截屏模塊采用靜態(tài)編譯
在國產(chǎn)化適配客戶端功能測試中,客戶端截屏功能?法正常使?是最早暴露的問題之?,與前一問題不同的是,這里只針對客戶端的插件范疇,給出另外一種解決方案。起初,融云截屏相關(guān)組件采用的是動態(tài)編譯的?式,由于該?式與操作系統(tǒng)的依賴性較強(qiáng),經(jīng)常出現(xiàn)在這個系統(tǒng)下可用、在另外系統(tǒng)下不可?的情況。經(jīng)過探索,最終我們采用在靜態(tài)編譯QT 的基礎(chǔ)上編譯截屏 node ?件的方式,成功解決了不同操作系統(tǒng)下客戶端截屏功能無法正常使用的問題。
(融云公眾號后臺回復(fù)【超鏈接實驗室】獲得講師PPT)
03國產(chǎn)化部署交付
幾乎所有的應(yīng)用業(yè)務(wù)系統(tǒng)都會使用和依賴?些中間件或者工具,例如:消息隊列中間件、緩存中間件、進(jìn)程管理工具等。在部署交付之前,常常都會預(yù)先把所有的部署資源提前準(zhǔn)備好,包括:服務(wù)自身的編譯包、中間件等,因為現(xiàn)場臨時編譯顯然不是明智之舉,做不到快速部署,也無法保證整個過程的可控。
(融云公眾號后臺回復(fù)【超鏈接實驗室】獲得講師PPT)
在部署資源準(zhǔn)備方面,國產(chǎn)化適配容易遭遇以下幾個問題:
◆ 不同操作系統(tǒng) glibc 版本不?致導(dǎo)致中間件編譯失敗
在版本的選擇上,不可過高也不可過低,如果版本過高,那么在遇到低版本時,?定會出問題;而版本過低,又會出現(xiàn)找不到依賴的情況。因此,為了統(tǒng)?編譯,達(dá)到泛部署的目的,我們建議找到?個合適的版本進(jìn)行中間件的編譯,以適應(yīng)多數(shù)場景。對此融云針對麒麟、統(tǒng)信做了?量的摸索和嘗試,目前已達(dá)到預(yù)編譯部署資源在多數(shù)場景下的正常使用。
◆ 不同操作系統(tǒng) Path 環(huán)境變量不同
很多中間件在正常運行時都依賴于系統(tǒng)環(huán)境變量的設(shè)置,可以通過軟鏈的方式去解決,這樣可以避免對系統(tǒng)Path 環(huán)境變量的修改,畢竟作為國產(chǎn)操作系統(tǒng)的使用者,在理解及評估能力方面遠(yuǎn)不及廠商自身,不直接修改操作系統(tǒng)的環(huán)境變量,我們就能夠規(guī)避因為修改系統(tǒng)的環(huán)境變量而引發(fā)其他問題的風(fēng)險。
◆ 不同操作系統(tǒng) rpm 包存在差異
通常在自動化部署工具的實現(xiàn)上,大家都會用Python,Python 自身依賴于 Python rpm 包,在不同操作系統(tǒng)下,rpm 包存在差異,就可能會出現(xiàn)問題,需要針對不同操作系統(tǒng)做對應(yīng)的處理。這里建議?家:優(yōu)先使?操作系統(tǒng)?商所提供的 rpm 包,其次是從 OS 的 yum 源獲取。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )