婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 七牛云存儲(chǔ)使用Go語(yǔ)言架設(shè)網(wǎng)站的經(jīng)驗(yàn)分享

七牛云存儲(chǔ)使用Go語(yǔ)言架設(shè)網(wǎng)站的經(jīng)驗(yàn)分享

熱門標(biāo)簽:南京400電話辦理到易號(hào)網(wǎng) 外呼系統(tǒng)2273649Z空間 福州公司外呼系統(tǒng)加盟 地圖標(biāo)注不顯示 河北crm外呼系統(tǒng)平臺(tái) 周口權(quán)威的不封卡電話外呼系統(tǒng) 百應(yīng)電話機(jī)器人價(jià)值 金蘭灣地圖標(biāo)注app 河南語(yǔ)音外呼系統(tǒng)平臺(tái)

Go 語(yǔ)言是谷歌 2009 年首次推出并在 2012 年正式發(fā)布的一種全新的編程語(yǔ)言,可以在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說(shuō):七牛之所以開(kāi)發(fā) Go,是因?yàn)檫^(guò)去10多年間軟件開(kāi)發(fā)的難度令人沮喪。Google 對(duì) Go 寄予厚望,其設(shè)計(jì)是讓軟件充分發(fā)揮多核心處理器同步多工的優(yōu)點(diǎn),并可解決面向?qū)ο蟪绦蛟O(shè)計(jì)的麻煩。它具有現(xiàn)代的程序語(yǔ)言特色,如垃圾回收,幫助開(kāi)發(fā)者處理瑣碎但重要的內(nèi)存管理問(wèn)題。Go 的速度也非常快,幾乎和 C 或 C++ 程序一樣快,且能夠快速開(kāi)發(fā)應(yīng)用程序。

最初去評(píng)估Go語(yǔ)言最重要的原因是,七牛沒(méi)有找到一門合適的語(yǔ)言。從云計(jì)算領(lǐng)域的主要技術(shù)方案看,最受歡迎的是C++和Java。七牛知道亞馬遜是用了Java。我個(gè)人嘗試Java做服務(wù)端開(kāi)發(fā)是在2007年金山實(shí)驗(yàn),Java的風(fēng)格比較拘束或嚴(yán)謹(jǐn),與我推崇的編程風(fēng)格不合,并且在分布式系統(tǒng)開(kāi)發(fā)上沒(méi)有顯著的優(yōu)勢(shì),所以才會(huì)關(guān)注Erlang(也因此有了ECUG社區(qū))、Go等小眾語(yǔ)言。在我評(píng)估完Go語(yǔ)言后,我認(rèn)為它是云計(jì)算領(lǐng)域最合適的開(kāi)發(fā)語(yǔ)言。

如果說(shuō)到 Java 曾經(jīng)的流行,我們會(huì)聯(lián)想到 SSH(Struts + Spring + Hibernate);如果提到 Python,也會(huì)聯(lián)想到 Django;如果提到 Ruby,會(huì)聯(lián)想到 Ruby on Rails;如果提到 JavaScript,會(huì)聯(lián)想到 NodeJS;如果提到 PHP,更是一堆長(zhǎng)江后浪推前浪前浪死在沙灘上的 Web 開(kāi)發(fā)框架。這些編程語(yǔ)言社區(qū)的繁榮昌盛無(wú)一例外都和 Web 開(kāi)發(fā)息息相關(guān),且最終沉淀下來(lái)的都是各種五花八門各有千秋的眾多 Web 開(kāi)發(fā)框架。可以說(shuō),我們當(dāng)前所面臨和 Web 開(kāi)發(fā)的技術(shù)選型,從未有過(guò)如此的繁榮。繁榮的背后,襯托的是一個(gè)大江東流去不復(fù)還的 PC Web 時(shí)代。


穩(wěn)定性來(lái)說(shuō),云計(jì)算都是假設(shè)單機(jī)是可以宕機(jī)的,要在單機(jī)的不可靠下讓整個(gè)集群可靠(這種宕機(jī)甚至不為用戶所感知)。七牛并不擔(dān)心單個(gè)進(jìn)程的穩(wěn)定性,哪怕Go程序每天會(huì)掛一次,對(duì)七牛而言,也是可以接受的。

Go語(yǔ)言入門門檻非常之低。有任何其他語(yǔ)言的背景,學(xué)習(xí)Go語(yǔ)言只需要一周的時(shí)間。**七牛面試從來(lái)不問(wèn)你會(huì)不會(huì)Go語(yǔ)言。七牛關(guān)心的是開(kāi)發(fā)者的能力與七牛業(yè)務(wù)的匹配度,比如他算法基礎(chǔ)如何、是否擅長(zhǎng)網(wǎng)絡(luò)編程、是否適合創(chuàng)業(yè)(對(duì)事情的責(zé)任感)等等。

Go 語(yǔ)言的哪些特點(diǎn)最吸引人?

并發(fā)

Go 最大的特色就是在語(yǔ)言層面天生支持并發(fā),不需要像其他大多數(shù)編程語(yǔ)言那樣需要開(kāi)發(fā)者自行實(shí)現(xiàn)或借助第三方類庫(kù)實(shí)現(xiàn)并發(fā)編程,Go 在語(yǔ)言級(jí)別支持的并發(fā)編程,其邏輯簡(jiǎn)化得通俗易懂簡(jiǎn)單好上手。

性能

不同于大多數(shù)腳本或解釋性的高階編程語(yǔ)言,用 Go 編寫的代碼直接了當(dāng)編譯成機(jī)器碼高效執(zhí)行。

簡(jiǎn)潔

25 個(gè)關(guān)鍵字即表達(dá)你能想到的所有招式,沒(méi)有也不需要有任何多余,想干啥事就 go 一下。

跨平臺(tái)

x86、AMD64 (x86_64)、ARM;Linux、Windows、Darwin (OSX)、FreeBSD、Android (計(jì)劃Go 1.4) 幾乎全平臺(tái)支持,真正做到一份源碼,隨處編譯,到處運(yùn)行。


Go 語(yǔ)言都有哪些常見(jiàn)的應(yīng)用場(chǎng)景?

作為一個(gè) Go 語(yǔ)言的重度用戶來(lái)看,當(dāng)前除了不適合拿來(lái)造操作系統(tǒng)以外在操作系統(tǒng)之上應(yīng)用級(jí)的事情都能干。再更具體一點(diǎn),比如說(shuō)適用于這樣一些使用場(chǎng)景:

系統(tǒng)應(yīng)用

以前要用 C/C++ 做的系統(tǒng)應(yīng)用,現(xiàn)在都可以用 Go 來(lái)寫,事半功倍,而且 Go 完美包容 C 源代碼,兩者互相調(diào)用還可以混合編譯從而無(wú)縫集成。

網(wǎng)絡(luò)應(yīng)用

包含了常見(jiàn)的服務(wù)端編程比如 Web 和 API Service,以前用 PHP / Python / Ruby / Java 干的事情現(xiàn)在都可以用 Go 更加簡(jiǎn)單清晰的來(lái)寫。再比如還可以拿來(lái)做一些 Proxy(代理)如網(wǎng)絡(luò)穿透軟件等,你懂的。

分布式系統(tǒng)

基于 Go 強(qiáng)大的系統(tǒng)編程加網(wǎng)絡(luò)編程,打造各種跨網(wǎng)絡(luò)的分布式系統(tǒng)服務(wù),Go 社區(qū)有不少和分布式系統(tǒng)相關(guān)的開(kāi)源產(chǎn)物。

各種形態(tài)的存儲(chǔ)和數(shù)據(jù)庫(kù)應(yīng)用

比如 groupcache,influxdb 等。

客戶端應(yīng)用

包括帶界面的桌面軟件,以及后續(xù)可以想像的移動(dòng)端應(yīng)用(比如對(duì) Android 的支持)。

云服務(wù)(PaaS)

如基于 Go 打造的七牛云存儲(chǔ)(分布式對(duì)象存儲(chǔ)系統(tǒng)),比如基于 Go 編寫的 Docker(一款開(kāi)源的容器虛擬化產(chǎn)物)。

Go 能做的事情,包含但不限于以上羅列的使用場(chǎng)景。

比如 Web 開(kāi)發(fā)。大多數(shù)編程語(yǔ)言之上的 Web 開(kāi)發(fā)框架都是遵照 MVC 的處理流程去開(kāi)發(fā) Web 應(yīng)用:Model 部分封裝數(shù)據(jù),Controller 部分處理業(yè)務(wù)邏輯,View 部分植入變量填充模板頁(yè)面。而大部分 Web 框架關(guān)于 MVC 的三部分都是在 Server-side 處理,比如對(duì) View 部分的處理都是在 Server-side 通過(guò)程序動(dòng)態(tài)對(duì)模版變量求值后再拼接組裝成 HTML 頁(yè)面輸出給瀏覽器去呈現(xiàn)。而 Go 開(kāi)發(fā) Web 應(yīng)用,并不依賴任何 Web 開(kāi)發(fā)框架,用內(nèi)置的標(biāo)準(zhǔn)庫(kù)就可以輕而易舉地實(shí)現(xiàn):比如使用 net/http 標(biāo)準(zhǔn)庫(kù)就可以數(shù)行代碼構(gòu)建一個(gè)完整的 Web 骨架應(yīng)用;再比如,通過(guò)關(guān)鍵字 struct 封裝一個(gè)數(shù)據(jù)結(jié)構(gòu)就可以表達(dá)原本 MVC 框架中需要用厚重的 ORM (Object-Relational Mapping) 才能表達(dá)的那部分。大道至簡(jiǎn),這可以說(shuō)是 Go 的哲學(xué)。在 View 這一層,Go 也有相應(yīng)標(biāo)準(zhǔn)庫(kù)提供支持,但更推薦的做法,是當(dāng)下比較流行的 MVVM (Model-View-ViewModel):Server-side 只輸出 JSON,瀏覽器 DOM 作為 View 層,前端 JavaScript 充當(dāng) Contoller 部分;這樣,不僅減少了 Server-side 的資源消耗還有中間傳輸?shù)木W(wǎng)絡(luò)流量,而且前端可以更靈活和更豐富,后端也可以更輕盈和更高效,也更有利于項(xiàng)目的分工和協(xié)作。


Go 語(yǔ)言在七牛中都開(kāi)發(fā)了些什么服務(wù)?在七牛的代碼量中,Go 語(yǔ)言使用占多少比例?

七牛主要使用 Go 開(kāi)發(fā)了以下服務(wù)和工具:

分布式存儲(chǔ)系統(tǒng) ( Distributed Key/Value Storage)
數(shù)據(jù)處理服務(wù) (Data Processing)
網(wǎng)絡(luò)接口服務(wù) (RESTful API Service)
消息隊(duì)列服務(wù)(Message Queue Service)
日志處理系統(tǒng) (Log Service)
Web 網(wǎng)站 (不含前端 JavaScript)
CLI 命令行和 GUI 圖形界面工具
其他輔助工具
總的來(lái)講,Go 在七牛七牛的工程中代碼覆蓋率超過(guò) 90% 。還有 10% 不能覆蓋的原因是七牛給開(kāi)發(fā)者自助使用的 Web 界面需要用 JavaScript 編程來(lái)實(shí)現(xiàn)酷炫的前端,以及七牛為開(kāi)發(fā)者準(zhǔn)備了多達(dá)超過(guò) 10 種編程語(yǔ)言的 SDK 。

我們?cè)賮?lái)看看 Go 在當(dāng)下這個(gè)多核時(shí)代的作為。不得不說(shuō),Go 最大的特色就是在語(yǔ)言層面天然支持并發(fā),在 Go 程序里邊,你可以通過(guò)在一個(gè)函數(shù)調(diào)用前使用關(guān)鍵字 go 即可讓該函數(shù) func 運(yùn)行成為一個(gè)獨(dú)立的 goroutine,goroutine 可以理解成一種比線程更加輕盈更省開(kāi)銷的輕量級(jí)協(xié)程。Go 的并發(fā)模型就是通過(guò)系統(tǒng)的線程來(lái)多路派遣這些獨(dú)立函數(shù)的執(zhí)行,使得每個(gè)用關(guān)鍵字 go 執(zhí)行調(diào)用的函數(shù)可以運(yùn)行成為一個(gè)單位協(xié)程。當(dāng)⼀個(gè)協(xié)程阻塞的時(shí)候,調(diào)度器就會(huì)自動(dòng)把其他協(xié)程安排到另外的線程中去執(zhí)行,從而實(shí)現(xiàn)程序的無(wú)等待并行化運(yùn)行。且調(diào)度的開(kāi)銷非常小,單核 CPU 調(diào)度的規(guī)模不下于每秒百萬(wàn)次,這使得我們能夠創(chuàng)建大量的 goroutines,從而可以很輕松地編寫并發(fā)程序達(dá)到我們想要的目的。

同時(shí),Go 在語(yǔ)言層面還引入了 channel 這一內(nèi)置類型來(lái)實(shí)現(xiàn)并發(fā)執(zhí)行體 goroutines 之間的消息傳遞,通信靠 channels 來(lái)傳遞消息。Go 遵循 CSP(Communicating sequential processes) 并發(fā)模型,通過(guò)通信來(lái)共享內(nèi)存而不是用共享內(nèi)存的方式進(jìn)行通信。Go 的并發(fā)里邊沒(méi)有共享內(nèi)存,更沒(méi)有內(nèi)存鎖,這一切都有利于進(jìn)行更為安全和簡(jiǎn)單的并行程序編寫。

標(biāo)簽:臺(tái)州 瀘州 南京 撫州 自貢 贛州 呼和浩特 長(zhǎng)治

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《七牛云存儲(chǔ)使用Go語(yǔ)言架設(shè)網(wǎng)站的經(jīng)驗(yàn)分享》,本文關(guān)鍵詞  七牛,云,存儲(chǔ),使用,語(yǔ)言,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《七牛云存儲(chǔ)使用Go語(yǔ)言架設(shè)網(wǎng)站的經(jīng)驗(yàn)分享》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于七牛云存儲(chǔ)使用Go語(yǔ)言架設(shè)網(wǎng)站的經(jīng)驗(yàn)分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 金门县| 墨江| 兴国县| 藁城市| 正蓝旗| 海宁市| 张北县| 郧西县| 平远县| 北票市| 吉木萨尔县| 蒙山县| 陇西县| 西宁市| 武强县| 永福县| 永昌县| 鞍山市| 海丰县| 竹溪县| 河池市| 黄骅市| 蛟河市| 饶河县| 平度市| 安多县| 新建县| 缙云县| 凌源市| 大埔县| 搜索| 东宁县| 岳阳县| 喀什市| 上高县| 永昌县| 深水埗区| 利津县| 钟祥市| 旺苍县| 南安市|