主頁 >  其他 > 微服務的隱性收益

微服務的隱性收益

2020-12-21 10:57:01 其他

引言:微服務并不適用于每個公司,而且實作微服務化的程序也并不容易,但是,實作微服務除了明顯優勢之外,還有一些隱性的收益值得關注,本文編譯自 Tom Killalea的一篇舊文 https://queue.acm.org/detail.cfm?id=2956643,融入了一點兒個人的理解,

微服務是一種構建分布式系統的方法,在微服務系統中,服務只能通過API來公開,這是一個API的世界(可以參考沒有被了解的API?一個老碼農眼中的API世界),在微服務的世界里,服務本身在特定且有良好界限的場景下或職責區域具有高度的內聚性,而且服務之間是松耦合的,這樣的微服務通常很簡單,但是它們可以組合成非常豐富且復雜的應用,采用微服務的構建方法所需的作業量相當大,特別是從單體架構遷移的時候,然而,微服務的好處眾多,眾所周知的優勢包括敏捷性的增強、彈性、可伸縮性和開發人員的生產力,本文指出了微服務的一些隱性收益,我們或許應該有意識地努力識訓這些收益,

微服務帶來的最基本好處是明確地分離服務,將每個服務的關注點集中在整個應用中的某個明確定義的位置,這些服務可以通過服務之間的松耦合以新穎的方式組合,并可以獨立部署,清晰的關注點分離,跨領域的最小耦合,以及更高變化率的潛力導致業務靈活性和工程速度的提高,許多人都被微服務架構能夠更頻繁地做出改變且減少負面影響的傭訓所吸引,

通過持續交付和基礎設施的可編程化,這些實踐在實作微型服務的程序中對彈性、敏捷性和生產力產生了積極的影響,微服務的另一個關鍵好處是,它們可以使整個體系結構的不同部分的所有者在持久性機制選擇、一致性和并發性方面對構建大規模分布式系統做出非常不同的決策,這給了服務所有者更大的自主權,可以導致更快地采用新技術,并且可以允許他們追求定制的方法,這些方法可能只對少數服務,甚至只對一個服務是最佳的,

雖然微服務有實作上的難度,但是可以為那些麻煩的組織帶來好處,盡管其中一些收益并不是顯而易見的,下面是一些不那么明顯的好處,這些因素可能是采用微服務的額外收益,

隱性收益 # 1: 無許可創新

關于創新,可以參考《隄上創新誰述記——老碼農的“創新”漫談》和《斯須改變如蒼狗——一張圖的隨想》,那么,什么是無許可創新呢?無許可創新是指“其他人在我們創造的通信結構之上創造新事物的能力”,

一旦啟用了微服務,它可以引導業務方創新一系列的介面,應用這些介面可能使得設計者都會感到驚訝,為了確定無許可創新是否已經到了可能的程度,一個簡單的測驗是觀察團隊間會議的流行程度,跨團隊會議表明了協調、耦合以及服務介面的粒度或功能問題,一個熱愛無許可創新的組織應該有較高的實驗率和較低的跨團隊會議率,

隱性收益 # 2: 可預料的故障

在IT領域,我們仍然不知道如何構建一個作業可靠的復雜系統,這一點不足為奇,系統的不可靠性隨著規模和復雜程度的增加而增加,雖然對于微服務是否能夠降低整體復雜性的看法不一,但是微型服務通常會增加故障的數量是肯定的,此外,跨服務邊界的故障更難以排除,因為外部呼叫堆疊本身比內部呼叫堆疊更脆弱,而且除錯任務受到更糟糕的工具和更具挑戰性的特定功能分析的限制,有人說:“我們用微型服務替換了原來的單體結構,于是每一次斷電都可能更像是一場謀殺之謎,”

為不可避免性失敗的常態而設計,可以引發關于狀態持久性、彈性、依賴管理、共同命運和優雅降級的常態討論,這樣的討論通常利用快取、監控、分流與限流、負載減少等技術來減少任何給定故障的爆炸半徑,在一個成熟的微服務體系結構中,應該預料到單個服務的故障,而所有服務的級聯故障應該是不可能的,

隱性收益 # 3: 突破信任

在小公司或小型代碼庫中,一些工程師可能對部署的內容有強烈的信任感,因為他們會review每一個提交內容,隨著團隊規模的增加,“鄧巴數”開始發揮作用,導致這種信任變得越來越緊張,關于鄧巴數,可以參考《有意義的不只是鄧巴數》,

向微服務的轉型可以迫使這種信任浮出水面并面對現實,一個服務和另一個服務之間的邊界是一組API,我們放棄了對這些API背后的設計、如何開發實作以及資料如何持久化的影響,以換取一組服務質量等級(SLA)來管理API的穩定性及其運行時的特性(關于SLA可以參考淺析面向云架構的SLA 以及性能,10點系統性思考),信任可以用自治和責任的結合來取代,

微服務可以為不斷發展的組織提供一個有效的模式,它的規模遠遠超出了“鄧巴數”的限制,

隱性收益 # 4: 構建并擁有

微服務鼓勵“構建并擁有它”的模式,亞馬遜 CTO Werner Vogels 在2006年與 Jim Gray 的一次對話中描述了這個模型: “每個服務都有一個與之相關的團隊,這個團隊完全負責這個服務——從確定功能的范圍,到構建它,再到運行它,也就是說,開發者建造并運行它,這使得開發人員能夠接觸到這些軟體的日常操作,也使他們與客戶進行日常接觸,客戶反饋回路對于提高服務質量至關重要,”

在之后的十年里,隨著越來越多的軟體工程師遵循這種模式,并承擔起運營和開發微服務的責任,已經推動了一系列實踐的廣泛應用,這些實踐能夠實作更大程度的自動化,并降低運營成本,其中包括持續部署、虛擬化或容器化、自動彈性和各種自我修復技術,

隱性收益 # 5: 加速廢棄

在一個巨型單體架構體系中,很難安全地反對任何東西,使用微型服務,則很容易獲得服務呼叫量的清晰視圖,支持服務的不同版本和潛在的競爭版本,或者建立一個除了向后兼容那些用戶最關心的介面之外與舊服務不共享任何東西的新服務,

在一個無許可創新的世界里,服務可以而且應該經常變來變去,需要投入一些努力,使那些沒有真正流行起來的服務變得更加容易使用,解決這個問題的一個方法是對資源進行高度的競爭,任何資源有限的團隊,只要負責一項不景氣的服務,就會把大部分時間花在對客戶更重要的其他服務上,當這種情況發生時,服務的不成功責任應該轉移到最關心它的用戶身上,這個團隊可能理所當然地認為自己是被留下來“頂鍋扛雷” ,其他團隊則不希望保留對他們的依賴關系,這樣就有了遷移或終止依賴服務的額外動機,這聽起來可能很殘酷,但這是“快速失敗”的一個重要部分,

隱性收益 # 6: 終止資料庫瓶頸

在亞馬遜的早期,少量的關系資料庫被用于公司所有關鍵的事務資料,為了保證資料的完整性和性能,任何提議的模式更改都必須經過 DBA團隊的審查和批準,

使用微服務后,服務使用者不應該關心資料在一組API背后是如何持久化的,而且實際上,在不需要通知的情況下,將一種持久化機制替換為另一種持久化機制應該是可能的,

隱性收益 # 7: 集中面對痛苦

向微型服務的轉型應該使組織能夠采取非常不同的方法來滿足其對不同服務的治理期望,這將從一個一致資料分類模型和不同業務流程完整性的關鍵度劃分開始,這通常會導致為處理最重要資料和流程的服務建立安全模型,并實施必要的控制以滿足公司的安全和合規需求,

隨著微服務的激增,可以確保最重要的合規負擔集中在極少數服務上,從而使剩余的服務有更高的創新率,相對沒有這些問題的負擔,

隱性收益 # 8: 不同的測驗

工程團隊經常把遷移到微服務視為一個機會,可以從不同的角度考慮測驗,通常,在開始構建服務之前,會開始考慮如何在設計的早期階段進行測驗,更明確地界定所有權和范圍可以鼓勵實作更大測驗的覆寫面,正如 Yelp 在闡述其服務原則時所說的,“介面是測驗中最重要的組件,介面測驗將告訴客戶端實際看到了什么,而其余的測驗將告訴如何確保客戶端看到這些結果,”

采用持續集成、持續部署、冒煙測驗和灰度部署等實踐,可以導致在生產中發現問題時進行高保真和低修復時間的測驗,一組測驗的有效性不能用發現問題的速度來衡量,而更多的是用它們所帶來的變化速度來衡量,

微服務轉型中的危險指標

如果我們遇到了如下的情景,說明我們的微服務轉型是不完整的,甚至是危險的,這些指標至少包括包括:

  • 不同的服務進行協調部署,

  • 需要提供客戶端庫,

  • 一個服務的改變會產生意想不到的后果,或甚至需要修改其他服務,

  • 服務共享同一個持久性存盤,

  • 在沒人幫助的情況下,你不能改變自己服務的持久化層,

  • 工程師需要對其他團隊服務的設計和模式有深入的了解,

  • 有一個統一適用于所有服務的合規控制,

  • 基礎設施不可編程,

  • 不能進行一鍵式的部署和一鍵式回滾,

結束語

微服務并不適用于每個公司,這個微服務的實作程序也并不容易,因此,關于采用微服務的討論往往非常熱烈,主要集中在自主性、敏捷性、彈性和開發人員的生產力上,然而,好處并不僅限于此,為了讓微服務之旅更有價值,有意識地獲得額外收益也很有意義,

【關聯閱讀】

  • 沒有被了解的API?一個老碼農眼中的API世界

  • 華為資料之道:資料分類管理框架和經驗

  • 隄上創新誰述記——老碼農的“創新”漫談

  • 斯須改變如蒼狗——一張圖的隨想

  • 計算機網路的元認知、實踐與未來

  • 軟體架構的10個常見模式

  • 淺析面向云架構的SLA

  • 服務可用性的一知半解

  • 性能,10點系統性思考

  • 分布式系統的時間問題

  • 如何進入一個新領域

  • 零信任安全的認知

  • 老碼農的AI漫談

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238006.html

標籤:AI

上一篇:歷代高通/蘋果/三星/聯發科/華為旗艦處理器概覽,更新于2020年12月

下一篇:[譯]尋路優化

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more