精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Spring Cloud與K8S對比

我快閉嘴 ? 來源:CSDN技術社區 ? 作者:sp42a ? 2022-09-15 15:46 ? 次閱讀

背景

Spring Cloud 與 K8S 對比

Spring Cloud vs Istio

Spring Boot + K8S

Service Mesh的價值

背景

過去,我們運維著“能做一切”的大型單體應用程序。這是一種將產品推向市場的很好的方式,因為剛開始我們也只需要讓我們的第一個應用上線。而且我們總是可以回頭再來改進它的。部署一個大應用總是比構建和部署多個小塊要容易。

集中式:

079a1ecc-317b-11ed-ba43-dac502259ad0.png

集中式

集群:

07a3e7c2-317b-11ed-ba43-dac502259ad0.png

集群

分布式:

07b1a218-317b-11ed-ba43-dac502259ad0.png

分布式

分布式和集中式會配合使用。

我們在搭建網站的時候,為了及時響應用戶的請求,尤其是高并發請求的時候,我們需要搭建分布式集群來處理請求。我們一個服務器的處理能力是有限的。如果用我們一臺設備當作服務器,那么當并發量比較大的時候,同一時間達到上百的訪問量。那服務器就宕機了。然后只能重啟服務器,當出現高并發訪問的時候,就又會宕機。所以我們需要更多的服務器來并行工作,處理用戶的請求。那么問題來了,我們服務器運行的時候,怎么分發大量的請求給不同的服務器呢?一般會采用(1apache+nTomcat)或者服務器模式來分發并處理請求。或者采用nginx分發請求。

微服務是運行在自己的進程中的可獨立部署的服務套件。他們通常使用 HTTP 資源進行通信,每個服務通常負責整個應用中的某一個單一的領域。在流行的電子商務目錄例子中,你可以有一個商品條目服務,一個審核服務和一個評價服務,每個都只專注一個領域。

用這種方法讓多語言服務(使用不同語言編寫的服務)也成為可能,這樣我們就可以讓 Java/C++ 服務執行更多的計算密集型工作,讓 Rails / Node.js 服務更多來支持前端應用等等。

微服務會成為大規模分布式應用的主流架構。任何復雜的工程問題都會歸結為devide and conquer(分而治之),意思就是就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。微服務本質是對服務的拆分,與工程領域慣用的“分而治之”的思路是一致的。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

Spring Cloud 與 K8S 對比

兩個平臺 Spring Cloud 和 Kubernetes 非常不同并且它們之間沒有直接的相同特征。

07c0782e-317b-11ed-ba43-dac502259ad0.png

Spring Cloud 與 K8S 對比

?兩種架構處理了不同范圍的MSA障礙,并且它們從根本上用了不同的方法。Spring Cloud方法是試圖解決在JVM中每個MSA挑戰,然而Kubernetes方法是試圖讓問題消失,為開發者在平臺層解決。Spring Cloud在JVM中非常強大,Kubernetes管理那些JVM很強大。同樣的,它就像一個自然發展,結合兩種工具并且從兩個項目中最好的部分受益。?

可以看到,里面差不多一半關注點是和運維相關的。這么看來,似乎拿spring cloud和kubernetes比較有點不公平,spring cloud只是一個開發框架,對于應用如何部署和調度是無能為力的,而kubernetes是一個運維平臺。也許用spring cloud+cloud foundry去和kubernetes比較才更加合理,但需要注意的是,即使加入了cloud foundry的paas能力,spring cloud仍然是“侵入式”的且語言相關,而kubernetes是“非侵入式”的且語言無關。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://gitee.com/zhijiantianya/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

Spring Cloud vs Istio

07cf9b7e-317b-11ed-ba43-dac502259ad0.png

Spring Cloud vs Istio

?這里面哪些內容是我們可以拿掉或者說基于 Service Mesh(以 Istio 為例)能力去做的?分析下來,可以替換的組件包括網關(gateway 或者 Zuul,由Ingress gateway 或者 egress 替換),熔斷器(hystrix,由SideCar替換),注冊中心(Eureka及Eureka client,由Polit,SideCar 替換),負責均衡(Ribbon,由SideCar 替換),鏈路跟蹤及其客戶端(Pinpoint 及 Pinpoint client,由 SideCar 及Mixer替換)。這是我們在 Spring Cloud 解析中需要完成的目標:即確定需要刪除或者替換的支撐模塊。?

07dddeb4-317b-11ed-ba43-dac502259ad0.png

Spring Cloud vs Istio

可以說,spring cloud關注的功能是kubernetes的一個子集。

可以看出,兩邊的解決方案都是比較完整的。kubernetes這邊,在Istio還沒出來以前,其實只能提供最基礎的服務注冊、服務發現能力(service只是一個4層的轉發代理),istio出來以后,具有了相對完整的微服務能力。而spring cloud這邊,除了發布、調度、自愈這些運維平臺的功能,其他的功能也支持的比較全面。相對而言,云廠商會更喜歡kubernetes的方案,原因就是三個字:非侵入。平臺能力與應用層的解耦,使得云廠商可以非常方便的升級、維護基礎設施而不需要去關心應用的情況,這也是我比較看好service mesh這類技術前景的原因。

Spring Boot + K8S

如果不用 Spring Cloud,那就是使用 Spring Boot + K8S。

07ecb0f6-317b-11ed-ba43-dac502259ad0.png

Spring Boot + K8S

這里就需要介紹一個項目,Spring Cloud Kubernetes,作用是把kubernetes中的服務模型映射到Spring Cloud的服務模型中,以使用Spring Cloud的那些原生sdk在kubernetes中實現服務治理。具體來說,就是把k8s中的services對應到Spring Cloud中的services,k8s中的endpoints對應到Spring Cloud的instances。這樣通過標準的Spring Cloud api就可以對接k8的服務治理體系。

老實說,個人認為這個項目的意義并不是很大,畢竟都上k8了,k8本身已經有了比較完善的微服務能力(有注冊中心、配置中心、負載均衡能力),應用之間直接可以互相調用,應用完全無感知,你再通過sdk去調用,有點多此一舉的感覺。而且現在強調的是語言非侵入,Spring Cloud一個很大的限制是只支持java語言(甚至比較老的j2ee應用都不支持,只支持Spring Boot應用)。所以我個人感覺,這個項目,在具體業務服務層面,使用的范圍非常有限。

借助于Spring Cloud Kubernetes項目,zuul可以以一種無侵入的方式提供api網關的能力,應用完全不需要做任何改造,并且網關是可插拔的,將來可以用其他網關產品靈活替換,整體耦合程度非常低。得益于k8的service能力,zuul甚至支持異構應用的接入,這是Spring Cloud體系所不具備的。而本身基于java開發,使得java程序員可以方便的基于zuul開發各種功能復雜的filter,而不需要去學習go或者openresty這樣不太熟悉的語言。

Service Mesh的價值

無論是單體應用,還是分布式應用,都可以建立在Service Mesh上,mesh上的sidecar支撐了所有的上層應用,業務開發者無須關心底層構成,可以用Java,也可以用Go等語言完成自己的業務開發。

當微服務架構體系越來越復雜的時候,需要將“業務服務”和“基礎設施”解耦,將一個微服務進程一分為二:

07f83246-317b-11ed-ba43-dac502259ad0.png

Service Mesh的價值

為什么代理會叫sidecar proxy?

看了上圖就容易懂了,biz和proxy相生相伴,就像摩托車(motor)與旁邊的車廂(sidecar)。未來,sidecar和proxy就指微服務進程解耦成兩個進程之后,提供基礎能力的那個代理進程。

Istio的理論概念是Service Mesh(服務網絡),我們不必糾結于概念實際也是微服務的一種落地形式有點類似上面的SideCar模式,它的主要思想是關注點分離,即不像SpringCloud一樣交給研發來做,也不集成到k8s中產生職責混亂,Istio是通過為服務配 Agent代理來提供服務發現、負截均衡、限流、鏈路跟蹤、鑒權等微服務治理手段。

Istio開始就是與k8s結合設計的,Istio結合k8s可以牛逼的落地微服務架構。

istio 超越 spring cloud和dubbo 等傳統開發框架之處, 就在于不僅僅帶來了遠超這些框架所能提供的功能, 而且也不需要應用程序為此做大量的改動, 開發人員也不必為上面的功能實現進行大量的知識儲備.

但結論是不是 spring cloud 能做到的,k8s + istio 也能做到?甚至更好?

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • spring
    +關注

    關注

    0

    文章

    338

    瀏覽量

    14312
  • Cloud
    +關注

    關注

    0

    文章

    67

    瀏覽量

    5340
  • kubernetes
    +關注

    關注

    0

    文章

    223

    瀏覽量

    8698

原文標題:Spring Cloud 還沒學明白,Istio 又是什么鬼??

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解決方案與選型對比

    摘要: 今天,日志服務再次升級Kubernetes(k8s)的日志解決方案。1分鐘內即可完成整個集群部署,支持動態擴容,提供采集宿主機日志、容器日志、容器stdout等所有數據源的一站式采集。點此
    發表于 02-28 12:49

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解決方案與選型對比

    摘要: 今天,日志服務再次升級Kubernetes(k8s)的日志解決方案。1分鐘內即可完成整個集群部署,支持動態擴容,提供采集宿主機日志、容器日志、容器stdout等所有數據源的一站式采集。點此
    發表于 02-28 12:50

    k8s核心原理學習指南3

    k8s學習3 - 核心原理
    發表于 09-25 16:37

    OpenStack與K8s結合的兩種方案的詳細介紹和比較

    OpenStack與K8S結合主要有兩種方案。一是K8S部署在OpenStack平臺之上,二是K8S和OpenStack組件集成。
    的頭像 發表于 10-14 09:38 ?2.7w次閱讀

    如何使用kubernetes client-go實踐一個簡單的與K8s交互過程

    【導讀】Kubernetes項目使用Go語言編寫,對Go api原生支持非常便捷。 本篇文章介紹了如何使用kubernetes client-go實踐一個簡單的與K8s交互過程
    的頭像 發表于 02-02 11:16 ?6792次閱讀
    如何使用kubernetes client-go實踐一個簡單的與<b class='flag-5'>K8s</b>交互過程

    Docker不香嗎為什么還要用K8s

    Docker 雖好用,但面對強大的集群,成千上萬的容器,突然感覺不香了。 這時候就需要我們的主角 Kubernetes 上場了,先來了解一下 K8s 的基本概念,后面再介紹實踐,由淺入深步步為營
    的頭像 發表于 06-02 11:56 ?3416次閱讀

    簡單說明k8s和Docker之間的關系

    這篇文章主要介紹了k8s和Docker關系簡單說明,本文利用圖文講解的很透徹,有需要的同學可以研究下 最近項目用到kubernetes(以下簡稱k8sks之間有
    的頭像 發表于 06-24 15:48 ?3361次閱讀

    K8S集群服務訪問失敗怎么辦 K8S故障處理集錦

    問題1:K8S集群服務訪問失敗? ? ? 原因分析:證書不能被識別,其原因為:自定義證書,過期等。 解決方法:更新證書即可。 問題2:K8S集群服務訪問失敗? curl: (7) Failed
    的頭像 發表于 09-01 11:11 ?1.6w次閱讀
    <b class='flag-5'>K8S</b>集群服務訪問失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    K8S(kubernetes)學習指南

    K8S(kubernetes)學習指南
    發表于 06-29 14:14 ?0次下載

    mysql部署在k8s上的實現方案

    的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。這里主要講 mysql 部署在 k8s 上,mysql 部署在 k8s 上的優勢主要有以下幾點。
    的頭像 發表于 09-26 10:39 ?2475次閱讀

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    k8s是什么意思? kubernetes簡稱K8s,是一個開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單并且高效(powerful
    發表于 07-19 13:14 ?1098次閱讀

    什么是K3sK8sK3sK8s有什么區別?

    Kubernetes,通常縮寫為 K8s,是領先的容器編排工具。該開源項目最初由 Google 開發,幫助塑造了現代編排的定義。該系統包括了部署和運行容器化系統所需的一切。
    的頭像 發表于 08-03 10:53 ?7337次閱讀

    k8s生態鏈包含哪些技術

    1. Apache APISIX Ingress 定義 ? 在 K8s 生態中,Ingress 作為表示 K8s 流量入口的一種資源,想要讓其生效,就需要有一個 Ingress Controller
    的頭像 發表于 08-07 10:56 ?1187次閱讀
    <b class='flag-5'>k8s</b>生態鏈包含哪些技術

    K8S落地實踐經驗分享

    k8s 即 Kubernetes,是一個開源的容器編排引擎,用來對容器化應用進行自動化部署、 擴縮和管理。
    的頭像 發表于 01-02 11:45 ?1042次閱讀
    <b class='flag-5'>K8S</b>落地實踐經驗分享

    k8s云原生開發要求

    Kubernetes(K8s)云原生開發對硬件有一定要求。CPU方面,建議至少配備2個邏輯核心,高性能CPU更佳。內存至少4GB,但8GB或更高更推薦。存儲需至少20-30GB可用空間,SSD提升
    的頭像 發表于 10-24 10:03 ?173次閱讀
    <b class='flag-5'>k8s</b>云原生開發要求