創(chuàng)建 PayPal 的目的是使金融服務(wù)民主化,并使個(gè)人和企業(yè)能夠加入并在全球經(jīng)濟(jì)中蓬勃發(fā)展。這項(xiàng)工作的核心是 PayPal 的支付平臺(tái),該平臺(tái)使用專有技術(shù)和第三方技術(shù)的組合來(lái)高效、安全地促進(jìn)全球數(shù)百萬(wàn)商家和消費(fèi)者之間的交易。隨著支付平臺(tái)變得越來(lái)越大、越來(lái)越復(fù)雜,PayPal 尋求對(duì)其系統(tǒng)進(jìn)行現(xiàn)代化改造并縮短新應(yīng)用程序的上市時(shí)間。

十載的克山網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整克山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“克山網(wǎng)站設(shè)計(jì)”,“克山網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
Go 在生成干凈、高效的代碼方面的有著極高的價(jià)值。這些代碼可以隨著軟件部署的擴(kuò)展而輕松擴(kuò)展,這使得該語(yǔ)言非常適合支持 PayPal 的目標(biāo)。
支付處理平臺(tái)的核心是 PayPal 用 C++ 開(kāi)發(fā)的專有 NoSQL 數(shù)據(jù)庫(kù)。然而,代碼的復(fù)雜性大大降低了開(kāi)發(fā)人員發(fā)展平臺(tái)的能力。Go 的簡(jiǎn)單代碼布局、goroutine(輕量級(jí)執(zhí)行線程)和通道(用作連接并發(fā) goroutine 的管道)使 Go 成為 NoSQL 開(kāi)發(fā)團(tuán)隊(duì)簡(jiǎn)化和現(xiàn)代化平臺(tái)的自然選擇。
作為概念驗(yàn)證,一個(gè)開(kāi)發(fā)團(tuán)隊(duì)花了六個(gè)月的時(shí)間學(xué)習(xí) Go 并在 Go 中從頭開(kāi)始重新實(shí)現(xiàn) NoSQL 系統(tǒng),在此期間,他們還提供了有關(guān)如何在 PayPal 更廣泛地實(shí)施 Go 的見(jiàn)解。截至今天,已遷移 30% 的集群以使用新的 NoSQL 數(shù)據(jù)庫(kù)。
隨著 PayPal 的平臺(tái)變得越來(lái)越復(fù)雜,Go 提供了一種輕松簡(jiǎn)化大規(guī)模創(chuàng)建和運(yùn)行軟件的復(fù)雜性的方法。該語(yǔ)言為 PayPal 提供了出色的庫(kù)和快速工具,以及并發(fā)、垃圾收集和類型安全。
借助 Go,PayPal 使其開(kāi)發(fā)人員能夠?qū)⒏鄷r(shí)間從 C++ 和 Java 開(kāi)發(fā)的噪音中解放出來(lái),從而能夠花更多時(shí)間查看代碼和進(jìn)行戰(zhàn)略性思考。
在這個(gè)新改寫(xiě)的 NoSQL 系統(tǒng)取得成功后,PayPal 內(nèi)更多的平臺(tái)和內(nèi)容團(tuán)隊(duì)開(kāi)始采用 Go。Natarajan 目前的團(tuán)隊(duì)負(fù)責(zé) PayPal 的構(gòu)建、測(cè)試和發(fā)布管道——所有這些都是在 Go 中構(gòu)建的。該公司擁有一個(gè)大型構(gòu)建和測(cè)試農(nóng)場(chǎng),它使用 Go 基礎(chǔ)設(shè)施進(jìn)行完全管理,以支持整個(gè)公司的開(kāi)發(fā)人員的構(gòu)建即服務(wù)(和測(cè)試即服務(wù))。
憑借 PayPal 所需的分布式計(jì)算能力,Go 是刷新系統(tǒng)的正確語(yǔ)言。PayPal 需要并發(fā)和并行的編程,為高性能和高度可移植性而編譯,并為開(kāi)發(fā)人員帶來(lái)模塊化、可組合的開(kāi)源架構(gòu)的好處——Go 已經(jīng)提供了所有這些以及更多幫助 PayPal 對(duì)其系統(tǒng)進(jìn)行現(xiàn)代化改造。
安全性和可支持性是 PayPal 的關(guān)鍵問(wèn)題,該公司的運(yùn)營(yíng)管道越來(lái)越多地由 Go 主導(dǎo),因?yàn)樵撜Z(yǔ)言的簡(jiǎn)潔性和模塊化幫助他們實(shí)現(xiàn)了這些目標(biāo)。PayPal 對(duì) Go 的部署為開(kāi)發(fā)人員提供了一個(gè)創(chuàng)意平臺(tái),使他們能夠?yàn)?PayPal 的全球市場(chǎng)大規(guī)模生產(chǎn)簡(jiǎn)單、高效和可靠的軟件。
隨著 PayPal 繼續(xù)使用 Go 對(duì)其軟件定義網(wǎng)絡(luò) (SDN) 基礎(chǔ)設(shè)施進(jìn)行現(xiàn)代化改造,除了更易于維護(hù)的代碼外,他們還看到了性能優(yōu)勢(shì)。例如,Go 現(xiàn)在為路由器、負(fù)載平衡和越來(lái)越多的生產(chǎn)系統(tǒng)提供動(dòng)力。
作為一家全球性企業(yè),PayPal 需要其開(kāi)發(fā)團(tuán)隊(duì)有效管理兩種規(guī)模:生產(chǎn)規(guī)模,尤其是與許多其他服務(wù)器(如云服務(wù))交互的并發(fā)系統(tǒng);和開(kāi)發(fā)規(guī)模,尤其是由許多程序員協(xié)同開(kāi)發(fā)的大型代碼庫(kù)(如開(kāi)源開(kāi)發(fā))
PayPal 利用 Go 來(lái)解決這些規(guī)模問(wèn)題。該公司的開(kāi)發(fā)人員受益于 Go 將解釋型動(dòng)態(tài)類型語(yǔ)言的編程易用性與靜態(tài)類型編譯語(yǔ)言的效率和安全性相結(jié)合的能力。隨著 PayPal 對(duì)其系統(tǒng)進(jìn)行現(xiàn)代化改造,對(duì)網(wǎng)絡(luò)和多核計(jì)算的支持至關(guān)重要。Go 不僅提供了這種支持,而且提供的速度很快——在單臺(tái)計(jì)算機(jī)上編譯一個(gè)大型可執(zhí)行文件最多需要幾秒鐘。
PayPal 目前有 100 多名 Go 開(kāi)發(fā)人員,未來(lái)選擇采用 Go 的開(kāi)發(fā)人員將更容易獲得該語(yǔ)言的批準(zhǔn),這要?dú)w功于公司已經(jīng)在生產(chǎn)中的許多成功實(shí)現(xiàn)。
最重要的是,PayPal 開(kāi)發(fā)人員使用 Go 提高了他們的生產(chǎn)力。Go 的并發(fā)機(jī)制使得編寫(xiě)充分利用 PayPal 的多核和聯(lián)網(wǎng)機(jī)器的程序變得很容易。使用 Go 的開(kāi)發(fā)人員還受益于它可以快速編譯為機(jī)器代碼的事實(shí),并且他們的應(yīng)用程序獲得了垃圾收集的便利和運(yùn)行時(shí)反射的強(qiáng)大功能。
今天 PayPal 的第一類語(yǔ)言是 Java 和 Node,Go 主要用作基礎(chǔ)設(shè)施語(yǔ)言。雖然 Go 可能永遠(yuǎn)不會(huì)在某些應(yīng)用程序中取代 Node.js,但 Natarajan 正在推動(dòng)讓 Go 成為 PayPal 的第一類語(yǔ)言。
通過(guò)他的努力,PayPal 還在評(píng)估遷移到 Google Kubernetes Engine (GKE) 以加快其新產(chǎn)品的上市時(shí)間。GKE 是一個(gè)用于部署容器化應(yīng)用程序的托管、生產(chǎn)就緒環(huán)境,并帶來(lái)了 Google 在開(kāi)發(fā)人員生產(chǎn)力、自動(dòng)化操作和開(kāi)源靈活性方面的最新創(chuàng)新。
對(duì)于 PayPal 而言,部署到 GKE 將使 PayPal 更容易部署、更新和管理其應(yīng)用程序和服務(wù),從而實(shí)現(xiàn)快速開(kāi)發(fā)和迭代。此外,PayPal 會(huì)發(fā)現(xiàn)更容易運(yùn)行機(jī)器學(xué)習(xí)、通用 GPU、高性能計(jì)算和其他受益于 GKE 支持的專用硬件加速器的工作負(fù)載。
對(duì) PayPal 來(lái)說(shuō)最重要的是,Go 開(kāi)發(fā)和 GKE 的結(jié)合使公司能夠輕松擴(kuò)展以滿足需求,因?yàn)?Kubernetes 自動(dòng)擴(kuò)展將使 PayPal 能夠處理用戶對(duì)服務(wù)不斷增長(zhǎng)的需求——在最重要的時(shí)候保持它們可用,然后在安靜的時(shí)間來(lái)省錢。
go語(yǔ)言和java,go語(yǔ)言更有前途。
1.Java仍然是主流的企業(yè)級(jí)應(yīng)用編程語(yǔ)言,看看阿里,華為等大廠的招聘崗位就知道了。
2.Go語(yǔ)言代表了未來(lái),很多新興上市公司,如B站,高途課程等用Go做主編程語(yǔ)言。我所知道的一些創(chuàng)業(yè)公司,也開(kāi)會(huì)嘗試用Go語(yǔ)言。我個(gè)人也有在我司(金融機(jī)構(gòu))推動(dòng)Go語(yǔ)言的想法。
Go語(yǔ)言的流行是因?yàn)閮牲c(diǎn):
Golang在開(kāi)發(fā)效率和執(zhí)行效率上都有優(yōu)勢(shì),對(duì)于Java開(kāi)發(fā)者也很容易上手。
Go是谷歌開(kāi)發(fā)的,谷歌技術(shù)好,有情懷。相比來(lái)說(shuō),Java的母公司Oracle是一個(gè)沒(méi)有情懷和技術(shù)的惡霸。
如果各用一句話來(lái)概括這3個(gè)編程語(yǔ)言的特點(diǎn):
1.Java「就業(yè)最好」:崗位多,工資高。這個(gè)趨勢(shì)也許會(huì)持續(xù)5-10年。
2.Go語(yǔ)言「最有前途」,語(yǔ)言優(yōu)秀,家底豐厚,但暫時(shí)就業(yè)崗位還不是很多。
資薪對(duì)比:
Java和Go語(yǔ)言薪資水平相當(dāng),都比較高。
就業(yè)崗位數(shù):
很多應(yīng)用Python的崗位,可能不會(huì)發(fā)布招聘崗位,所以Python在工作中的使用情況應(yīng)該比這個(gè)數(shù)據(jù)多的多。
Go的崗位應(yīng)該也比這個(gè)數(shù)據(jù)多,可能很多新的崗位會(huì)發(fā)布到更加新興的招聘平臺(tái)上去。
應(yīng)用于搭建 Web 服務(wù)器,存儲(chǔ)集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語(yǔ)言。
Go 是谷歌的編程語(yǔ)言,而不是社區(qū)的。在這位博主看來(lái),雖然 Go 語(yǔ)言擁有一個(gè)貢獻(xiàn)者社區(qū),但是它并不是社區(qū)的項(xiàng)目,只是谷歌的一個(gè)項(xiàng)目。所以只要是谷歌反對(duì)的東西,沒(méi)有人可以把這個(gè)東西加到 Go 語(yǔ)言中。
InfoQ 記者也第一時(shí)間聯(lián)系了《Go 并發(fā)編程實(shí)戰(zhàn)》作者、前輕松籌大數(shù)據(jù)負(fù)責(zé)人郝林,他的觀點(diǎn)是:Go 語(yǔ)言是大家的,只有偽愛(ài)好者才會(huì)談舍棄。在郝林看來(lái),Go 語(yǔ)言官方團(tuán)隊(duì)在谷歌內(nèi)部實(shí)屬一個(gè)很小的團(tuán)隊(duì),但其成員幾乎個(gè)個(gè)都是技術(shù)大神。
很多社區(qū)成員為 Go 語(yǔ)言貢獻(xiàn)了很多重要并且有價(jià)值的東西,這些從貢獻(xiàn)者和提交者的多樣性就可以看出來(lái)。但谷歌作為整個(gè) Go 社區(qū)的守門(mén)人,它獨(dú)自決定什么東西可以被 Go 語(yǔ)言接受,什么不能被接受。
在 Go 語(yǔ)言模塊系統(tǒng)上發(fā)生的一件事情,谷歌 Go 語(yǔ)言核心團(tuán)隊(duì)的一名成員放棄了由外部 Go 社區(qū)開(kāi)發(fā)的一個(gè)模塊系統(tǒng),因?yàn)樗褂昧肆硪环N不同的模型。Go 語(yǔ)言擁有一個(gè)貢獻(xiàn)者社區(qū),但是它并不是一個(gè)社區(qū)項(xiàng)目。
Go 由于不支持泛型而臭名昭著,但最近,泛型已接近成為現(xiàn)實(shí)。Go 團(tuán)隊(duì)實(shí)施了一個(gè)看起來(lái)比較穩(wěn)定的設(shè)計(jì)草案,并且正以源到源翻譯器原型的形式獲得關(guān)注。本文講述的是泛型的最新設(shè)計(jì),以及如何自己嘗試泛型。
例子
FIFO Stack
假設(shè)你要?jiǎng)?chuàng)建一個(gè)先進(jìn)先出堆棧。沒(méi)有泛型,你可能會(huì)這樣實(shí)現(xiàn):
type?Stack?[]interface{}func?(s?Stack)?Peek()?interface{}?{
return?s[len(s)-1]
}
func?(s?*Stack)?Pop()?{
*s?=?(*s)[:
len(*s)-1]
}
func?(s?*Stack)?Push(value?interface{})?{
*s?=?
append(*s,?value)
}
但是,這里存在一個(gè)問(wèn)題:每當(dāng)你 Peek 項(xiàng)時(shí),都必須使用類型斷言將其從 interface{} 轉(zhuǎn)換為你需要的類型。如果你的堆棧是 *MyObject 的堆棧,則意味著很多 s.Peek().(*MyObject)這樣的代碼。這不僅讓人眼花繚亂,而且還可能引發(fā)錯(cuò)誤。比如忘記 * 怎么辦?或者如果您輸入錯(cuò)誤的類型怎么辦?s.Push(MyObject{})` 可以順利編譯,而且你可能不會(huì)發(fā)現(xiàn)到自己的錯(cuò)誤,直到它影響到你的整個(gè)服務(wù)為止。
通常,使用 interface{} 是相對(duì)危險(xiǎn)的。使用更多受限制的類型總是更安全,因?yàn)榭梢栽诰幾g時(shí)而不是運(yùn)行時(shí)發(fā)現(xiàn)問(wèn)題。
泛型通過(guò)允許類型具有類型參數(shù)來(lái)解決此問(wèn)題:
type?Stack(type?T)?[]Tfunc?(s?Stack(T))?Peek()?T?{
return?s[len(s)-1]
}
func?(s?*Stack(T))?Pop()?{
*s?=?(*s)[:
len(*s)-1]
}
func?(s?*Stack(T))?Push(value?T)?{
*s?=?
append(*s,?value)
}
這會(huì)向 Stack 添加一個(gè)類型參數(shù),從而完全不需要 interface{}。現(xiàn)在,當(dāng)你使用 Peek() 時(shí),返回的值已經(jīng)是原始類型,并且沒(méi)有機(jī)會(huì)返回錯(cuò)誤的值類型。這種方式更安全,更容易使用。(譯注:就是看起來(lái)更丑陋,^-^)
此外,泛型代碼通常更易于編譯器優(yōu)化,從而獲得更好的性能(以二進(jìn)制大小為代價(jià))。如果我們對(duì)上面的非泛型代碼和泛型代碼進(jìn)行基準(zhǔn)測(cè)試,我們可以看到區(qū)別:
type?MyObject?struct?{
X?
int
}
var?sink?MyObjectfunc?BenchmarkGo1(b?*testing.B)?{
for?i?:=?0;?i??b.N;?i++?{
var?s?Stack
s.Push(MyObject{})
s.Push(MyObject{})
s.Pop()
sink?=?s.Peek().(MyObject)
}
}
func?BenchmarkGo2(b?*testing.B)?{
for?i?:=?0;?i??b.N;?i++?{
var?s?Stack(MyObject)
s.Push(MyObject{})
s.Push(MyObject{})
s.Pop()
sink?=?s.Peek()
}
}
結(jié)果:
BenchmarkGo1BenchmarkGo1-16?????12837528?????????87.0?ns/op???????48?B/op????????2?allocs/opBenchmarkGo2BenchmarkGo2-16?????28406479?????????41.9?ns/op???????24?B/op????????2?allocs/op
在這種情況下,我們分配更少的內(nèi)存,同時(shí)泛型的速度是非泛型的兩倍。
合約(Contracts)
上面的堆棧示例適用于任何類型。但是,在許多情況下,你需要編寫(xiě)僅適用于具有某些特征的類型的代碼。例如,你可能希望堆棧要求類型實(shí)現(xiàn) String() 函數(shù)
網(wǎng)頁(yè)題目:go語(yǔ)言金融 go語(yǔ)言 金融
網(wǎng)站路徑:http://chinadenli.net/article18/ddodjgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、商城網(wǎng)站、網(wǎng)站維護(hù)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)