我們總結了每個技術團隊都會遇到的 4 個難題

2021-09-12 13:48:13 字數 1970 閱讀 1798

阿里巴巴 2019 年實習生校園招聘已經啟動,為此,我們整理了一篇《每個技術團隊都會遇到的4個難題》,幫助即將從校園進入公司實習的後端程式設計師,以實踐的視角,看看乙個後端技術團隊會遇到的一些難題。雖然,技術上的難題遠不止於此,但如果能從這篇文章中獲得一些職業體感,也許對你的實習面試會有所幫助。

參與「測測你的程式設計師屬性」,有機會獲得 cherry 櫻桃機械鍵盤、羅技滑鼠等獎品。

- 正文開始 -

從單個應用到多個應用,從百千級別的訪問流量到十萬、百萬級別,從兩三個人的創業技術團隊到上千人的技術團隊矩陣,這些過程中,技術團隊都避不開了以下 4 個問題:

早期的做法是在開發測試環境進行壓測,來評估線上容量,但線下環境的機器規模,和線上差距很大,很難通過線下推導線上。根據經驗,將採購的機器加入不同的應用裡面,這時候就會遇到乙個問題: 最大業務峰值容量是多少?

這個問題,其實挺難回答的。這個應用多加幾台,那個應用少加幾台,整體的業務峰值承受能力就會不一樣,加減的規則很難通過人的經驗來確定,最多只能作為一些輔助判斷。另外,核心交易鏈路的梳理,也是乙個體力活,如果依賴人為處理,有可能會漏掉一些看起來不那麼重要的」分支」,這是整個容量不確定的地方,可變的因子很多。

比較有效的方式, 是在生產系統部署全鏈路壓測,來驗證各個生產環節是否能經受住各類流量的訪問,讓真實的流量來訪問生產環境,實現全方位的真實業務場景模擬,確保各個環節的效能、容量和穩定性均可做到萬無一失。

日常的各種運營活動,都有可能帶來巨大的流量高峰,除了通過引入全鏈路壓測來驗證各個生產環節是否能經受住各類流量的訪問, 構建系統的高可用保障能力也很關鍵,涉及多個元件或模組,例如軟負載和配置中心、服務接入和排程編排、訊息接收和傳送、容器和排程、限流和降級 等。

運營一次活動,最大的流量峰值是可以**的,這就是服務的最大接待能力,比如50萬筆的交易建立峰值,那超過的怎麼辦?這時候,採用限流的方式,被限流的客戶在某一段時間內無法進行購物,一旦系統恢復服務能力,就可以繼續服務被限流的客戶,從而避免因流量超過上限,而影響整個平台的客戶。

分布式應用系統在協作性,擴充套件性和一定的容錯性方面,體現出了優勢,但是在監控、運維和診斷層面,面臨相當大的挑戰。

早期,架構師可以畫出整個應用系統的互動架構圖,隨著業務的發展,當擁有大量的應用、微服務和容器,即便整理了一幅互動架構關係圖,也會因為應用系統的變更,新需求的實現,整個應用系統的互動又會發生變化,這種變化無處不在,每天都在發生。因此,隨著業務量的增加,需要覆蓋面廣且深的全鏈路跟蹤監控系統 ,來診斷呼叫鏈的問題。

越是複雜的業務形態,定位的難度越大,就越需要全方位、360度無死角的監控,因此,建立乙個平台化、跨領域和立體化的監控,能極大的縮短業務遇到問題時的恢復時間。

開發效率是乙個很廣泛的話題。不同的開發崗位,不同的使用場景,會有不一樣的開發效率工具。這裡,我們介紹幾款後端工程師經常會用到的效率工具。

對於 json 的資料,如果不編排,格式檢視起來會很費勁。json-handle 是一款對 json 格式的內容進行瀏覽和編輯,以樹形圖樣式展現 json 文件的外掛程式,支援實時編輯。

當然,除了這些現成的效率工具,提公升整個技術團隊的開發效率,需要單獨開發或改造一些系統,例如團隊協作平台、服務化改造等,當你以實習生的身份加入公司後,若有機會參與到這些提公升開發效率的專案過程中。由此形成的效率意識,將會影響到你今後的工作習慣和理念。

掃碼參與

我們總結了每個技術團隊都會遇到的 4 個難題

阿里巴巴 2019 年實習生校園招聘已經啟動,為此,我們整理了一篇 每個技術團隊都會遇到的4個難題 幫助即將從校園進入公司實習的後端程式設計師,以實踐的視角,看看乙個後端技術團隊會遇到的一些難題。雖然,技術上的難題遠不止於此,但如果能從這篇文章中獲得一些職業體感,也許對你的實習面試會有所幫助。參與 ...

該做一些總結了

最近狀態不好,說這話有一些牽強,或者從沒有過好的狀態。但是感覺失去了一些東西。但是突然無法言明。不知道怎麼了,感覺自己好像變得越來越看不懂。我不知道我需要的是什麼,有些東西你去想了,但是自己感覺也就只是去想了。我對有些事情太妥協,太軟弱,結果是太無知。每做一件事情感覺自己是沿著心中的那條線往前走的,...

android學習總結了幾點問題

1.handler handler是什麼,作用及為何引入handler的概念?handler作用 1 執行計畫任務,你可以預定的實現執行某些任務,可以模擬定時器 2 執行緒間通訊。在android的應用啟動時,會建立乙個主線程,主線程會建立乙個訊息佇列來處理各種訊息。當你建立子執行緒時,你可以在你的...