5:10 - 緩解
?

當(dāng)我們經(jīng)歷了發(fā)現(xiàn)和解決問題的過程后,我們最終通過一些措施來調(diào)整優(yōu)化系統(tǒng),比如對所有的請求進行分組。我們緩存了一些數(shù)據(jù),最終我們優(yōu)化了網(wǎng)絡(luò)來真正的提高性能。
所以,這與微服務(wù)有什么關(guān)系呢?對的,借助于微服務(wù),你基本上是采用SOA架構(gòu)的,并且會將其放入超光速引擎中。在SOA架構(gòu)中所有的對象都是包含在單個虛擬機中并且在其內(nèi)部管理,在內(nèi)存中相互通訊,而現(xiàn)在微服務(wù)中是使用HTTP進行數(shù)據(jù)交換的。
當(dāng)這樣做沒有問題時,你會獲得很好的性能和線性可伸縮性。
6:00 - Nginx能夠很好地與微服務(wù)工作
?

Nginx是一個你可以用來過渡到微服務(wù)的最佳工具之一。
關(guān)于Nginx和微服務(wù)的一些歷史。我們從一開始就參與了微服務(wù)運動,還是第一個從Docker Hub下載應(yīng)用的,我們的客戶以及那些擁有一些世界上最大的微服務(wù)安裝量的最終用戶廣泛地在他們的基礎(chǔ)設(shè)施使用Nginx。
原因是Nginx很小、很快并且很可靠。
6:42 - Nginx微服務(wù)參考架構(gòu)
?

我們還致力于在Nginx內(nèi)部使用微服務(wù)工作已經(jīng)有一段時間了。這是一個我們已經(jīng)搭建的程式化的Nginx微服務(wù)參考架構(gòu),目前正在AWS上運行。
我們擁有6個核心的微服務(wù),它們都運行在Docker容器里。我們決定建立一個多語種的應(yīng)用,所以每個容器都可以運行不同的語言,我們目前使用了Ruby、Python、PHP、Java和Node.js。
我們搭建了這個使用十二要素應(yīng)用的系統(tǒng),稍加修改,就會使其更好地為微服務(wù)工作從而可以替代Roku平臺。稍后,我們將向您展示一個實際上運行在demo里的應(yīng)用。
7:36 - MRA的價值
?

為什么我們要建立這樣一個參考的微服務(wù)架構(gòu)呢?
我們建立這個參考架構(gòu)是因為我們需要給我們的客戶提供構(gòu)建微服務(wù)的藍圖,我們也想在微服務(wù)上下文中測試Nginx和Nginx Plus的功能,弄清楚如何才能更好地利用它的優(yōu)勢。最后,我們要確保我們對于微服務(wù)生態(tài)系統(tǒng)以及其可以給我們提供什么有一個深入的理解。
8:15 - 網(wǎng)絡(luò)問題
?

讓我們回到我們討論的大轉(zhuǎn)變。
從將運行在內(nèi)存里并且被虛擬機管理的你的應(yīng)用的所有功能組件遷移到通過網(wǎng)絡(luò)進行工作并且相互通訊的方式,你會本質(zhì)上引入一系列為了應(yīng)用有效工作需要你解決的問題。
第一你需要服務(wù)發(fā)現(xiàn),第二,你需要在架構(gòu)中為所有不同的實例進行負載均衡,然后還有第三個,你需要操心性能和安全。
無論是好是壞,這些問題密不可分,你必須做權(quán)衡,有希望的是我們有一個可以解決所有這些問題的解決方案。
讓我們更深入地看待每一個問題。
9:03 - 服務(wù)發(fā)現(xiàn)
?

讓我們來談?wù)劮?wù)發(fā)現(xiàn)。在單體應(yīng)用中,APP引擎會管理所有的對象關(guān)系,你永遠不必擔(dān)心一個對象與另一個對象的相對位置,你只需要簡單的調(diào)用一個方法,虛擬機會連接到對象實例,然后在調(diào)用完畢后銷毀。
然后有了微服務(wù),你需要考慮那些服務(wù)的位置。不幸的是,這不是一個普遍的標(biāo)準(zhǔn)流程。您正在使用的各種服務(wù)注冊中心,無論是Zookeeper、Consul、etcd或者其它的,都會以不同的方式進行工作。在這個過程中,你需要注冊你的服務(wù),還需要能夠讀取這些服務(wù)在哪里并且可以被連接。