溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SmobilerService 新功能 “路由發(fā)現(xiàn)”

發(fā)布時間:2020-07-01 21:26:04 來源:網(wǎng)絡 閱讀:433 作者:smobiler 欄目:編程語言

什么是路由發(fā)現(xiàn)?這是我們近期正忙于開發(fā)的一項 SmobilerService 功能之一。


“路由發(fā)現(xiàn)”目前僅僅作為一個內部代號被使用,最終正式的名稱是否有變化暫時尚不可知,如果你有什么更好的提議,可以和我們一起聊聊。

但總之,我們希望借此解決的是:當 APP 處于純內網(wǎng)時,首次啟動需要連接公網(wǎng)的問題。借助路由發(fā)現(xiàn),純內網(wǎng) APP 不再需要連接公網(wǎng)即可直接啟動。

APP 初次啟動必須連接公網(wǎng)可能阻礙了一些企業(yè)使用 Smobiler 應用的決心。部分企業(yè)應用在內網(wǎng)即可運行使用,而首次啟動需連接公網(wǎng)為這些用戶帶來了不便。


為什么 APP 啟動需要連接 Internet 公網(wǎng)

這樣的做法,在技術和使用感受兩個層面,主要是基于以下這一問題的考慮:

服務器 IP 地址在打包時即寫死在 APP 中時,雖然 APP 可實現(xiàn)純粹的離線啟動,但是服務器地址一旦改變,則所有應用都需要重新打包并再次分發(fā)。這顯然是不合理的,沒有應用會為了修改一個 IP 地址而推出新版本。

當安裝應用的人數(shù)越多時,這一情況會變的愈發(fā)復雜。


因而云平臺在誕生時,為了嘗試解決這一問題,就在應用啟動時為它進行了一次自動的、類似 DNS 解析的行為,告知 APP 服務器所在地址,由此很好的解決了服務器 IP 變更需要充分打包并分發(fā)應用的問題。目前,當你的服務器地址發(fā)生變化時,只需要登錄云平臺進行修改并保存,則客戶端即可立即得知以恢復鏈接而無需重新分發(fā)應用。

如下便是修改服務器 IP 地址的云平臺界面:

SmobilerService 新功能 “路由發(fā)現(xiàn)”

你也能在打包時獲得修改服務器 IP 地址無需重新打包的提示:

SmobilerService 新功能 “路由發(fā)現(xiàn)”


云平臺在 APP 啟動時,就已經(jīng)為應用進行了一次 DNS 操作,將你的設備正確的導向了指定服務器,避免了往復和重新打包、分發(fā)帶來的資源浪費。

同時,隨著用戶群體的不斷擴大,市場部門希望了解用戶數(shù)的增長趨勢等數(shù)據(jù)以指導今后的推廣工作。鑒于 DNS 功能的存在,我們簡單的對 DNS 解析記錄分類、求和計算,便可以得到這些運營信息,幫助市場部門隨時觀察推廣結果,改進方案。

在 Smobiler 啟動硬件計劃后,這一過程也被用于認證 Smobiler 所銷售的設備的合法性。


因而我們最終打算通過 SmobilerService 路由發(fā)現(xiàn)功能來解決內網(wǎng)用戶的問題。首先實現(xiàn)純內網(wǎng)設備可以正常啟動,同時我們仍舊可以驗證 Smobiler 設備。


我們曾設想過使用類似“服務發(fā)現(xiàn)”的思路來解決內網(wǎng)問題

所謂服務發(fā)現(xiàn),就是當 APP 與服務器運行在同一局域網(wǎng)中時,APP 能夠通過某種方式,自動發(fā)現(xiàn)運行在同一局域網(wǎng)中的服務端 。

這主要涉及 3 種局域網(wǎng)設備發(fā)現(xiàn)手段:

  • 單播

  • 廣播

  • 組播


單播很容易理解,簡而言之就是一臺設備在已知另一臺設備 IP 地址的情況下,單獨向其發(fā)送消息。

廣播則是一臺設備向整個局域網(wǎng)中,同一網(wǎng)段內的所有設備發(fā)送消息。

組播是前兩者的融合和提升。通過一個指定的預留 IP 地址(公網(wǎng)或內網(wǎng)),加入了此地址的設備形成一個組,然后單一設備向該地址發(fā)送消息,其余在組內的設備皆可接收。


看樣子廣播和組播能夠實現(xiàn)我們想要的功能。

但不幸的是:

  • 廣播只能向同一網(wǎng)段內的設備發(fā)送消息。例如,192.168.1.10 與 192.168.1.20 在同一網(wǎng)段則可互相接收廣播。


但 192.168.1.10 與 192.168.2.20 就不在同一個局域網(wǎng)網(wǎng)段下(注意看倒數(shù)第2位),也就不能接收到來自局域網(wǎng)的廣播消息。只有類似 192.168.1.* 的地址才為同一網(wǎng)段。

企業(yè)網(wǎng)絡通常較為復雜,單一的網(wǎng)段能夠容納的設備數(shù)有限且管理不便,因此通常都會有多個網(wǎng)段,這使得廣播可能在跨網(wǎng)段時,不再有效。以石磨為例,僅僅是多部門協(xié)同就有多達數(shù)十個網(wǎng)段滿足不同部門的需要,從 10.10.*.* 到 192.168.*.* 均略有覆蓋,廣播的方案已不再可行。


  • 那么,組播呢? 看起來是我們想要的東西。


但最終嘗試時還是發(fā)現(xiàn)一定問題。組播可以“跨網(wǎng)段向組內的成員廣播”是事實,但這必須路由器支持組播協(xié)議,而該功能默認情況下是關閉的,組播數(shù)據(jù)包在到達路由器時即被靜默的丟棄不再轉發(fā)。且有的路由器為了簡化用戶界面隱藏了設置項,使得這一操作的門檻變的更高。我們不希望這一功能最終變的十分晦澀難以設置,用戶根本無從下手。


為什么路由器默認拋棄組播的數(shù)據(jù)包?因為很容易想象當局域網(wǎng)內隨意充斥著成百萬上千萬個組播數(shù)據(jù)包時,網(wǎng)絡會糟糕到什么樣子,同時組播是支持在 Internet 公網(wǎng)上公開的,這很容易給企業(yè)網(wǎng)帶來巨大的不可控風險。換言之,你的企業(yè)網(wǎng)管可能不愿意打開這項功能。


最終我們退而求其次決定使用最簡單的方式

鑒于上述問題的綜合考量,我們最終還是決定以最容易理解和操作的方式解決內網(wǎng)用戶的問題:

直接打包 SmobilerService 地址,但舍棄了更換 IP 無需打包的便利性。

現(xiàn)在,當 APP 下的 SmobilerService 處于可用狀態(tài)時(試用中/永久激活),用戶選擇打包 >=4.8 以上內核版本的應用,就可在通用選項區(qū)域看到一個新選項 —— “SmobilerService服務器地址” 。

SmobilerService 新功能 “路由發(fā)現(xiàn)”


填寫地址并重新打包應用后,分發(fā)給最終用戶安裝,并將 Smobiler 服務端托管在 SmobilerService 上,即可直接在純內網(wǎng)環(huán)境下啟動應用,無需再連接公網(wǎng)。

當然像最初提到的,這一方式的優(yōu)點在于操作簡單便捷,但缺點也十分明顯,一旦內網(wǎng)地址發(fā)生改變,你就必須重新打包 SmobilerService 應用并再次分發(fā)。這是我們?yōu)榻鉀Q純內網(wǎng)用戶的一直以來的需求而折中便利性與功能性的方案。


請確保云平臺連接可用

我們目前的 SmobilerService 路由發(fā)現(xiàn)功能界面長這樣:

SmobilerService 新功能 “路由發(fā)現(xiàn)”

你一定留意到了 “Smobiler 云平臺可用性”。是的,你依舊需要確保 SmobilerService 能夠與云平臺正常連接,讓它接替 APP 向云平臺完成設備認證,這樣路由發(fā)現(xiàn)個功能才可用。

當連接不再暢通時,你將看到如下界面:

SmobilerService 新功能 “路由發(fā)現(xiàn)”

此時,SmobilerService 無法接替設備本身向云平臺發(fā)起代理認證,則路由中轉功能不再可用,APP 無法在純內網(wǎng)啟動。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI