99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)計(jì)微服務(wù)架構(gòu)的原則

虹科網(wǎng)絡(luò)可視化技術(shù) ? 2023-11-26 08:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

微服務(wù)是一種軟件架構(gòu)策略,有利于改善整體性能和可擴(kuò)展性。你可能會想,我的團(tuán)隊(duì)需不需要采用微服務(wù),設(shè)計(jì)微服務(wù)架構(gòu)有哪些原則?本文會給你一些靈感。

文章速覽:

微服務(wù)設(shè)計(jì)的要素

微服務(wù)架構(gòu)設(shè)計(jì)的5個(gè)原則

微服務(wù)是一種軟件架構(gòu)策略,將應(yīng)用程序分解為一組解耦的、自治的服務(wù)。這些獨(dú)立的應(yīng)用服務(wù)通過API相互通信。每個(gè)服務(wù)都由其專業(yè)領(lǐng)域的專家團(tuán)隊(duì)管理,以便每個(gè)軟件開發(fā)團(tuán)隊(duì)可以控制自己的開發(fā)周期,按照自己的時(shí)間表進(jìn)行測試和部署,使用自己的企業(yè)工具和資源,加速上線時(shí)間。為了評估你的團(tuán)隊(duì)是否需要采用微服務(wù)架構(gòu)。這里有一些值得深入討論的細(xì)節(jié)。

一、微服務(wù)設(shè)計(jì)的要素

設(shè)計(jì)微服務(wù)架構(gòu)的第一步是形勢評估。開發(fā)者網(wǎng)站總結(jié)的十大微服務(wù)設(shè)計(jì)原則之一是單一責(zé)任原則,即每個(gè)服務(wù)只需要將其所有資源投入到微服務(wù)應(yīng)用程序的一個(gè)功能中。

1.通過領(lǐng)域驅(qū)動設(shè)計(jì)實(shí)施微服務(wù)

軟件架構(gòu)師需要進(jìn)行領(lǐng)域分析,以確定如何劃分每個(gè)服務(wù)以及需要將哪些元素納入應(yīng)用堆棧中。這種領(lǐng)域分析被稱為領(lǐng)域驅(qū)動設(shè)計(jì)(Domain Driven Design, DDD)。它將實(shí)體模式和聚合模式等模式應(yīng)用到單個(gè)限界上下文(bounded context)中,以便以更高的計(jì)算精度來識別單個(gè)域的邊界。

總之,應(yīng)該圍繞特定的業(yè)務(wù)功能構(gòu)建每個(gè)微服務(wù)。一旦確定了領(lǐng)域并了解了它們的邊界,就可以定義最適合應(yīng)用堆棧的變量了。

2.選擇技術(shù)棧

創(chuàng)建微服務(wù)技術(shù)棧較為特別。通常你需要使用各種工具、框架和編程語言,將它們整合成一個(gè)耦合的系統(tǒng)。在選擇工具時(shí)考慮以下變量:

編程語言

選擇用于微服務(wù)的最佳編程語言,取決于你最熟悉哪種語言、可用于所需功能的庫以及每種語言提供的功能套件。顯然,選擇你的開發(fā)團(tuán)隊(duì)已經(jīng)大范圍使用的語言可以節(jié)省時(shí)間和精力。

根據(jù)2021年JetBrains關(guān)于微服務(wù)的調(diào)查,“用于微服務(wù)開發(fā)的三種最流行的語言是Java(41%)、JavaScript(37%)和Python(25%)”。這些流行的編程語言都有大量的在線開發(fā)者支持、成功應(yīng)用開發(fā)的示例、運(yùn)行環(huán)境,比如Node.JS,以及豐富的客戶端庫。

總之,確保所選的語言適合當(dāng)前業(yè)務(wù)問題。例如,Python在數(shù)據(jù)分析中很受歡迎,而JavaScript是全棧開發(fā)的最優(yōu)選擇。

數(shù)據(jù)庫

在為微服務(wù)架構(gòu)構(gòu)建的應(yīng)用程序選擇適合的數(shù)據(jù)庫時(shí),應(yīng)將可伸縮性、可用性和安全性置于首要位置。選擇一個(gè)最能支持你在微服務(wù)中計(jì)劃使用的數(shù)據(jù)模型的數(shù)據(jù)庫。你的技術(shù)棧應(yīng)該能夠處理任何應(yīng)用負(fù)載,確保使用故障切換協(xié)議可用性,并保護(hù)應(yīng)用免受惡意攻擊。

通信

你的業(yè)務(wù)功能可能需要您的微服務(wù)使用同步的服務(wù)間通信方法執(zhí)行某些操作,對于其他操作,可能需要使用異步通信。可以使用多種通信格式和協(xié)議來輔助微服務(wù)通信,包括HTTP/REST、gRPC和AMQP。

對于異步通信,使用支持消費(fèi)者組的事件驅(qū)動消息代理可以提高可伸縮性和可靠性,確保應(yīng)用程序能夠擴(kuò)展,而不會導(dǎo)致任何服務(wù)無法訪問的情況。

監(jiān)控

每個(gè)微服務(wù)團(tuán)隊(duì)都負(fù)責(zé)監(jiān)視應(yīng)用程序性能,通常使用日志記錄和可觀察性工具來跟蹤操作。這使得開發(fā)人員和運(yùn)維人員可以跟蹤整個(gè)系統(tǒng),如應(yīng)用程序性能、消息代理流與數(shù)據(jù)庫資源利用率。

在使用消息代理時(shí),考慮使用一個(gè)日志流,其中每個(gè)微服務(wù)都可以發(fā)布消息。這樣,您可以將首選的日志記錄和可觀察性工具連接到流,并在不減慢應(yīng)用程序的情況下異步監(jiān)視您的應(yīng)用程序。

二、微服務(wù)架構(gòu)設(shè)計(jì)的5個(gè)原則

那么,如何確保你的微服務(wù)架構(gòu)可以發(fā)揮最佳作用?以下是五個(gè)微服務(wù)應(yīng)用程序設(shè)計(jì)原則,可供你參考。

1.低耦合和高內(nèi)聚

低耦合和高內(nèi)聚可以通過前面提到的單一責(zé)任原則來解釋。賦予每個(gè)領(lǐng)域團(tuán)隊(duì)單一的職責(zé),有助于加強(qiáng)該領(lǐng)域內(nèi)的內(nèi)聚,使得該服務(wù)內(nèi)的所有功能都在某種程度上緊密耦合。每個(gè)服務(wù)都由其自己的領(lǐng)域?qū)<液凸ぞ吖芾?,但仍然可以通過API和其他協(xié)議相互通信。這有點(diǎn)像來自不同部門的同事如何互動:當(dāng)有助于完成工作時(shí),大家彼此分享信息,而不會過多地談?wù)撆c他人無關(guān)的細(xì)節(jié)。

2.適應(yīng)性

業(yè)務(wù)應(yīng)用程序很少是靜止不變的。隨著新的業(yè)務(wù)需求的出現(xiàn),行業(yè)的假設(shè)發(fā)生變化,技術(shù)能力提供更多功能,軟件也會發(fā)生變化。微服務(wù)應(yīng)該具有可適應(yīng)性,以滿足新需求出現(xiàn)時(shí)可以進(jìn)行適應(yīng)。世界在變化,人們在變化,所以軟件也應(yīng)該變化。

3.基礎(chǔ)設(shè)施自動化

實(shí)現(xiàn)微服務(wù)的一個(gè)原因是它們能夠自動化流程,從而提高整體可擴(kuò)展性。借助 Kubernetes 等容器編排系統(tǒng),您可以使用單個(gè)鏡像與微服務(wù)一起部署微服務(wù)的整個(gè)數(shù)據(jù)庫。在Kubernetes控制器的幫助下,這些可移植性優(yōu)勢可以幫助DevOps團(tuán)隊(duì)管理、調(diào)度和編排自動容器部署。

4.離散邊界

實(shí)施微服務(wù)要求在任何給定應(yīng)用程序中的服務(wù)都要維護(hù)自己的分散數(shù)據(jù)。服務(wù)邊界應(yīng)該將與任何單個(gè)服務(wù)相關(guān)的所有邏輯和數(shù)據(jù)與應(yīng)用程序中的其他服務(wù)隔離開。

這也是允許容器化微服務(wù)進(jìn)行獨(dú)立部署的邏輯。這個(gè)原則也有一些反對者,他們認(rèn)為這會導(dǎo)致數(shù)據(jù)冗余激增。但建立這些明確的邊界最大的好處之一是:當(dāng)一個(gè)微服務(wù)承載自己的數(shù)據(jù)時(shí),任何奇怪的行為都被限制在微服務(wù)內(nèi)部。

5.為故障而設(shè)計(jì)

干擾是經(jīng)常發(fā)生的,應(yīng)用服務(wù)會在毫無征兆的情況下癱瘓。例如,挖掘機(jī)開挖光纜中斷網(wǎng)絡(luò)操作,人們會忘記續(xù)訂域名,系統(tǒng)會因防火墻故障引起的數(shù)據(jù)連接問題而中斷等。所以,需要盡力考慮潛在的故障的可實(shí)施對策。設(shè)計(jì)具有彈性的解決方案,比如使用斷路器模式,以防止當(dāng)某個(gè)微服務(wù)無法執(zhí)行給定操作時(shí)其他服務(wù)中斷。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5154

    瀏覽量

    89232
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    528

    瀏覽量

    25995
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    145

    瀏覽量

    7746
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    微服務(wù)架構(gòu)幾種典型的基礎(chǔ)框架,你了解嗎?

    SpringCloud、Dubbo、Dropwizard、Akka等是常見微服務(wù)框架。SpringCloud基于SpringBoot,生態(tài)豐富;Dropwizard輕量且繼承SpringBoot優(yōu)點(diǎn)
    的頭像 發(fā)表于 03-04 11:05 ?437次閱讀

    NVIDIA 發(fā)布保障代理式 AI 應(yīng)用安全的 NIM 微服務(wù)

    NVIDIA NeMo Guardrails 包含全新 NVIDIA NIM 微服務(wù),能夠?yàn)楦餍袠I(yè)構(gòu)建 AI 的企業(yè)提高 AI 的準(zhǔn)確性、安全性和可控性。 ? AI 智能體有望成為能夠完成各種任務(wù)
    發(fā)表于 01-17 16:29 ?161次閱讀

    微服務(wù)容器化部署好處多嗎?

    微服務(wù)容器化部署好處有很多,包括環(huán)境一致性、資源高效利用、快速部署與啟動、隔離性與安全性、版本控制與回滾以及持續(xù)集成與持續(xù)部署。這些優(yōu)勢助力應(yīng)用可靠穩(wěn)定運(yùn)行,提升開發(fā)運(yùn)維效率,是現(xiàn)代軟件架構(gòu)的優(yōu)質(zhì)選擇。UU云小編認(rèn)為微服務(wù)容器化
    的頭像 發(fā)表于 01-17 10:22 ?335次閱讀

    容器化能替代微服務(wù)嗎?兩者有何區(qū)別

    容器化不能替代微服務(wù),但它是微服務(wù)的解決方案之一。微服務(wù)架構(gòu)的核心在于將大型應(yīng)用程序拆分為一系列小型、獨(dú)立的服務(wù),每個(gè)
    的頭像 發(fā)表于 01-13 10:40 ?426次閱讀

    Java微服務(wù)中如何確保安全性?

    在Java微服務(wù)架構(gòu)中確保安全性,可以采取以下措施: 身份驗(yàn)證與授權(quán): 使用OAuth 2.0和OpenID Connect框架進(jìn)行身份驗(yàn)證和授權(quán)。OAuth2允許用戶在不分享憑證的情況下授權(quán)第三方
    的頭像 發(fā)表于 01-02 15:21 ?679次閱讀

    寶藏級微服務(wù)架構(gòu)工具合集

    寶藏級熱門微服務(wù)架構(gòu)工具包含Spring Boot、Eclipse Vert.X、Kubernetes、Tyk、RabbitMQ、Apache Kafka等。其中,Spring Boot簡化了微服務(wù)
    的頭像 發(fā)表于 12-21 16:33 ?621次閱讀

    k8s微服務(wù)架構(gòu)就是云原生嗎?兩者是什么關(guān)系

    k8s微服務(wù)架構(gòu)就是云原生嗎?K8s微服務(wù)架構(gòu)并不等同于云原生,但兩者之間存在密切的聯(lián)系。Kubernetes在云原生架構(gòu)中扮演著核心組件的
    的頭像 發(fā)表于 11-25 09:39 ?533次閱讀

    SSR與微服務(wù)架構(gòu)的結(jié)合應(yīng)用

    隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,前端技術(shù)棧不斷更新迭代,后端架構(gòu)也經(jīng)歷了從單體應(yīng)用到微服務(wù)的變革。在這個(gè)過程中,服務(wù)端渲染(SSR)作為一種提升頁面加載速度和SEO性能的技術(shù),與微服務(wù)
    的頭像 發(fā)表于 11-18 11:34 ?840次閱讀

    架構(gòu)與設(shè)計(jì) 常見微服務(wù)分層架構(gòu)的區(qū)別和落地實(shí)踐

    架構(gòu)風(fēng)格越傾向于清晰的職責(zé)定位,且讓領(lǐng)域模型成為架構(gòu)的核心。 基于這些架構(gòu)風(fēng)格,在軟件架構(gòu)設(shè)計(jì)過程中又有非常多的架構(gòu)分層模型。 傳統(tǒng)三層
    的頭像 發(fā)表于 10-22 15:34 ?662次閱讀
    <b class='flag-5'>架構(gòu)</b>與設(shè)計(jì) 常見<b class='flag-5'>微服務(wù)</b>分層<b class='flag-5'>架構(gòu)</b>的區(qū)別和落地實(shí)踐

    微服務(wù)架構(gòu)與容器云的關(guān)系與區(qū)別

    微服務(wù)架構(gòu)與容器云密切相關(guān)又有所區(qū)別。微服務(wù)將大型應(yīng)用拆分為小型、獨(dú)立的服務(wù),而容器云基于容器技術(shù),為微服務(wù)提供構(gòu)建、發(fā)布和運(yùn)行的平臺。區(qū)別
    的頭像 發(fā)表于 10-21 17:28 ?553次閱讀

    入門級攻略:如何容器化部署微服務(wù)

    第一步理解容器化基礎(chǔ),第二步創(chuàng)建Dockerfile,第三步構(gòu)建推送鏡像,第四步部署微服務(wù),第五步管理微服務(wù)、第六步優(yōu)化更新。容器化部署微服務(wù)是現(xiàn)代軟件開發(fā)中的一種高效方法,可提供良好的可移植性、可擴(kuò)展性和管理性。容器化部署
    的頭像 發(fā)表于 10-09 10:08 ?403次閱讀

    Proxyless的多活流量和微服務(wù)治理

    1. 引言 1.1 項(xiàng)目的背景及意義 在當(dāng)今的微服務(wù)架構(gòu)中,應(yīng)用程序通常被拆分成多個(gè)獨(dú)立的服務(wù),這些服務(wù)通過網(wǎng)絡(luò)進(jìn)行通信。這種架構(gòu)的優(yōu)勢在于
    的頭像 發(fā)表于 08-28 16:54 ?2013次閱讀
    Proxyless的多活流量和<b class='flag-5'>微服務(wù)</b>治理

    NVIDIA NIM微服務(wù)帶來巨大優(yōu)勢

    服務(wù)通過熱門 AI 模型為數(shù)百萬開發(fā)者帶來高達(dá) 5 倍的 token 效率提升,使他們能夠立即訪問在 NVIDIA DGX Cloud 上運(yùn)行的 NIM 微服務(wù)。
    的頭像 發(fā)表于 08-23 15:20 ?980次閱讀

    采用OpenUSD和NVIDIA NIM微服務(wù)創(chuàng)建精準(zhǔn)品牌視覺

    全球領(lǐng)先的創(chuàng)意和制作服務(wù)機(jī)構(gòu)率先采用 OpenUSD 和 NVIDIA NIM 微服務(wù)來創(chuàng)建精準(zhǔn)的品牌視覺。
    的頭像 發(fā)表于 08-01 14:33 ?768次閱讀

    全新 NVIDIA NeMo Retriever微服務(wù)大幅提升LLM的準(zhǔn)確性和吞吐量

    企業(yè)能夠通過提供檢索增強(qiáng)生成功能的生產(chǎn)就緒型 NVIDIA NIM 推理微服務(wù),充分挖掘業(yè)務(wù)數(shù)據(jù)的價(jià)值。這些微服務(wù)現(xiàn)已集成到 Cohesity、DataStax、NetApp 和 Snowflake 平臺中。
    的頭像 發(fā)表于 07-26 11:13 ?1294次閱讀
    全新 NVIDIA NeMo Retriever<b class='flag-5'>微服務(wù)</b>大幅提升LLM的準(zhǔn)確性和吞吐量