go語言可以寫物聯網嗎

2022-12-28 18:00:29

可以寫。在物聯網領域,用Golang可以高效的接入並管理數以百萬的裝置;並使用Golang的各種前沿技術實時分析資料並建立資料包告。用Golang開發物聯網平臺的原因:1、Go的三個作者能力強;2、Go的效能僅次於C/C++;3、入門非常快,大多程式設計師1-2周都可以上手;4、並行特性好;5、能相容大量的硬體裝置;6、有良好的社群支援;7、可用乾淨的程式碼幫助開發人員加快速度。

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

如果你的預算比較少,可能你第一個要考慮用Golang。Golang的並行特性和出色的效能,可以充分的利用現有硬體,而不像Java、Python會造成一定的浪費,你需要花更多錢。

在物聯網領域,用Golang可以高效的接入並管理數以百萬的裝置。並使用Golang的各種前沿技術實時分析資料並建立資料包告。

如下是我們選擇Golang開發ThingsPanel物聯網系統的原因:

創始人

Go的三個作者分別是: Rob Pike(羅伯.派克),Ken Thompson(肯.湯普森)和Robert Griesemer(羅伯特.格利茨默) 。

Rob Pike:曾是貝爾實驗室(Bell Labs)的Unix團隊,和Plan 9作業系統計劃的成員。他與Thompson共事多年,並共創出廣泛使用的UTF-8 字元編碼。

Ken Thompson:主要是B語言、C語言的作者、Unix之父。1983年圖靈獎(Turing Award)和1998年美國國家技術獎(National Medal of Technology)得主。他與Dennis Ritchie是Unix的原創者。Thompson也發明了後來衍生出C語言的B程式語言。

Robert Griesemer:在開發Go之前是Google V8、Chubby和HotSpot JVM的主要貢獻者。

效能僅次於C/C++

GoLang是一種編譯語言,可以編譯為機器程式碼,編譯後的二進位制檔案可以直接部署到目標機器而無需額外的依賴。效能優於那些解釋語言。

下圖是一個測試,看起來Golang的速度還是很厲害的。

1.png

常見語言的效能對比(圖片作者:我不想種地)

如果還有更高的要求,還可以在Go程式中嵌入C程式碼,以便可以使用許多功能強大的C工具庫。

入門非常快,大多程式設計師1-2周都可以上手。

PHP程式設計師轉Golang,2天可以上手改bug。幾周後就能較為正常的開展工作。

在各類技術人員溝通的時候,詢問他們,你多久會從PHP或者Java轉到Golang,回答大多是1-2周,事實也是如此。

並行特性

這可能是GoLang最受好評的特色。它可以充分利用多核功能。GoLang使用goroutine來實現並行性,它提供了一個非常優雅的goroutine排程程式系統,可以很容易地生成數百萬個goroutine。堆疊使用也可以動態擴充套件/收縮,這使記憶體使用更加智慧。這與Java執行緒不同,後者通常只允許建立數千個執行緒。

相容大量的硬體裝置。

各種CPU架構都支援,不管是X86伺服器,還是ARM邊緣裝置,可以直接編譯成機器碼,部署扔上去一個檔案就完成。

一個52PHP使用者在他的cnblogs部落格說:通過超級簡單的交叉編譯,僅需更改環境變數。(花了我兩天時間編譯一個imagemagick到arm平臺)。

如果你有很多邊緣裝置,Golang是一個好選擇。

當然有些人說Java和PHP也可以啊,問題是騎著毛驢也可以去送外賣,問題是多慢啊!

良好的社群支援。

沒有牛人佈道,菜鳥就沒有師傅領進門。沒有分享,學習就難上加難。Golang有較好的社群支援。

全球最大的技術問答網站Stack Overflow 上的程式語言受歡迎度:

2.png

參照自:2021 程式語言排行榜,作者:小新帶你學程式設計

你能查到資料,你提問題,有人給你回答,這個在開發中很重要。

用乾淨的程式碼幫助開發人員加快速度。

「乾淨架構」是 Robert C. Martin (Uncle Bob)(About,Robert C·Martin Robert C·Martin的作品(16))在 2012 年總結現有的系統架構並提出的一個理念。

在文中,他提出的乾淨架構是這樣的:

  • 獨立於框架。該體系結構不依賴於某些功能豐富的軟體庫的存在。這允許您使用各種各樣的框架作為工具。
  • 可測試的。業務規則可以在沒有 UI、資料庫、Web 伺服器或任何其他外部元素(如第三方RPC服務)的情況下進行測試。
  • 獨立於使用者介面。使用者介面可以很容易地更改,而不必更改系統的其他部分。例如,Web 使用者介面可以替換為控制檯介面,而不必更改業務規則。
  • 獨立於資料庫。您可以將 Oracle 或 SQL Server 換成 Mongo, BigTable, CouchDB
    或其他東西。您的業務規則未繫結到資料庫。

獨立於任何外部機構(下圖中的外層)。實際上,您的業務規則根本不瞭解外部世界。

3.png

圖中的總體思想是依賴的方向只能是從外向內。也就是說,外部的圈依賴內部的圈,內部的圈不能依賴外部。外層中命名和資料格式不能影響內層。

這些簡單的規則和約定保證了系統始終容易理解、容易開發、容易維護。

案例就是說服力

除了大名鼎鼎的Docker,完全用GO實現。業界最為火爆的容器編排管理系統kubernetes完全用GO實現。之後的Docker Swarm,完全用GO實現。除此之外,還有各種有名的專案,如etcd/consul/flannel,七牛雲端儲存等等 均使用GO實現。有人說,GO語言之所以出名,是趕上了雲時代。但為什麼不能換種說法?也是GO語言促使了雲的發展。

除了雲專案外,還有像今日頭條、UBER這樣的公司,他們也使用GO語言對自己的業務進行了徹底的重構。

【相關推薦:Go視訊教學、】

以上就是go語言可以寫物聯網嗎的詳細內容,更多請關注TW511.COM其它相關文章!