先給結(jié)論:完全可以
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)江寧免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
商用實(shí)踐:
已經(jīng)通過很多大公司的商用實(shí)踐,例如B站,YY,包括字節(jié)跳動,國外更不用說了,Google,所以從這個(gè)角度上來說,已經(jīng)經(jīng)過大規(guī)模的實(shí)踐,所以如果你想用用于自己小網(wǎng)站的搭建是沒有任何問題,如果你想用于初創(chuàng)公司的使用,還是需要有自己的一定積累,至少有過實(shí)踐的經(jīng)驗(yàn)
golang周邊:
java在國內(nèi)的強(qiáng)大,得益于它的生態(tài),各種組件百花爭鳴,例如消息中間件rocketmq,分庫分表sharding-jdbc,spring整個(gè)生態(tài),mybatis,jedis,elasticsearch,zookeeper,dubbo等等都非常齊全,這樣可以方便大家能夠快速地進(jìn)行公司業(yè)務(wù)開發(fā),可以減少重復(fù)造輪子
golang這幾年也開始逐漸發(fā)力,各個(gè)組件也開始完善起來,例如etcd,消息中間件nsq,從跟上解決數(shù)據(jù)量巨大問題,pingcap公司開發(fā)了線事務(wù)處理/在線分析處理的融合型數(shù)據(jù)庫產(chǎn)品TIDB,
web框架gin,beego,iris等等,也有各路大神提供了連接各個(gè)其他redis,elasticsearch等等組件,還是比較齊全的,rpc框架也有g(shù)o-mirco,rpcx等等,只要你想要用,基本上來說,golang的生態(tài)周邊還是比較全的,方便大家使用
golang的模塊管理
java的方便還得益于它的包管理,maven,gradle,這樣大大方便了大家的使用,可以提供大家的開發(fā)效率,而golang從1.12開始也開始有了自己內(nèi)嵌的包管理工具
golang的新特性
在這邊我并不是說golang好于java,但是golang畢竟屬于新一代的語言,它的并發(fā)模型CSP,和java的并發(fā)模型是有很大的區(qū)別的,并發(fā)模型的易用性,從根本上來說,是好于java的
再說golang目前最大的優(yōu)勢,docker和kubernetes,是目前github上最火的前20名項(xiàng)目,并且都是golang寫的,所以golang和docker,kubernetes集成有天然的優(yōu)勢
綜上所述,我覺得golang可以開發(fā)商用網(wǎng)站,不管你是做大型網(wǎng)站還是小型demo,都可以滿足你的要求
相信社區(qū)上現(xiàn)在還有不少人對前后端交互或者遠(yuǎn)程系統(tǒng)間調(diào)用的理解還是停留在 http 調(diào)用的層面。以 http 協(xié)議的形式發(fā)起的調(diào)用,其實(shí)就是一種 rpc 調(diào)用。在分布式/微服務(wù)環(huán)境中,前端/客戶端發(fā)起的一個(gè)調(diào)用,可能會經(jīng)過后端數(shù)十個(gè)服務(wù),所以每個(gè)服務(wù)之間的通信效率就顯得非常重要。http1.x 是文本協(xié)議,文本協(xié)議的傳輸效率比較低下,這必然會導(dǎo)致整個(gè)鏈路的耗時(shí)成本增加。所以如何解決分布式/微服務(wù)環(huán)境中的服務(wù)間的通信問題,是我們通向一個(gè)資深工程師的必經(jīng)之路。這就是 rpc 框架設(shè)計(jì)的初衷。
一提到 rpc ,大家可能就條件反射地想到 java 的 dubbo 和 google 的 grpc。但是假如把對 dubbo 和 grpc 了解能到 50% 以上的人篩選一遍,可能就十不足一。為什么呢?
因?yàn)榻^大多數(shù)開發(fā)者僅僅是框架的使用者,很少會去看框架的源碼。就算去看源碼,可能也會非常吃力、云里霧里。原因有二:
我們的 gorpc 框架就 提供給了大家一個(gè)各項(xiàng)功能完整的,剛實(shí)現(xiàn)從 0 到 1這個(gè)過程的框架。并且一步步給大家解析了每個(gè)功能的具體實(shí)現(xiàn)思路和實(shí)現(xiàn)過程,這是非常難得的 。
本課程主要從一個(gè)開發(fā)者的角度,從技術(shù)選型到編碼實(shí)現(xiàn),從 0 到 1去實(shí)現(xiàn)一款高性能 rpc 框架,主要技術(shù)點(diǎn)包括 client 和 server 通訊、超時(shí)機(jī)制實(shí)現(xiàn)、協(xié)議的制定、傳輸層 transport 實(shí)現(xiàn)、編解碼、序列化、連接池、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、攔截器、分布式鏈路追蹤、認(rèn)證鑒權(quán)、組件化、插件體系、框架性能優(yōu)化等。
課程特色
框架特色
我們知道,其實(shí)世面上有非常多的 rpc 框架了。java 有阿里的 dubbo、微博的 motan 等,go 有 grpc、rpcx、go-micro 等。那 gorpc 框架跟這些框架有什么優(yōu)勢呢?個(gè)人進(jìn)行總結(jié)一下,
所以如果我們自己去實(shí)現(xiàn)一款框架,我們希望這款框架的核心特點(diǎn)是: 簡單易用、高性能、可插拔
框架架構(gòu)如下:
具體特性如下:
章節(jié)預(yù)覽思維導(dǎo)圖如下:
為什么使用 go 實(shí)現(xiàn)
相比于 java 和 c++ 的厚重性和一些 歷史 包袱而言,go 更加簡潔、優(yōu)雅。并且 go 天然支持高并發(fā)。這些特點(diǎn)使得 go 目前得到越來越廣泛的關(guān)注和使用。我們使用 go 實(shí)現(xiàn)是因?yàn)?go 的這些語言特性,同時(shí)也因?yàn)?go 實(shí)現(xiàn)的框架源碼的非常易讀,有助于學(xué)習(xí)和成長。
當(dāng)分別處于大小端模式下的內(nèi)容存放如下
(1)大端模式存儲(存儲地址為16位)
地址 數(shù)據(jù)
0x0004(高地址) 0x44
0x0003 0x33
0x0002 0x22
0x0001(低地址) 0x11
(2)小端模式存儲(存儲地址為16位)
地址 數(shù)據(jù)
0x0004(高地址) 0x11
0x0003 0x22
0x0002 0x33
0x0001(低地址) 0x44
在前面也簡單闡述了大小端序的定義并結(jié)合簡單實(shí)例來說明,接下來會給出詳細(xì)實(shí)例來說明:
1、大端序(Big-Endian):或稱大尾序
一個(gè)類型: int32 的數(shù) 0X0A0B0C0D的內(nèi)存存放情況
數(shù)據(jù)是以8bits為單位
2、小端序(little-endian):或稱小尾序
比如0x00000001
大端序:內(nèi)存低比特位 00000000 00000000 00000000 00000001 內(nèi)存高比特位
小端序:內(nèi)存低比特位 10000000 00000000 00000000 00000000 內(nèi)存高比特位
其實(shí)在前面羅列出那么東西,最終是為了接下來講述的在golang中涉及到網(wǎng)絡(luò)傳輸、文件存儲時(shí)的選擇。一般來說網(wǎng)絡(luò)傳輸?shù)淖止?jié)序,可能是大端序或者小端序,取決于軟件開始時(shí)通訊雙方的協(xié)議規(guī)定。TCP/IP協(xié)議RFC1700規(guī)定使用“大端”字節(jié)序?yàn)榫W(wǎng)絡(luò)字節(jié)序,開發(fā)的時(shí)候需要遵守這一規(guī)則。默認(rèn)golang是使用大端序。詳情見golang中包encoding/binary已提供了大、小端序的使用
輸出結(jié)果:
16909060 use big endian:
int32 to bytes: [1 2 3 4] ### [0001 0002 0003 0004]
bytes to int32: 16909060
16909060 use little endian:
int32 to bytes: [4 3 2 1] ### [0004 0003 0002 0001]
bytes to int32: 16909060
在RPCX框架中關(guān)于RPC調(diào)用過程涉及的傳遞消息進(jìn)行編碼的,采用的就是大端序模式