日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

后端技术趋势指南|如何选择自己的技术方向

發布時間:2024/4/11 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 后端技术趋势指南|如何选择自己的技术方向 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程多條路,條條通羅馬

后臺大佬

后臺路線都是面對后臺服務器業務,比如web后臺服務器,視頻后臺服務器,搜索后臺服務器,游戲后臺服務器,直播后臺服務器,社交IM后臺服務器等等,大部分代碼和業務邏輯相關,想成為大佬,必須精通專業領域業務知識。

但同時也存在一些通用的技術要求, ?比如熟悉編程語言,數據結構與算法,?網絡編程,TCP/IP協議,數據庫,中間件,高性能,高可用技術。

后臺技術演進

架構演進


隨著 PC 局域網,特別是關系型數據庫的應用,基礎架構發展成了兩層架構;隨后是廣域網的發展,由單體的多層架構,出現了 SOA,EDA 架構盛行;接下來是虛擬機,再到今天的云計算基礎架構,又出現了微服務,之后是 Container as a Service、Serverless ,到最近很火原云生架構等,可以看到架構的變化都是要充分利用 IT 基礎設施。

業務目標演進

???????????????????以往互聯網流量爆發時代,先抗住流量峰值,高并發、高性能是,支持水平擴展是后臺設計的重要目標?。當前互聯網流量見頂,存量競爭加劇,后臺服務的穩定性變得愈發重要,企業降本增效決心變強,研發效率,監控運維平臺,自動化測試,CI/CD流水線等也變得重要起來。

后臺開發語言演進

服務器硬件資源昂貴年代,C++既能高性能,又能代碼復用(OOP編程),成了很多大廠后臺開發的主力語言。

第一代web后臺開發主流是PHP,那時候互聯網主流的后臺架構是LAMP架構,隨著電商興起,Android 手機普及,大數據出現,推動JAVA技術棧發展,JAVA成了互聯網主流后臺編程語言。

隨著云計算時代到來,云原生計算興起,Go語言生態發展穩健,兼顧性能和開發速度,越來越多企業在生產中使用 Go語言落地業務,目前很多大廠后臺開發語言已經開始轉向Go。

人工智能發展,也推動Python語言發展,簡單,上手快,開發效率高,成了一些不在乎性能后臺組件的開發語言。

由于安全性,穩定性越發重要,Rust有可能成后臺關鍵組件開發語言,兼顧性能和內存安全性,用來替換后臺系統核心的C++組件;

對于未來,Python、Go、Rust 成為后端未來最先考慮學習編程語言。

目前國內各個大廠主流后臺語言不盡相同:

  • 騰訊偏向C++,Go等,Go越來越流行

  • 阿里,拼多多,美團,京東偏向Java

  • 字節偏向Go/Python

  • 百度偏向C++

  • 華為偏向C/C++

中間件高手

中間件Middleware)一種應用于分布式系統的基礎軟件,自上世紀80年代誕生以來,在分布式環境中低調地發揮著重要作用。基于中間件,系統軟件與應用軟件之間實現了高效連接與溝通,應用開發得以提速。

消息中間件

  • ActiveMQ 的社區算是比較成熟,但是較目前來說,ActiveMQ 的性能比較差,而且版本迭代很慢,不推薦使用。

  • RabbitMQ 在吞吐量方面雖然稍遜于 Kafka 和 RocketMQ ,但是由于它基于 erlang 開發,所以并發能力很強,性能極其好,延時很低,達到微秒級。但是也因為 RabbitMQ 基于 erlang 開發,所以國內很少有公司有實力做erlang源碼級別的研究和定制。如果業務場景對并發量要求不是太高(十萬級、百萬級),那這四種消息隊列中,RabbitMQ 一定是你的首選。如果是大數據領域的實時計算、日志采集等場景,用 Kafka 是業內標準的,絕對沒問題,社區活躍度很高,絕對不會黃,何況幾乎是全世界這個領域的事實性規范。

  • RocketMQ 阿里出品,Java 系開源項目,源代碼我們可以直接閱讀,然后可以定制自己公司的MQ,并且 RocketMQ 有阿里巴巴的實際業務場景的實戰考驗。RocketMQ 社區活躍度相對較為一般,不過也還可以,文檔相對來說簡單一些。還有就是阿里出臺的技術,你得應對這個技術萬一被拋棄,社區黃掉的風險,如果你們公司有技術實力我覺得用RocketMQ 挺好的。

  • Kafka 的特點其實很明顯,就是僅僅提供較少的核心功能,但是提供超高的吞吐量,ms 級的延遲,極高的可用性以及可靠性,而且分布式可以任意擴展。同時 Kafka 最好是支撐較少的 topic 數量即可,保證其超高吞吐量。Kafka 唯一的一點劣勢是有可能消息重復消費,那么對數據準確性會造成極其輕微的影響,在大數據領域中以及日志采集中,這點輕微影響可以忽略。Kafka天然適合大數據實時計算以及日志收集。

下一代消息中間件Apache Pulsar:

?對比kafka

Apache Pulsar 和 Apache Kafka 之間的根本區別在于 Apache Kafka 是以分區為存儲中心,而 Apache Pulsar 是以 Segment 為存儲中心, Apache Pulsar 這種獨特的基于分布式日志存儲的以 Segment 為中心的發布/訂閱消息系統可以提供許多優勢,例如可靠的流式系統,包括無限制的日志存儲,無需分區重新平衡的即時擴展,快速復制修復以及通過最大化數據放置實現高寫入和讀取可用性選項.

緩存中間件

我們都知道CPU的緩存的作用是為了減少對內存訪問,同樣擴展到分布式系統里面,緩存中間件可以提高對組件數據的訪問性能。

redis就是比較流行緩存中間件,根據局部性原理,冷熱數據分離,一般用來加快數據庫的高頻數據訪問:

未來優化方向:

  • 高可用

  • 持久化優化

  • 安全加密

  • IO、連接優化

  • 多線程優化

  • 數據結構優化,支持更多數據結構

?RPC框架

RPC是指遠程過程調用,也就是說兩臺服務器A,B,一個應用部署在A服務器上,想要調用B服務器上應用提供的函數/方法,由于不在一個內存空間,不能直接調用,需要通過網絡來表達調用的語義和傳達調用的數據。

微服務時代的遠程服務調用框架。如grpc, Thrift, 阿里的 HSF, Dubbo, SOFA-RPC;

未來發展方向:

  • 支持微服務技術演進

  • 框架侵入性改進,語言無關,通信協議無關。

  • Service Mesh,Service Mesh是一個基礎設施層,其獨立運行在應用服務之外,提供應用服務之間安全、可靠、高效的通信,并為服務通信實現了微服務運行所需的基本組件功能,包括服務注冊發現、負載均衡、故障恢復、監控、權限控制等等

  • 性能優化,序列化協議優化,消息編碼優化,網絡IO優化等。

負載均衡

負載均衡(Load Balancing)是高可用網絡基礎架構的關鍵組件,通常用于將工作負載分布到多個服務器來提高網站、應用、數據庫或其他服務的性能和可靠性

硬件:F5、Redware...

軟件:lvs(四層)、haproxy(四,七層)、nginx(七層)...

未來發展方向:

  • 支持更智能調度算法:

    循環?- 請求按順序分布在服務器組中。

    最少的連接?——一個新的請求被發送到與客戶端的當前連接最少的服務器。每個服務器的相對計算能力被考慮到確定哪個服務器的連接最少。

    最短時間- 將請求發送到由結合了
    最快響應時間和最少活動連接的公式選擇的服務器。NGINX Plus 獨有。

    Hash?– 根據您定義的密鑰分發請求,例如客戶端 IP 地址或
    請求 URL。
    如果上游服務器集發生變化,NGINX Plus 可以選擇應用一致的哈希來最小化負載的重新分配。

    IP Hash??– 客戶端的 IP 地址用于確定哪個服務器接收請求。

  • 業務上云,云上負載均衡(LaaS,PaaS服務)。

  • 高性能優化,降低成本,大流量(IO優化,DPDK,FPGA,P4演進),硬件。

  • 高可用,可觀測,監控統計,告警系統,平滑擴容,服務剔除,無狀態化。


內核大師

內核路線,探究底層奧秘

云計算

云計算進程提速,一切皆服務,導致原來不掙錢底層技術,可以賣錢了,技術可以通過云計算向外輸出,這是底層技術人春天的到來:

Software as a Service,軟件即服務,簡稱SaaS,這層的作用是將應用作為服務提供給客戶。

Platform as a Service,平臺即服務,簡稱PaaS,這層的作用是將一個開發平臺作為服務提供給用戶。

Infrastructure as a Service, 基礎設施即服務,簡稱IaaS,這層的作用是提供虛擬機或者其他資源作為服務提供給用戶。

IaaS核心技術計算網絡存儲,這些可以算是軟件技術的最底層了(再底層,就是硬件了),基本上要和內核OS打交道,要求具有內核的二次開發的能力,熟悉操作系統實現(主要是熟悉Linux內核源碼)。

計算:計算虛擬化,內核調度系統,cgroups,KVM, QEMU,virtio;

網絡:網絡虛擬化,內核協議棧,netfilter,netns,DPDK,智能網卡,RDMA,P4等;

存儲:內存虛擬化,磁盤虛擬化,SPDK等;

PaaS核心技術應用運行環境(容器,多租戶彈性,K8S),應用全生命周期支持(devops,自動化運維),集成、復合應用構建能力(CI/CD)等。

這些技術職位本身門檻是很高的,待遇也比一般職位要高,對底層技術非常感興趣可以關注。

瀏覽器內核

webkit

WebKit是Safari、Mail、App Store 和 macOS、iOS 和 Linux 上的許多其他應用程序使用的網絡瀏覽器引擎。

Chromium

Chromium是一個用于網絡瀏覽器的免費開源?代碼庫,主要由Google開發和維護。Google 使用該代碼制作其Chrome網絡瀏覽器,該瀏覽器具有附加功能。

Chromium代碼庫被廣泛使用。Microsoft Edge、Opera,QQ瀏覽器,UC瀏覽器等國內瀏覽器,和許多其他瀏覽器都基于該代碼。此外,代碼的重要部分被多個應用程序框架使用。

chromium架構

C++是主要語言,約占代碼庫的一半。這包括Blink和V8 引擎、HTTP和其他協議的實現、內部緩存系統和其他基本瀏覽器組件。一些用戶界面是用HTML、CSS和JavaScript 實現的。大量的網絡平臺測試也是用這些語言編寫的。大約 10% 的代碼庫是用C編寫的。這主要來自提供基本功能的第三方庫,例如SQLite和眾多編解碼器。支持移動?操作系統需要特殊的語言:Java的用于Android的,和iOS的兩個斯威夫特和????????Objective-C的。(Apple的WebKit引擎的副本也在代碼庫中,因為 iOS 瀏覽器需要它)

如果對web內核技術感興趣,可以選擇瀏覽器方向!

數據庫內核

技術初衷

在操作系統出現之后,隨著計算機應用范圍的擴大、需要處理的數據迅速膨脹。最初,數據與程序一樣,以簡單的文件作為主要存儲形式。以這種方式組織的數據在邏輯上更簡單,但可擴展性差,訪問這種數據的程序需要了解數據的具體組織格式。當系統數據量大或者用戶訪問量大時,應用程序還需要解決數據的完整性、一致性以及安全性等一系列的問題。因此,必須開發出一種系統軟件,它應該能夠像操作系統屏蔽了硬件訪問復雜性那樣,屏蔽數據訪問的復雜性。由此產生了數據管理系統,即數據庫。

目前現狀

世界范圍內,做數據庫開發的,基本上都是基于開源項目,即便是自研也肯定會參考現有的開源項目,所以要選擇數據庫,必須要把開源玩的非常溜才行,比如MySQL, PostgreSQL, MongoDB, LevelDB等。目前云計算廠商都在大力發展數據庫,在國內公有云部署模式中,阿里、騰訊、AWS、Oracle、華為、Microsoft位列前六,于國內數據庫行業而言,數據庫廠商取得四十年最好的發展機會,市場大環境(國家去IOE化戰略)有利于國內廠商,技術方面總體接近,一些技術持平甚至領先

當前熱門方向:

  • 分布式數據庫,分片,事務,一致性等

  • 數據庫性能優化,SQL指令優化,軟件優化,硬件加速

  • 高可用架構

  • 存量數據庫上云

  • 數據庫智能化,自動化管控

  • 云原生架構

如果對數據庫技術感興趣,可以選擇這條路。

操作系統?

目前國家大力發在新基建,鼓勵和政策支持企業開發基礎技術,操作系統當前就是一個重要方向,目前各大公司要么自研OS,要么基于開源OS進行二次開發。

目前熱門技術方向:

  • 鴻蒙開源OS,自研OS

  • 嵌入式OS,自研和基于嵌入式Linux

  • 手機OS,基于Android二次開發

  • 云計算OS,基于Linux 內核, Redhat發行版等二次開發

開發OS,主要是適配新硬件,性能優化(調度性能,內存分配性能,協議棧處理性能,文件系統優化),穩定性優化,虛擬化技術等。

如果對OS有情懷,喜歡和底層硬件打交道,可以選擇操作系統方向,目前前景還不錯!

嵌入式

由于5G,AI發展,手機,智能硬件,自動駕駛,IoT領域又煥發新春,各種智能硬件起飛。

熱門技術方向:

  • 嵌入式OS(Vxworks,Alios, TencentOS tiny,?Huawei LiteOS、RT-Thread等)

  • 智能家居系統

  • 手機OS(鴻蒙,Android等)

  • 手機性能優化(性能和節能更強)

  • 自動駕駛技術

喜歡硬件的發燒友,喜歡車庫文化的極客,可以選擇!

JDK

自1995年Sun公司推出Java至今,Java這門編程語言已經風光了25年。最近關于Java要沒落的言論甚囂塵上,但Java仍然是國內中國互聯網公司首選的編程語言,諸如阿里巴巴、京東、百度、騰訊、美團等。隨著互聯網、大數據、AI的迅猛發展,國內JAVA生態已逐漸劃分成了幾大陣營,J2EE企業級應用傳統領域是大廠商(甲骨文、微軟)主導,互聯網領域是pivotal,互聯網中間件是阿里云和pivotal在推spring cloud,大數據、移動安卓又分別是另一個獨立生態。

OpenJDK(開放 Java 開發工具包)是Java 平臺標準版(Java SE)的免費開源實現。目前各個大公司都在發展自己JDK版本,如果想在Java領域深耕且想轉為底層開發,可以選擇JDK這條路!

分布式專家

微服務

Service Mesh 在過去的一年依舊保持著熱度。在已經過去的 2020,微服務可以說有堅守也有破局,有對服務微化共識的形成也有對特殊場景的理性思考。我們可以看到服務框架依然在持續演進,奔向云原生,擁抱云化。越來越多的企業開始跟上服務化云化步伐。

微服務、DDD、中臺技術并非企業技術架構設計的銀彈,微服務的主要缺點是微服務的分布式特點帶來的復雜性。開發人員需要基于RPC或者消息實現微服務之間的調用和通信,而這就使得服務之間的發現、服務調用鏈的跟蹤和質量問題變得的相當棘手。

騰訊開源的微服務框架TARS:

但微服務仍然分布式的熱門方向,符合高內聚,低耦合架構設計思想,這個過程中出現的問題等著我們去解決,比如Service Mesh出現。

Service Mesh作為Sidebar運行,對應用程序來說是透明,所有應用程序間的流量都會通過它,所以對應用程序流量的控制都可以在Service Mesh中實現。

目前流行的Service Mesh開源軟件有Linkerd、Envoy和Istio,而最近Buoyant(開源Linkerd的公司)又發布了基于Kubernetes的Service Mesh開源項目Conduit。

中臺架構

當前企業做大做強后,業務必然會增多,開始出現重復造輪子,由于業務擴張,本身人力就不足,所以長期方案還是會采用類似中臺的技術,這樣節約人力,具體怎么落地,這個是考驗團隊和公司從上到下的推動能力了。

云原生

云原生(CloudNative)是一個組合詞,Cloud+Native。Cloud表示應用程序位于云中,而不是傳統的數據中心;Native表示應用程序從設計之初即考慮到云的環境,原生為云而設計,在云上以最佳姿勢運行,充分利用和發揮云平臺的彈性+分布式優勢。

2021年伊始,云原生的布局開始加速。華為云聯合CNCF(云原生計算基金會)、中國信通院成立創原會,加速云原生產業落地;金山云發布云原生全景圖、云原生產品矩陣和最新的Serverless產品;諾基亞宣布與谷歌云合作開發云原生5G技術……幾乎所有云廠商新發布的云計算產品都已打上了云原生的標簽。

云原生核心技術

  • 容器化:作為應用包裝的載體

  • 持續交付:利用容器的輕便的特性,構建持續集成和持續發布的流水線

  • DevOps:開發與運維之間的協同,上升到一種文化的層次,能夠讓應用快速的部署和發布

  • 微服務:這是應用開發的一種理念,將單體應用拆分為微服務才能更好的實現云原生,才能獨立的部署、擴展和更新

K8S已經成為下一代云原生操作系統


Kuberentes 架構

Kubernetes 最初源于谷歌內部的 Borg,提供了面向應用的容器集群部署和管理系統。Kubernetes 的目標旨在消除編排物理 / 虛擬計算,網絡和存儲基礎設施的負擔,并使應用程序運營商和開發人員完全將重點放在以容器為中心的原語上進行自助運營。Kubernetes 也提供穩定、兼容的基礎(平臺),用于構建定制化的 workflows 和更高級的自動化任務。Kubernetes 具備完善的集群管理能力,包括多層次的安全防護和準入機制、多租戶應用支撐能力、透明的服務注冊和服務發現機制、內建負載均衡器、故障發現和自我修復能力、服務滾動升級和在線擴容、可擴展的資源自動調度機制、多粒度的資源配額管理能力。Kubernetes 還提供完善的管理工具,涵蓋開發、部署測試、運維監控等各個環節。

如果你想成為互聯網架構師,K8S架構是你應該去了解的。

什么時候要考慮開始跳槽了

一般在一家公司,認真努力工作三年后(摸魚不算),職位沒有普升或者薪水沒有翻倍,就可以考慮跳槽了,請記住我們的口號是:

如何應對技術趨勢變化

軟件設計有兩個關鍵目標:高內聚低耦合,圍繞這2個核心目標,又提出了單一職責、開閉原則、里氏替換、依賴導致、接口隔離、最少知識等設計原則。

軟件工程師一直都在為這兩個目標而努力奮斗,以求把軟件編寫得更加清晰、更加健壯、更加易于擴展和維護。

但后來,人們發現有更多的訴求,希望開發軟件變得更簡單、更快捷,程序員希望更少編寫代碼,非專業人員也希望能開發程序,于是,更多的更傻瓜的編程語言被發明出來,更多的編程技術和編程思想被發明出來,比如庫、組件、云基礎設施。

于是很多技術變成了屠龍之技,比如匯編,時代變了,建國后動物不能成精了,沒有龍可以宰了,然后很多軟件工程師搖身一變成了調參工程師、Call API磚家、用庫包能手、拼組件達人,這是效率分工的結果,也是技術發展的使然。

縱觀近二十年的科技互聯網發展歷程,大的趨勢是技術下沉,特別是近些年,隨著云計算的發展和普及,基礎設施越來越厚實,業務開發變得越來越容易,也越來越沒有技術含量,而之前困擾小團隊的性能、負載、安全性、擴展性問題都不復存在,這不禁讓互聯網行業的油膩大叔們噤若寒蟬,仿佛分分鐘就要被卷入歷史洪流而萬劫不復。

雖然不可否認技術的重要性在降低,但也還不至于那么悲觀。遙想PC時代,當VB、Delphi、MFC出現的時候,也有類似論調,所見即所得,點點鼠標,就可以開發PC桌面程序,是不是很高端?那時候碼農的擔心相比現在恐怕是只多不少吧,但后來隨著互聯網興起,出現了后端開發這個工種,碼農很快找到了新的戰場,網絡、分布式、數據庫、海量服務、容災防錯,于是又玩出一堆新花樣。

技術永遠在不停向前發展,而我們需要加深對基礎知識的理解,以不變應萬變,深耕一個領域,同時也需要多去嘗試新技術,擴寬自己的眼界,增加解決問題的思路,當你有一技之長后,即便國內35危機,你還可以去外企(Google,Facebook,亞馬遜,微軟等)養老。

參考和擴展閱讀

https://jimmysong.io/kubernetes-handbook/concepts/

https://cloud.51cto.com/art/202103/652294.htm

https://cloud.tencent.com/developer/article/1404117

https://www.zhihu.com/question/22799206

https://www.chromium.org/developers/design-documents/multi-process-architecture

https://blog.csdn.net/zxc024000/article/details/80157332

https://juejin.cn/post/6844904197859590151

- END -


看完一鍵三連在看轉發,點贊

是對文章最大的贊賞,極客重生感謝你

推薦閱讀

大規模微服務利器:eBPF + Kubernetes

深入理解編程藝術之策略與機制相分離

如何成為技術大神

總結

以上是生活随笔為你收集整理的后端技术趋势指南|如何选择自己的技术方向的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。