System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及操作系統中的應用容器化運行,具體涉及一種宿主機和容器中相同dbus服務的共存方法及系統。
技術介紹
1、隨著國產操作系統普及率的逐年增加,伴隨著國產系統下的應用也越來越多,同一應用的不用版本之間的兼容性問題也變得越來越復雜,開發者通常使用容器技術,通過將應用安裝到容器中來解決應用的不同版本之間兼容性問題,這樣就可以在操作系統上安裝同一應用的不用版本。在國產操作系統上dbus是應用之間進行通信的重要手段,在處理應用兼容問題的過程中,宿主機和容器中安裝的應用會依賴同一dbus服務的不同版本,而由于dbus總線的限制,同一個dbus服務只能被一個進程所擁有,此時問題的根源轉變為容器和宿主機服務沖突,所以解決同名dbus服務的沖突問題,就成了應用兼容的主要難題之一。
2、目前國產操作系統在使用容器技術做應用兼容時,當需要在宿主機和容器中安裝提供了同一個dbus服務的不同應用或者是安裝提供dbus服務的同一應用的不同版本的時候,在運行時都會出現容器或宿主機上因為有同一個dbus服務名的原因運行失敗,即dbus服務沖突。
3、申請號為cn202110366560.9的中國專利申請公開了一種容器環境下的mpi應用性能優化方法和系統。主要在高性能計算環境下啟動了基于容器的mpi作業,在充分利用了容器技術便利性的同時,提高了mpi在高性能場景下進程間消息傳遞的性能,使性能損失更小。此方案雖然針對容器下進程間通信優化和升級,提高了進程間通信的性能和效率,但僅僅適用于高性能計算的場景。
4、公告號為k
技術實現思路
1、本專利技術要解決的技術問題:針對現有技術的上述問題,提供一種宿主機和容器中相同dbus服務的共存方法及系統,通過對容器內應用的dbus消息進行截獲和轉發以實現相同dbus服務的共存,解決dbus沖突問題。
2、為了解決上述技術問題,本專利技術采用的技術方案為:
3、一種宿主機和容器中相同dbus服務的共存方法,包括:
4、通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信,且通過代理進程將容器中的應用發往宿主機中dbus總線中的消息中的dbus服務名進行修改以使得容器中的應用的dbus服務、宿主機中相同應用的dbus服務可同時通過dbus總線通信,還通過代理進程將宿主機中dbus總線發往容器中的應用的消息中的目的地按照應用與dbus連接的對應關系進行修改以使得容器中的應用能夠正常收到dbus總線的消息。
5、進一步的,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的dbus服務聲明消息的處理包括:
6、s101,獲取dbus服務聲明消息的消息體中的dbus服務名;
7、s102,調用dbus總線的函數接口判斷消息體中的dbus服務名是否已經被占用,如果已經被占用則跳轉步驟s104,否則跳轉步驟s103;
8、s103,調用dbus總線的函數接口獲取可激活的dbus服務列表,判斷該消息體中的dbus服務名是否在可激活的dbus服務列表中,如果不在可激活的dbus服務列表中,則直接將該dbus服務聲明消息的消息體轉發到dbus總線上,結束并退出;否則,跳轉步驟s104。
9、s104,修改該dbus服務聲明消息的消息體,在消息體中的dbus服務名添加后綴名得到新的dbus服務名,所述后綴名為創建容器時候的容器名,然后將該dbus服務名、新的dbus服務名作為鍵值對插入到服務名映射表中,最后將修改后的該dbus服務聲明消息的消息體轉發到dbus總線上。
10、進一步的,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的dbus方法調用消息的處理包括:
11、代理進程查詢內部維護的服務名映射表和連接映射表來查詢該dbus方法調用消息的新的dbus服務名和目的地,然后修改該dbus方法調用消息的消息體,將其中的dbus服務名修改為查詢得到的新的dbus服務名、目的地修改為查詢得到的目的地,將修改后的消息體轉發到dbus總線上。
12、進一步的,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的斷開dbus連接消息的處理包括:
13、代理進程查詢內部維護的服務名映射表和連接映射表來查詢該斷開dbus連接消息的新的dbus服務名和目的地,然后修改該斷開dbus連接消息的消息體,將其中的dbus服務名修改為查詢得到的新的dbus服務名、目的地修改為查詢得到的目的地,將修改后的消息體轉發到dbus總線上,最后將斷開dbus連接消息的新的dbus服務名和目的地從服務名映射表和連接映射表中刪除。
14、進一步的,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對宿主機中dbus總線向容器中的應用發送的消息轉發dbus消息的處理包括:
15、代理進程查詢內部維護的連接映射表來查詢該消息轉發dbus消息的目的地對應的應用,然后按照查詢到的應用修改該消息轉發dbus消息的消息體中的目的地,使得修改后的消息體可以被轉發給容器中的正確應用。
16、進一步的,所述代理進程作為容器中的守護進程運行,且跟隨容器的創建開始運行,跟隨容器的銷毀而退出運行以使得代理進程的生命周期跟容器的生命周期一致。
17、進一步的,所述代理進程為通過監聽一個unix域套接字的方式來監聽容器內應用的連接請求,監聽到連接請求之后代理進程會從dbus總線上申請一個真實的連接并將應用和連接的目的地記錄在內部維護的一個連接映射表中。
18、本專利技術還提出一種宿主機和容器中相同dbus服務的共存系統,包括相互連接的微處理器和存儲器,所述微處理器被編程或配置以執行任意一項所述宿主機和容器中相同dbus服務的共存方法。
19、本專利技術還提出一種計算機可讀存儲介質,該計算機可讀存儲介質中存儲有計算機程序或指令,該計算機程序或指令被編程或配置以通過處理器執行任意一項所述宿主機和容器中相同dbus服務的共存方法。
20、本專利技術還提出一種計算機程序產品,包括計算機程序或指令,該計算機程序或指令被編程或配置以通過處理器執行任意一項所述宿主機和容器中相同d本文檔來自技高網...
【技術保護點】
1.一種宿主機和容器中相同dbus服務的共存方法,其特征在于,包括:
2.根據權利要求1所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的dbus服務聲明消息的處理包括:
3.根據權利要求2所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的dbus方法調用消息的處理包括:
4.根據權利要求2所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的斷開dbus連接消息的處理包括:
5.根據權利要求2所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線
6.根據權利要求1所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述代理進程作為容器中的守護進程運行,且跟隨容器的創建開始運行,跟隨容器的銷毀而退出運行以使得代理進程的生命周期跟容器的生命周期一致。
7.根據權利要求1所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述代理進程為通過監聽一個unix域套接字的方式來監聽容器內應用的連接請求,監聽到連接請求之后代理進程會從dbus總線上申請一個真實的連接并將應用和連接的目的地記錄在內部維護的一個連接映射表中。
8.一種宿主機和容器中相同dbus服務的共存系統,包括相互連接的微處理器和存儲器,其特征在于,所述微處理器被編程或配置以執行權利要求1~7中任意一項所述宿主機和容器中相同dbus服務的共存方法。
9.一種計算機可讀存儲介質,該計算機可讀存儲介質中存儲有計算機程序或指令,其特征在于,該計算機程序或指令被編程或配置以通過處理器執行權利要求1~7中任意一項所述宿主機和容器中相同dbus服務的共存方法。
10.一種計算機程序產品,包括計算機程序或指令,其特征在于,該計算機程序或指令被編程或配置以通過處理器執行權利要求1~7中任意一項所述宿主機和容器中相同dbus服務的共存方法。
...【技術特征摘要】
1.一種宿主機和容器中相同dbus服務的共存方法,其特征在于,包括:
2.根據權利要求1所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的dbus服務聲明消息的處理包括:
3.根據權利要求2所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的dbus方法調用消息的處理包括:
4.根據權利要求2所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對容器中的應用向宿主機中dbus總線發送的斷開dbus連接消息的處理包括:
5.根據權利要求2所述的宿主機和容器中相同dbus服務的共存方法,其特征在于,所述通過容器中運行的代理進程代理容器中的應用、宿主機中dbus總線之間的通信時,進程代理針對宿主機中dbus總線向容器中的應用發送的消息轉發dbus消息的處理包括:
6....
【專利技術屬性】
技術研發人員:吳高升,劉云鶴,蔣林軒,王迪,陳志開,張鐸,史晶,程啟,
申請(專利權)人:麒麟軟件有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。