您好,登錄后才能下訂單哦!
什么是路由發現?這是我們近期正忙于開發的一項 SmobilerService 功能之一。
“路由發現”目前僅僅作為一個內部代號被使用,最終正式的名稱是否有變化暫時尚不可知,如果你有什么更好的提議,可以和我們一起聊聊。
但總之,我們希望借此解決的是:當 APP 處于純內網時,首次啟動需要連接公網的問題。借助路由發現,純內網 APP 不再需要連接公網即可直接啟動。
APP 初次啟動必須連接公網可能阻礙了一些企業使用 Smobiler 應用的決心。部分企業應用在內網即可運行使用,而首次啟動需連接公網為這些用戶帶來了不便。
為什么 APP 啟動需要連接 Internet 公網
這樣的做法,在技術和使用感受兩個層面,主要是基于以下這一問題的考慮:
當服務器 IP 地址在打包時即寫死在 APP 中時,雖然 APP 可實現純粹的離線啟動,但是服務器地址一旦改變,則所有應用都需要重新打包并再次分發。這顯然是不合理的,沒有應用會為了修改一個 IP 地址而推出新版本。
當安裝應用的人數越多時,這一情況會變的愈發復雜。
因而云平臺在誕生時,為了嘗試解決這一問題,就在應用啟動時為它進行了一次自動的、類似 DNS 解析的行為,告知 APP 服務器所在地址,由此很好的解決了服務器 IP 變更需要充分打包并分發應用的問題。目前,當你的服務器地址發生變化時,只需要登錄云平臺進行修改并保存,則客戶端即可立即得知以恢復鏈接而無需重新分發應用。
如下便是修改服務器 IP 地址的云平臺界面:
你也能在打包時獲得修改服務器 IP 地址無需重新打包的提示:
云平臺在 APP 啟動時,就已經為應用進行了一次 DNS 操作,將你的設備正確的導向了指定服務器,避免了往復和重新打包、分發帶來的資源浪費。
同時,隨著用戶群體的不斷擴大,市場部門希望了解用戶數的增長趨勢等數據以指導今后的推廣工作。鑒于 DNS 功能的存在,我們簡單的對 DNS 解析記錄分類、求和計算,便可以得到這些運營信息,幫助市場部門隨時觀察推廣結果,改進方案。
在 Smobiler 啟動硬件計劃后,這一過程也被用于認證 Smobiler 所銷售的設備的合法性。
因而我們最終打算通過 SmobilerService 路由發現功能來解決內網用戶的問題。首先實現純內網設備可以正常啟動,同時我們仍舊可以驗證 Smobiler 設備。
我們曾設想過使用類似“服務發現”的思路來解決內網問題
所謂服務發現,就是當 APP 與服務器運行在同一局域網中時,APP 能夠通過某種方式,自動發現運行在同一局域網中的服務端 。
這主要涉及 3 種局域網設備發現手段:
單播
廣播
組播
單播很容易理解,簡而言之就是一臺設備在已知另一臺設備 IP 地址的情況下,單獨向其發送消息。
廣播則是一臺設備向整個局域網中,同一網段內的所有設備發送消息。
組播是前兩者的融合和提升。通過一個指定的預留 IP 地址(公網或內網),加入了此地址的設備形成一個組,然后單一設備向該地址發送消息,其余在組內的設備皆可接收。
看樣子廣播和組播能夠實現我們想要的功能。
但不幸的是:
廣播只能向同一網段內的設備發送消息。例如,192.168.1.10 與 192.168.1.20 在同一網段則可互相接收廣播。
但 192.168.1.10 與 192.168.2.20 就不在同一個局域網網段下(注意看倒數第2位),也就不能接收到來自局域網的廣播消息。只有類似 192.168.1.* 的地址才為同一網段。
企業網絡通常較為復雜,單一的網段能夠容納的設備數有限且管理不便,因此通常都會有多個網段,這使得廣播可能在跨網段時,不再有效。以石磨為例,僅僅是多部門協同就有多達數十個網段滿足不同部門的需要,從 10.10.*.* 到 192.168.*.* 均略有覆蓋,廣播的方案已不再可行。
那么,組播呢? 看起來是我們想要的東西。
但最終嘗試時還是發現一定問題。組播可以“跨網段向組內的成員廣播”是事實,但這必須路由器支持組播協議,而該功能默認情況下是關閉的,組播數據包在到達路由器時即被靜默的丟棄不再轉發。且有的路由器為了簡化用戶界面隱藏了設置項,使得這一操作的門檻變的更高。我們不希望這一功能最終變的十分晦澀難以設置,用戶根本無從下手。
為什么路由器默認拋棄組播的數據包?因為很容易想象當局域網內隨意充斥著成百萬上千萬個組播數據包時,網絡會糟糕到什么樣子,同時組播是支持在 Internet 公網上公開的,這很容易給企業網帶來巨大的不可控風險。換言之,你的企業網管可能不愿意打開這項功能。
最終我們退而求其次決定使用最簡單的方式
鑒于上述問題的綜合考量,我們最終還是決定以最容易理解和操作的方式解決內網用戶的問題:
直接打包 SmobilerService 地址,但舍棄了更換 IP 無需打包的便利性。
現在,當 APP 下的 SmobilerService 處于可用狀態時(試用中/永久激活),用戶選擇打包 >=4.8 以上內核版本的應用,就可在通用選項區域看到一個新選項 —— “SmobilerService服務器地址” 。
填寫地址并重新打包應用后,分發給最終用戶安裝,并將 Smobiler 服務端托管在 SmobilerService 上,即可直接在純內網環境下啟動應用,無需再連接公網。
當然像最初提到的,這一方式的優點在于操作簡單便捷,但缺點也十分明顯,一旦內網地址發生改變,你就必須重新打包 SmobilerService 應用并再次分發。這是我們為解決純內網用戶的一直以來的需求而折中便利性與功能性的方案。
請確保云平臺連接可用
我們目前的 SmobilerService 路由發現功能界面長這樣:
你一定留意到了 “Smobiler 云平臺可用性”。是的,你依舊需要確保 SmobilerService 能夠與云平臺正常連接,讓它接替 APP 向云平臺完成設備認證,這樣路由發現個功能才可用。
當連接不再暢通時,你將看到如下界面:
此時,SmobilerService 無法接替設備本身向云平臺發起代理認證,則路由中轉功能不再可用,APP 無法在純內網啟動。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。