天天看點

java應用軟體開發方向難學嗎,徹底幫你搞懂

Kubernetes簡介

Kubernetes(簡稱K8S,K和S之間有8個字母)是用于自動部署,擴充和管理容器化應用程式的開源系統。它将組成應用程式的容器組合成邏輯單元,以便于管理和服務發現。Kubernetes 源自Google 15 年生産環境的運維經驗,同時凝聚了社群的最佳創意和實踐。

Kubernetes具有如下特性:

  • 服務發現與負載均衡:無需修改你的應用程式即可使用陌生的服務發現機制。
  • 存儲編排:自動挂載所選存儲系統,包括本地存儲。
  • Secret和配置管理:部署更新Secrets和應用程式的配置時不必重新建構容器鏡像,且不必将軟體堆棧配置中的秘密資訊暴露出來。
  • 批量執行:除了服務之外,Kubernetes還可以管理你的批處理和CI工作負載,在期望時替換掉失效的容器。
  • 水準擴縮:使用一個簡單的指令、一個UI或基于CPU使用情況自動對應用程式進行擴縮。
  • 自動化上線和復原:Kubernetes會分步驟地将針對應用或其配置的更改上線,同時監視應用程式運作狀況以確定你不會同時終止所有執行個體。
  • 自動裝箱:根據資源需求和其他限制自動放置容器,同時避免影響可用性。
  • 自我修複:重新啟動失敗的容器,在節點死亡時替換并重新排程容器,殺死不響應使用者定義的健康檢查的容器。

一、Spring Cloud微服務概念定義

提起微服務,不得不提 Spring Cloud 全家桶系列,Spring Cloud 是一個服務治理平台,是若幹個架構的集合,提供了全套的分布式系統解決方案。包含了:服務注冊與發現、配置中心、服務網關、智能路由、負載均衡、斷路器、監控跟蹤、分布式消息隊列等等。

Spring Cloud 通過 Spring Boot 風格的封裝,屏蔽掉了複雜的配置和實作原理,最終給開發者留出了一套簡單易懂、容易部署的分布式系統開發工具包。開發者可以快速的啟動服務或建構應用、同時能夠快速和雲平台資源進行對接。微服務是可以獨立部署、水準擴充、獨立通路(或者有獨立的資料庫)的服務單元,Spring Cloud 就是這些微服務的大管家,采用了微服務這種架構之後,項目的數量會非常多,Spring Cloud 做為大管家需要管理好這些微服務,自然需要很多小弟來幫忙。

java應用軟體開發方向難學嗎,徹底幫你搞懂

二、Spring Cloud子項目

Spring Cloud 包含很多子項目,我們重點圍繞 Netflix 和 Alibaba 兩個标準實作給大家介紹:

java應用軟體開發方向難學嗎,徹底幫你搞懂

三、Spring Cloud Netflix 第一代

java應用軟體開發方向難學嗎,徹底幫你搞懂

Netflix是一家美國公司,在美國、加拿大提供網際網路随選流媒體播放,定制DVD、藍光光碟線上出租業務。該公司成立于1997年,總部位于加利福尼亞州洛斯蓋圖,1999年開始訂閱服務。2009年,該公司可提供多達10萬部DVD電影,并有1千萬的訂戶。2007年2月25日,Netflix宣布已經售出第10億份DVD。HIS一份報告中表示,2011年Netflix網絡電影銷量占據美國使用者線上電影總銷量的45%。

針對多種 Netflix 元件提供的開發工具包,其中包括 Eureka、Ribbon、Feign、Hystrix、Zuul、Archaius 等。

  • Netflix Eureka

    :一個基于 Rest 服務的服務治理元件,包括服務注冊中心、服務注冊與服務發現機制的實作,實作了雲端負載均衡和中間層伺服器的故障轉移。
  • Netflix Ribbon

    :用戶端負載均衡的服務調用元件。
  • Netflix Hystrix

    :容錯管理工具,實作斷路器模式,通過控制服務的節點,進而對延遲和故障提供更強大的容錯能力。
  • Netflix Feign

    :基于 Ribbon 和 Hystrix 的聲明式服務調用元件。
  • Netflix Zuul

    :微服務網關,提供動态路由,通路過濾等服務。
  • Netflix Archaius

    :配置管理 API,包含一系列配置管理 API,提供動态類型化屬性、線程安全配置操作、輪詢架構、回調機制等功能。

四、Spring Cloud Alibaba 第二代

同 Spring Cloud 一樣,Spring Cloud Alibaba 也是一套微服務解決方案。Spring Cloud Alibaba 緻力于提供微服務開發的一站式解決方案。此項目包含開發分布式應用微服務的必需元件,友善開發者通過 Spring Cloud 程式設計模型輕松使用這些元件來開發分布式應用服務。

依托 Spring Cloud Alibaba,隻需要添加一些注解和少量配置,就可以将 Spring Cloud 應用接入阿裡微服務解決方案,通過阿裡中間件來迅速搭建分布式應用系統。

這幅圖是 Spring Cloud Alibaba 系列元件,其中包含了阿裡開源元件,阿裡雲商業化元件,以及內建 Spring Cloud 元件。

java應用軟體開發方向難學嗎,徹底幫你搞懂

「阿裡開源元件」

  • Nacos

    :阿裡巴巴開源産品,一個更易于建構雲原生應用的動态服務發現、配置管理和服務管理平台。
  • Sentinel

    :面向分布式服務架構的輕量級流量控制産品,把流量作為切入點,從流量控制、熔斷降級、系統負載保護等多個次元保護服務的穩定性。
  • RocketMQ

    :一款開源的分布式消息系統,基于高可用分布式叢集技術,提供低延時的、高可靠的消息釋出與訂閱服務。
  • Dubbo

    :Apache Dubbo™ 是一款高性能 Java RPC 架構,用于實作服務通信。
  • Seata

    :阿裡巴巴開源産品,一個易于使用的高性能微服務分布式事務解決方案。

「阿裡商業化元件」

  • Alibaba Cloud ACM

    :一款在分布式架構環境中對應用配置進行集中管理和推送的應用配置中心産品。
  • Alibaba Cloud OSS

    :阿裡雲對象存儲服務(Object Storage Service,簡稱 OSS),是阿裡雲提供的海量、安全、低成本、高可靠的雲存儲服務。您可以在任何應用、任何時間、任何地點存儲和通路任意類型的資料。
  • Alibaba Cloud SchedulerX

    :阿裡中間件團隊開發的一款分布式任務排程産品,提供秒級、精準、高可靠、高可用的定時(基于 Cron 表達式)任務排程服務。
  • Alibaba Cloud SMS

    :覆寫全球的短信服務,友好、高效、智能的互聯化通訊能力,幫助企業迅速搭建客戶觸達通道。

作為 Spring Cloud 體系下的新實作,Spring Cloud Alibaba 跟官方的元件或其它的第三方實作如 Netflix,Consul,Zookeeper 等對比,具備了更多的功能:

java應用軟體開發方向難學嗎,徹底幫你搞懂

五、常用元件

  • Spring Cloud Netflix Eureka

    :服務注冊中心。
  • Spring Cloud Zookeeper

    :服務注冊中心。
  • Spring Cloud Consul

    :服務注冊和配置管理中心。
  • Spring Cloud Netflix Ribbon

    :用戶端負載均衡。
  • Spring Cloud Netflix Hystrix

    :服務容錯保護。
  • Spring Cloud Netflix Feign

    :聲明式服務調用。
  • Spring Cloud OpenFeign(可替代 Feign)

    :OpenFeign 是 Spring Cloud 在 Feign 的基礎上支援了 Spring MVC 的注解,如 @RequesMapping等等。OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通過動态代理的方式産生實作類,實作類中做負載均衡并調用其他服務。
  • Spring Cloud Netflix Zuul

    :API 網關服務,過濾、安全、監控、限流、路由。
  • Spring Cloud Gateway(可替代 Zuul)

    :Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技術開發的網關,Spring Cloud Gateway 旨在為微服務架構提供一種簡單而有效的統一的 API 路由管理方式。Spring Cloud Gateway 作為 Spring Cloud 生态系中的網關,目标是替代 Netflix Zuul,其不僅提供統一的路由方式,并且基于 Filter 鍊的方式提供了網關基本的功能,例如:安全,監控/埋點,和限流等。
  • Spring Cloud Security

    :安全認證。
  • Spring Cloud Config

    :分布式配置中心。配置管理工具,支援使用 Git 存儲配置内容,支援應用配置的外部化存儲,支援用戶端配置資訊重新整理、加解密配置内容等。
  • Spring Cloud Bus

    :事件、消息總線,用于在叢集(例如,配置變化事件)中傳播狀态變化,可與 Spring Cloud Config 聯合實作熱部署。
  • Spring Cloud Stream

    :消息驅動微服務。
  • Spring Cloud Sleuth

    :分布式服務跟蹤。
  • Spring Cloud Alibaba Nacos

    :阿裡巴巴開源産品,一個更易于建構雲原生應用的動态服務發現、配置管理和服務管理平台。
  • Spring Cloud Alibaba Sentinel

    :面向分布式服務架構的輕量級流量控制産品,把流量作為切入點,從流量控制、熔斷降級、系統負載保護等多個次元保護服務的穩定性。
  • Spring Cloud Alibaba RocketMQ

    :一款開源的分布式消息系統,基于高可用分布式叢集技術,提供低延時的、高可靠的消息釋出與訂閱服務。
  • Spring Cloud Alibaba Dubbo

    :Apache Dubbo™ 是一款高性能 Java RPC 架構,用于實作服務通信。
  • Spring Cloud Alibaba Seata

    :阿裡巴巴開源産品,一個易于使用的高性能微服務分布式事務解決方案。

六、總結

java應用軟體開發方向難學嗎,徹底幫你搞懂

雖然 Eureka,Hystrix 等不再繼續開發或維護,但是目前來說不影響使用,不管怎麼說感謝開源,向 Netflix 公司的開源緻敬。

一線網際網路大廠Java核心面試題庫

java應用軟體開發方向難學嗎,徹底幫你搞懂

說不影響使用,不管怎麼說感謝開源,向 Netflix 公司的開源緻敬。

一線網際網路大廠Java核心面試題庫

[外鍊圖檔轉存中…(img-XDGgNhTU-1623224727957)]

正逢面試跳槽季,給大家整理了大廠問到的一些面試真題,由于文章長度限制,隻給大家展示了部分題目,更多Java基礎、異常、集合、并發程式設計、JVM、Spring全家桶、MyBatis、Redis、資料庫、中間件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等…已整理上傳在我的騰訊文檔【一線網際網路大廠Java核心面試題庫】點選即可領取,并會持續更新…感興趣的朋友可以看看支援一波!

繼續閱讀