自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

什么是微服務(wù),如何構(gòu)建微服務(wù)

開發(fā) 架構(gòu)
過去的單體應(yīng)用程序已經(jīng)無法滿足日益增進(jìn)的技術(shù)需求。因此人們迫切地需要一種技術(shù)架構(gòu)來解決這些問題,于是,微服務(wù)架構(gòu)誕生了。

[[442746]]

什么是微服務(wù)

如今隨著社交媒體的興起,互聯(lián)網(wǎng)的快速發(fā)展,應(yīng)用程序變得越來越復(fù)雜,需要處理的任務(wù)也越來越多。

過去的單體應(yīng)用程序已經(jīng)無法滿足日益增進(jìn)的技術(shù)需求。因此人們迫切地需要一種技術(shù)架構(gòu)來解決這些問題,于是,微服務(wù)架構(gòu)誕生了。

通過采用微服務(wù)架構(gòu),人們可以顯著地提高應(yīng)用程序的靈活性、可擴(kuò)展性。

微服務(wù)總覽

基于微服務(wù)的架構(gòu)有幾個(gè)獨(dú)立的單元,它們通過彼此的協(xié)同工作來接收和處理來自各種來源的請求。

這些獨(dú)立的單元也叫作插件單元,你可以在需要的時(shí)候?qū)λ鼈冞M(jìn)行替換和修改,而這些操作不會(huì)影響程序的整體工作。

如果你決定實(shí)現(xiàn)一個(gè)微服務(wù)架構(gòu),你應(yīng)該熟悉應(yīng)用程序生命周期中的各種關(guān)注點(diǎn),如持久化、日志記錄、監(jiān)控、負(fù)載均衡、緩存等,此外你應(yīng)該知道哪些工具或哪些技術(shù)棧更適合您的應(yīng)用程序。

微服務(wù)構(gòu)成

Docker

Docker 是一個(gè)開源平臺,用于應(yīng)用程序進(jìn)行打包分發(fā),其中包含應(yīng)用程序在各種環(huán)境中運(yùn)行所需的庫和依賴項(xiàng)。在Docker的幫助下,開發(fā)團(tuán)隊(duì)可以將應(yīng)用程序打包成容器。實(shí)際上,Docker是容器化應(yīng)用程序的工具之一,這意味著你也可以不使用Docker來創(chuàng)建容器,Docker的真正好處是使這個(gè)過程更輕松、更安全、更簡單。

在你容器化你的應(yīng)用之后,你需要一些工具來管理容器化的應(yīng)用來做一些手動(dòng)和自動(dòng)化的操作,比如水平擴(kuò)展。這些工具為你的應(yīng)用管理提供一些服務(wù),比如自動(dòng)負(fù)載均衡,保證高服務(wù)可用性。

這種服務(wù)通過定義多個(gè)管理器節(jié)點(diǎn)來完成,如果一個(gè)節(jié)點(diǎn)管理器出現(xiàn)任何故障,其他管理器可以保持應(yīng)用程序服務(wù)可用。

管理 Docker 環(huán)境、配置管理、提供環(huán)境安全等,這些問題可以通過 docker 容器管理工具集中自動(dòng)化。

API 網(wǎng)關(guān)

API 網(wǎng)關(guān)可以被視為一種 API 管理工具,它充當(dāng)您的應(yīng)用程序服務(wù)和不同客戶端之間的中間件。

API 網(wǎng)關(guān)可以管理下面這些事情:

  • 路由:網(wǎng)關(guān)接收所有 API 請求并將它們轉(zhuǎn)發(fā)到目標(biāo)服務(wù)。
  • 日志記錄:統(tǒng)一記錄所有請求。
  • 授權(quán):檢查用戶是否有權(quán)限訪問該服務(wù)。
  • 性能分析:估計(jì)每個(gè)請求的執(zhí)行時(shí)間并檢查您的應(yīng)用程序瓶頸。
  • 緩存:通過在網(wǎng)關(guān)級別處理緩存,可以消除服務(wù)上的大量流量。

負(fù)載均衡

實(shí)際上,它是作為反向代理工作的,客戶端只需要知道你的網(wǎng)關(guān),應(yīng)用服務(wù)就可以實(shí)現(xiàn)對外隱藏。例如,如果您想記錄服務(wù)的請求和響應(yīng)。如果您的應(yīng)用程序由多個(gè)服務(wù)組成,您的客戶端需要知道每個(gè)服務(wù)地址,并且在更改服務(wù)地址的情況下,應(yīng)該更新多個(gè)地方。

將能夠通過運(yùn)行更多的服務(wù)實(shí)例來處理更多的請求,但問題是,哪個(gè)實(shí)例應(yīng)該接收請求或者客戶端如何知道哪個(gè)服務(wù)實(shí)例應(yīng)該處理請求嗎?這些問題的答案是負(fù)載平衡。負(fù)載均衡意味著在一個(gè)服務(wù)實(shí)例之間共享收入流量。為了擴(kuò)展獨(dú)立服務(wù),需要運(yùn)行多個(gè)服務(wù)實(shí)例。

使用負(fù)載均衡器,客戶端不需要知道服務(wù)的正確實(shí)例。

服務(wù)發(fā)現(xiàn)

隨著你的應(yīng)用服務(wù)數(shù)量越來越多,服務(wù)需要知道彼此的服務(wù)實(shí)例地址,但是這在很多的大型應(yīng)用程序中,這是無法處理的。所以我們需要引入服務(wù)發(fā)現(xiàn),它負(fù)責(zé)提供應(yīng)用中所有組件的實(shí)際地址,它們可以輕松地向服務(wù)發(fā)現(xiàn)服務(wù)發(fā)送請求并獲取可用的服務(wù)實(shí)例地址。當(dāng)你的應(yīng)用中可以有多個(gè)服務(wù)時(shí),服務(wù)發(fā)現(xiàn)是一個(gè)您的應(yīng)用程序的必備工具。您的應(yīng)用程序服務(wù)不需要知道每個(gè)服務(wù)實(shí)例地址,這意味著服務(wù)發(fā)現(xiàn)為您鋪平了道路。

事件總線

在微服務(wù)架構(gòu)模式中,您將使用兩種不同類型的通信,同步和異步通信。

同步通信意味著服務(wù)通過 HTTP 調(diào)用或 GRPC 調(diào)用相互調(diào)用。

異步通信意味著服務(wù)通過消息總線或事件總線相互交互,這意味著服務(wù)之間沒有直接連接。

雖然架構(gòu)可以同時(shí)使用兩種通信方式,但同時(shí)我們也需要服務(wù)之間使用 GRPC 或 HTTP 調(diào)用來獲取響應(yīng)。這些服務(wù)通過事件總線相互交互。此外,如果您需要?jiǎng)?chuàng)建一個(gè)能夠插入新服務(wù)以接收一系列特定消息的應(yīng)用程序,則需要使用事件總線。在事件總線中,常用的工具有 RabbitMQ、Kafka。

日志采集

當(dāng)使用微服務(wù)架構(gòu)模式時(shí),最好集中你的服務(wù)日志。這些日志將用于調(diào)試問題或根據(jù)其類型聚合日志以供分析用途。任何需要調(diào)試請求的情況下,如果您不在一個(gè)地方收集服務(wù)日志,您可能會(huì)遇到困難。您還可以將與特定請求相關(guān)的日志與唯一的相關(guān) ID 相關(guān)聯(lián)。這意味著與請求相關(guān)的不同服務(wù)中的所有日志都可以通過此關(guān)聯(lián) Id.ToolsElastic Logstash 訪問

監(jiān)控和警報(bào)

在微服務(wù)架構(gòu)中,如果你想擁有一個(gè)可靠的應(yīng)用程序或服務(wù),你必須監(jiān)控應(yīng)用程序的功能、性能、通信和任何其他方面,以實(shí)現(xiàn)一個(gè)負(fù)責(zé)任的應(yīng)用程序。為什么你需要監(jiān)控整體功能和服務(wù)健康,還需要監(jiān)控性能瓶頸并準(zhǔn)備解決它們的計(jì)劃。通過在關(guān)鍵點(diǎn)定義服務(wù)的早期警報(bào)來減少服務(wù)的停機(jī)時(shí)間,從而優(yōu)化用戶體驗(yàn)。監(jiān)控服務(wù)的整體資源消耗,當(dāng)負(fù)載過重時(shí)等。

分布式跟蹤

調(diào)試始終是開發(fā)人員最關(guān)注的問題之一,單體調(diào)試很簡單,但是在微服務(wù)架構(gòu)上,因?yàn)橐粋€(gè)請求可能會(huì)通過不同的服務(wù),這使得調(diào)試和跟蹤變得困難,因?yàn)榇a庫不在一個(gè)地方,所以這里使用分布式跟蹤工具會(huì)很有幫助。

如果沒有分布式跟蹤工具,通過不同的服務(wù)跟蹤您的請求是幾乎不可能。借助OpenTelemetry、Jeager、Zipkin這些工具,您可以借助豐富的 UI 來演示請求的流程,輕松跟蹤請求和事件。

結(jié)論

微服務(wù)是一個(gè)非常龐大的技術(shù),它要求你懂得很多技術(shù)棧,一開始你可能摸不清頭緒,不過這都不要緊,當(dāng)你完整接觸或者使用過一個(gè)微服務(wù)的架構(gòu)之后,你就會(huì)對它慢慢有所了解,并且能夠知道為什么微服務(wù)需要那些技術(shù),因?yàn)槊恳粋€(gè)技術(shù)都是為了解決某個(gè)技術(shù)出現(xiàn)的,沒有過多的設(shè)計(jì),一切都是剛剛好。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2024-11-06 16:27:12

2021-07-20 08:03:43

微服務(wù)應(yīng)用程序

2022-05-20 12:15:08

NodeJS微服務(wù)編程語言

2022-09-05 08:00:00

Java微服務(wù)AuraDB

2020-02-17 16:28:49

開發(fā)技能代碼

2022-03-31 08:15:38

微服務(wù)服務(wù)拆分架構(gòu)

2018-09-12 09:00:00

數(shù)據(jù)庫Redis微服務(wù)

2022-08-22 07:26:32

Node.js微服務(wù)架構(gòu)

2018-04-23 14:31:02

微服務(wù)GraphQLBFF

2023-12-30 08:27:13

2022-05-16 08:07:15

微服務(wù)容器通信

2022-09-12 15:58:50

node.js微服務(wù)Web

2020-09-26 10:56:33

服務(wù)器熔斷服務(wù)隔離

2021-06-30 10:16:54

微服務(wù)架構(gòu)測試

2017-06-26 09:06:10

Spring Clou微服務(wù)架構(gòu)

2017-12-20 15:37:39

Spring Clou微服務(wù)架構(gòu)

2023-06-01 15:14:55

架構(gòu)Python微服務(wù)

2023-08-16 14:39:20

微服務(wù)Java

2018-12-03 08:00:00

微服務(wù)gRPC

2019-07-18 14:07:36

程序員Linux數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號