91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微服務與網關技術(SIA-GateWay)

發布時間:2020-07-23 19:38:36 來源:網絡 閱讀:1618 作者:宜信技術 欄目:軟件技術

一、背景

軟件架構,總是在不斷的演進中...

把時間退回到二十年之前,當時企業級領域研發主要推崇的還是C/S模式,PB、Delphi這樣的開發軟件是企業應用開發的主流。隨著時間的推移,基于瀏覽器的B/S架構開始漸漸流行了起來。初期,Web開發ASP還占據了不少優勢,但JSP的預編譯模式讓性能有了很大提升,隨后基于JAVA語言的J2EE架構變得越來越流行。

早期軟件架構基本都是單體架構,系統之間往往不需要進行交互,這也導致數據孤島和ETL工具的發展。隨著企業應用越來越多,相互的關系也越來密切,應用之間也迫切需要進行實時交互訪問,隨后基于XML的異構系統集成和數據交互技術開始被很多公司采用,SOA的概念被提了出來,web service逐漸流行。

互聯網時代,很多公司為了適應更加靈活的業務需求,基于HTTP協議和Restful的架構風格及簡潔和結構清晰的JSON語言成為企業開發的最佳實踐,在SOA架構中,企業服務總線技術ESB所暴露的集中式架構的劣勢讓開發者明白基于注冊和發現的分布式架構才是解決問題的關鍵辦法。由此,微服務架構開始盛行。

在《微服務設計》中如何界定一個微服務,就是使用松耦合&高內聚原則,把因相同因素變化的事情聚集在一起,把因不同因素變化的事情區隔開來。

二、微服務架構特性

微服務,其實是一種架構風格...

2.1 異構

服務不同最適合的技術方案不同,微服務可以幫助我們輕松采用不同的技術,并且理解這些新技術的好處。嘗試新技術通常伴隨著風險,但對于微服務系統而言,總會存在一些地方讓你可以選擇一個風險最小的服務采用新技術,并降低風險。

2.2 隔離

微服務架構將系統分解為獨立運行單元,給系統帶來更好的隔離性,獨立的微服務在發生異常時更容易定位和隔離問題,隔離性也是服務擴展性的基礎。

2.3 擴展

龐大的單體服務只能作為一個整體進行擴展,即使系統中只有一小部分模塊存在性能問題,也需要對整個系統進行擴展。而微服務架構可以根據性能需要對不同的模塊進行水平擴展,微服務的彈性也可以很好地處理服務不可用和功能降級問題。

2.4 部署簡單

在微服務架構中,各個服務的部署是獨立的,這樣就可以更快地對特定部分的代碼進行部署。服務出現問題也更容易快速回滾,同時敏捷的交付和部署帶來了更好的業務需求響應體驗。

2.5 靈活

在微服務架構中,系統會開放很多接口供外部使用,當情況發生改變時,可以使用不同的方式構建應用。而整體化的應用程序只能提供一個非常粗粒度的接口供外部使用。把單體應用分解成多個微服務,可以達到可復用、可組合的目的。

三、微服務與網關技術

下圖是一個典型的微服務架構,僅供參考。

微服務與網關技術(SIA-GateWay)

3.1 什么是微服務網關

微服務網關是微服務架構中的一個關鍵的角色,用來保護、增強和控制對于微服務的訪問,微服務網關是一個處于應用程序或服務之前的系統,用來管理授權、訪問控制和流量限制等,這樣微服務就會被微服務網關保護起來,對所有的調用者透明。因此,隱藏在微服務網關后面的業務系統就可以更加專注于業務本身。

3.2 微服務網關的分類

常見的微服務網關根據使用特性大致被分成流量網關和業務網關。兩種網關分別有不同關注點,下圖總結了兩種網關類型特性:

微服務與網關技術(SIA-GateWay)

3.3 微服務網關的作用

微服務網關作為連接服務的消費方和服務提供方的中間件系統,將各自的業務系統的演進和發展做了天然的隔離,使業務系統更加專注于業務服務本身,同時微服務網關還可以為服務提供和沉淀更多附加功能,微服務網關主要作用如下:

微服務與網關技術(SIA-GateWay)

四、SIA-GateWay

SIA-GATEWAY是基于SpringCloud微服務生態體系下開發的一個分布式微服務網關系統。具備簡單易用、可視化、高可擴展、高可用性等特征,提供云原生、完整及成熟的接入服務解決方案。

4.1 關鍵特性

  • 簡單易用, 支持基于Docker容器的快速部署及交付。
  • 兼容性良好, 兼容SpringBoot微服務及傳統HTTP-URL的負載均衡及路由服務。
  • 高可擴展性, 支持基于Java語言的第三方插件擴展特性及動態加載機制。
  • 支持多租戶,多用戶角色下的網關拆分管理。
  • 可視化管理,提供實時路由拓撲、網關集群拓撲展示功能。
  • 服務治理,支持網關集群Dashboard、實時日志、歷史日志查詢、熔斷管理、預警管理等功能。
  • 多注冊中心支持,提供分布式網關集群下對多注冊中心集群的切換管理功能。
  • 動態路由組件綁定機制,提供包括URL統計、日志、灰度發布、限流、安全等公共服務組件。

下圖是SIA-GATEWAY的整體架構圖,架構由CORE和 Admin Cluster組成,其中:

  • CORE承載網關HTTP請求的主要服務節點,CORE節點可以根據所屬的網關組信息自動注冊到Admin管理端。
  • Admin是網關集群的管理后臺,由Admin、Service、Stream、Monitor等服務組成。

微服務與網關技術(SIA-GateWay)

網關的整體部署架構如下圖所示:

微服務與網關技術(SIA-GateWay)

4.2 面向業務系統的微服務網關

微服務網關系統是一個處于應用程序或服務(提供REST API接口服務)之前的中間件系統, SIA-GateWay在建設初期做技術選型時就充分考慮到所使用的技術方案應該兼容后端代理業務系統所使用的技術棧和技術體系,因此我們使用了Netflix的ZUUL作為網關系統技術棧,單純的脫離使用場景談某一種網關功能如何強大的做法,后續都會給業務方的使用帶來更多的麻煩。

更明確的說如果目前大部分業務系統采用的技術棧是JAVA系統, 那么不建議使用Nginx、Kong或者OpenResty等網關系統,這里主要是出于軟件工程性方面考慮。

舉個例子,業務方需要將一個公共組件以Plugin 機制集成到微服務網關, 如果使用Lua腳本文件或者其他腳本語言,那么引入一種新的語言技術棧所帶來的復雜度會給業務系統帶來更多的不確定性,系統后期維護成本和運維的難度都會呈指數級的提升。

4.3 基于組件模塊化的設計

微服務網關的一個很重要的作用就是可以將微服務的API聚合后,提供一個統一的EntryPoint作為業務使用方的一個統一入口,以及屏蔽和隱藏業務內部邏輯。下面是SIA-GateWay提供的公共組件類型及分類。

目前SIA-GateWay通過組件管理的機制實現了5個大類8個子類的公共服務組件供業務方使用,其中提供的路由組件綁定機制可以讓業務方靈活地決定是否要在運行時執行相關組件邏輯。

微服務與網關技術(SIA-GateWay)

4.4 去中心化的網關架構設計

微服務架構的一個重要特性就是去中心化的架構設計思路,SIA-GateWay在軟件設計層面上增加了一個“網關組”的抽象概念,一個網關組對應一個獨立的業務領域。網關組的概念也契合了微服務架構中的一些理念:業務系統依賴微服務網關提供明確清晰的服務邊界;業務系統通過微服務網關對外暴露業務的標準服務接口。

從實現層面,SIA-GateWay充分利用并結合了容器自動化的部署技術,在解決最后一公里的問題上,將網關以云端容器資源的方式交付給不同業務方,通過共享網關SDK部署包的方式將網關的服務下沉到容器中實現和執行,從而在時間和空間上做到了系統的彈性和靈活交付。同時中心化的管理能力又給使用網關的具有不同權限的用戶可以同時維護各自所屬網關組下的網關節點帶來了便利。

微服務與網關技術(SIA-GateWay)

上圖展示的是SIA-GateWay去中心化的網關架構。當然除了微服務網關模式,目前下一代微服務架構ServiceMesh技術也是典型的去中心化架構,ServiceMesh是從SideCar邊車模式演進而來,是一種通過將服務治理能力下沉到業務節點的方式,通過控制面(control plane)和數據面(data plane)的處理解耦分離實現服務通信更加快速、便捷、智能。

然而目前來看,從技術上及各大公司的實踐中,ServiceMesh在落地方面還存在諸多復雜性及不可控性,這種模式會給運維帶來極大的成本,如果貿然使用會給本就復雜的分布式系統帶來更多的復雜和難度。而GateWay網關的模式在組織粒度上可以調整,在實現方式上更加簡單可控,是目前的微服務架構中比較適合采用的模式。

4.5 網關如何保證高可用

作為一個微服務網關系統,因為所有流量都會經過網關,網關必須成為一個高可用的中間件服務,網關系統的穩定性及可用性直接決定了所用下游服務的穩定性。因此SIA-GateWay在架構設計上主要做了如下幾點:

1)集群化

在生產環境中,所用網關節點至少保證有2個節點組成集群同時提供服務,目前SIA-GateWay在公司內部主要使用容器化部署,避免單點故障。

2)健康檢查

在容器環境下,SIA-GateWay會暴露一個HTTP健康檢查接口,通過Kubernetes的健康檢查機制,定期檢查HTTP訪問是否可用,如果不可用,利用Kubernetes的服務編排能力可以做容器的切換;在Zstack環境下, 通過后臺啟動一個Crontab作為守護進程檢查進程的狀態,保證網關的穩定可用和進程重啟機制。

3)備份機制

SIA-GateWay提供了一種備份網關機制,在Zstack上會啟動一個備份網關API-GATEWAY-CORE,所有在容器環境(Kubernetes)中啟動的網關節點,都會將自己的路由信息同步到備份網關中。

另外,利用Nginx的高可用性和健康檢查機制,當Kubernetes集群出現問題,所有容器流量無法響應時,會將Nginx上的流量自動切換到API-GATEWAY-CORE備份節點。API-GATEWAY-CORE在工作時也會觸發預警,提示目前有不可用的K8s網關節點。

4.6 提供機制而不是策略

Unix編程哲學里,一個重要的概念是:“提到機制而不是策略”,通俗的講“機制”就是接口,“策略”就是具體的實現。SIA-GateWay提供的組件集成能力正是基于這樣的理念。

SIA-GateWay將架構的可擴展性作為重要的對外輸出能力,第三方插件機制主要支持JAVA語言的Filter組件動態加載機制。Filter機制是JAVA工程師最為熟悉的標準組件,所以對于業務方集成自己的業務邏輯提供了極大的便利,第三方業務組件加載到網關平臺大體有如下幾個步驟:

  • 根據SIA-GateWay提供的模板類及注解,實現動態業務邏輯。
  • 將實現好的動態組件通過Maven打包。
  • 在組件管理界面,通過組件上傳按鈕將組件上傳到Admin-組件管理器。
  • 組件管理器執行文件存儲邏輯。
  • 組件管理器執行組件下發操作,將組件分發到對應網關組。
  • 網關節點通過ClassLoader反射解析組件并動態加載到內存。
  • 網關節點通過異步信號量機制響應組件加載狀態。
  • 組件管理器同步插件Plugin狀態。

下圖是SIA-GateWay組件加載機制的執行邏輯圖:

微服務與網關技術(SIA-GateWay)

4.7 強化可視化和微服務治理能力

俗話說流水的架構,鐵打的監控,任何架構都需要軟件監控。微服務應用本身RPC的交互方式帶來了對監控系統了解系統運行狀態的難題。SIA-GateWay對微服務監控主要做了如下方面增強:

1)全局的集群狀態查看和容器狀態DashBoard統計。

微服務與網關技術(SIA-GateWay)

2)實時的路由拓撲和網關拓撲調用關系及狀態展示。實時的路由拓撲圖如下:

微服務與網關技術(SIA-GateWay)

3)網關集群拓撲管理界面,包含實時日志、實時Hystix監控、JVM配置等。

微服務與網關技術(SIA-GateWay)

4)可視化的組件管理界面。

微服務與網關技術(SIA-GateWay)

5)日志回溯,利用EKK架構實現日志歸集到日志查看功能。

微服務與網關技術(SIA-GateWay)

6)熔斷管理的分類及錯誤Stacktrace查看。

微服務與網關技術(SIA-GateWay)

7)URL細粒度的監控統計功能(默認不打開,需要路由綁定監控組件),包括URL的延遲統計,調用計數等指標。

微服務與網關技術(SIA-GateWay)

五、總結

軟件工程沒有銀彈,軟件系統的不確定性和復雜性貫穿軟件工程的整個生命周期,微服務架構本質上是通過分層和解耦來降低系統的復雜性,這里組織的溝通方式、企業文化、團隊技術學習能力都會對微服務架構的落地產生重要的影響。

對業務系統的核心能力洞察和業務邊界的識別是系統微服務架構落地的重要環節;微服務基礎設施的技術選型應該考慮到業務系統所使用的技術體系,選擇成熟的生態體系和合適的技術方案有利于微服務架構的推廣和持續的技術演進;SIA-GATEWAY作為微服務基礎設施充分考慮到了與業務系統的兼容性和相關技術生態的成熟度。

最后在微服務架構下,隨著微服務規模的擴大,必然帶來分布式事務一致性、網絡響應、容錯等等問題, 所以微服務治理是微服務架構的難點,保障微服務架構的高可用和高可擴展性需要在基礎設施層面增加更多的技術投入和技術保障, 這樣才能讓業務更好的專注于業務實現、敏捷的開發、持續快速的服務交付。

SIA相關開源產品鏈接

  • 微服務任務調度框架 :https://github.com/siaorg/sia-task
  • 微服務路由網關
    :https://github.com/siaorg/sia-gateway
  • Rabbitmq隊列服務PLUS:https://github.com/siaorg/sia-rabbitmq-plus

作者: 王佩華

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巧家县| 周至县| 鹤壁市| 龙口市| 水富县| 庄河市| 康保县| 丹寨县| 富锦市| 遵义市| 梅河口市| 安塞县| 都昌县| 平安县| 福建省| 桑日县| 和田县| 吕梁市| 弋阳县| 多伦县| 盖州市| 五常市| 朝阳市| 农安县| 察雅县| 汉阴县| 陆河县| 玉环县| 墨玉县| 新龙县| 双牌县| 曲阜市| 揭阳市| 邵武市| 改则县| 宁都县| 疏附县| 泰和县| 托克逊县| 浦城县| 旺苍县|