亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Kong和Elasticsearch的私有云API網(wǎng)關(guān)及監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2022-12-03 01:56:42何運(yùn)田張青清
        關(guān)鍵詞:服務(wù)系統(tǒng)管理

        何運(yùn)田 張青清

        (中國(guó)銀聯(lián)股份有限公司 上海 200120)

        0 引 言

        隨著云計(jì)算[1]和互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,越來(lái)越多的企業(yè)開始重視微服務(wù)[2-3]、云原生等新一代技術(shù)架構(gòu)設(shè)計(jì)模式。以國(guó)內(nèi)為例,知名互聯(lián)網(wǎng)公司都開始發(fā)力云技術(shù),逐步對(duì)外提供獨(dú)立自主開發(fā)的公有云產(chǎn)品,比如阿里云、華為云、騰訊云等。這些云平臺(tái)不僅很好地支撐了各自企業(yè)內(nèi)部的需求,也為不具備開發(fā)云平臺(tái)能力的廣大中小企業(yè)提供了開箱即用的云產(chǎn)品,滿足了應(yīng)用上云的需求。云上應(yīng)用大多數(shù)采用微服務(wù)的架構(gòu);在各類業(yè)務(wù)場(chǎng)景中,一個(gè)業(yè)務(wù)系統(tǒng)往往分解成若干個(gè)子系統(tǒng)。子系統(tǒng)之間以API為形態(tài),進(jìn)行跨系統(tǒng)跨組織的開放、共享、重組和調(diào)用。如果在服務(wù)資源入口不做統(tǒng)一的管理,紛亂的協(xié)議、不同格式的網(wǎng)絡(luò)數(shù)據(jù)、繁雜的調(diào)用拓?fù)鋾?huì)讓整個(gè)服務(wù)集成和運(yùn)維的過(guò)程變得異常復(fù)雜和不穩(wěn)定。因此,如何有效地治理和管控各個(gè)業(yè)務(wù)子系統(tǒng),并通過(guò)有效的監(jiān)控手段來(lái)保障微服務(wù)功能有效、安全可靠,將成為各團(tuán)隊(duì)組織上云之前必須考慮的問(wèn)題[4]。

        1 系統(tǒng)概述

        為了解決上述問(wèn)題,本文基于開源技術(shù),設(shè)計(jì)并搭建了一套API網(wǎng)關(guān)集成及監(jiān)控系統(tǒng),并在公司的私有云環(huán)境中進(jìn)行了部署和實(shí)踐,取得了很好的效果。系統(tǒng)整體架構(gòu)如圖1所示。

        圖1 整體系統(tǒng)架構(gòu)

        根據(jù)圖1,系統(tǒng)整體上劃分成兩個(gè)VPC(虛擬私有云):VPC1(內(nèi)部局域網(wǎng))和VPC2(互聯(lián)網(wǎng)連接區(qū))。VPC1隸屬公司生產(chǎn)區(qū),有嚴(yán)格的防火墻控制,具備較高的安全策略;VPC2類似通常所說(shuō)的DMZ區(qū),可以通過(guò)配置有限的連接互聯(lián)網(wǎng)。兩個(gè)網(wǎng)絡(luò)之間通過(guò)對(duì)等網(wǎng)絡(luò)連接,這樣VPC1和VPC2可以通過(guò)私有IP地址進(jìn)行通信,就像兩個(gè)VCP在一個(gè)網(wǎng)絡(luò)中一樣。為了實(shí)現(xiàn)高可用,VPC1和VPC2之間以及VPC2和互聯(lián)網(wǎng)之間都增設(shè)了負(fù)載均衡設(shè)備,既增強(qiáng)系統(tǒng)穩(wěn)定性,也在一定程度上屏蔽了VPC之間網(wǎng)絡(luò)的復(fù)雜性[5]。

        除了網(wǎng)絡(luò)上的職責(zé)劃分,系統(tǒng)在功能上分成三個(gè)部分:

        (1) 服務(wù)集成網(wǎng)關(guān)。Kong是一個(gè)在Nginx中運(yùn)行的開源Lua應(yīng)用程序,兼具了Nginx優(yōu)秀的反向代理功能和Lua-Nginx模塊的擴(kuò)展特性?;贙ong技術(shù)設(shè)計(jì)API網(wǎng)關(guān),可以很容易通過(guò)插件的形式來(lái)擴(kuò)展負(fù)載均衡、日志審計(jì)、身份驗(yàn)證、速率限制、請(qǐng)求轉(zhuǎn)換等非業(yè)務(wù)功能。為了統(tǒng)一管理的微服務(wù)之間的互相調(diào)用,所有的微服務(wù)開放的API統(tǒng)一遵循RESTful[6]的風(fēng)格。該風(fēng)格的接口通過(guò)每個(gè)URI代表一種資源,客戶端通過(guò)HTTP協(xié)議來(lái)對(duì)服務(wù)端資源進(jìn)行操作,并獲取JSON格式的結(jié)果。

        (2) 網(wǎng)關(guān)管理平臺(tái)。為了更方便運(yùn)維人員可視化配置及管理API,本系統(tǒng)以KONGA開源項(xiàng)目為藍(lán)本,進(jìn)行二次開發(fā)。使用人員可以很方便地通過(guò)網(wǎng)關(guān)管理平臺(tái)對(duì)Kong集群進(jìn)行配置。

        (3) 網(wǎng)關(guān)監(jiān)控系統(tǒng)。監(jiān)控系統(tǒng)由Dashboard(智能監(jiān)控大屏)、Kong-syncer(日志同步服務(wù)器)、Monitor-server(監(jiān)控后臺(tái)服務(wù)器)三部分組成。通過(guò)監(jiān)控系統(tǒng),不僅可以實(shí)時(shí)采集并查看網(wǎng)關(guān)中配置的API訪問(wèn)信息,還可以按需進(jìn)行聚合分析等增值服務(wù)。

        2 服務(wù)集成網(wǎng)關(guān)

        2.1 網(wǎng)關(guān)的定位

        單體服務(wù)不需要API維度的網(wǎng)關(guān),因?yàn)樗鼌R總了一個(gè)業(yè)務(wù)系統(tǒng)所提供的所有API,可以統(tǒng)一對(duì)這些服務(wù)做調(diào)度、鑒權(quán)、限流等控制。但在微服務(wù)架構(gòu)的應(yīng)用中,因?yàn)楣δ苣K的拆分,每個(gè)子業(yè)務(wù)系統(tǒng)都會(huì)獨(dú)立提供服務(wù);這些服務(wù)有可能互相之間進(jìn)行調(diào)度,也可能對(duì)外提供服務(wù)。面向微服務(wù)的API網(wǎng)關(guān)[7]定位于解決對(duì)外提供服務(wù)這塊內(nèi)容,通常也稱之為邊緣服務(wù)。它的定義為類似面向?qū)ο笤O(shè)計(jì)模式中的Facade模式,它的存在就像整個(gè)微服務(wù)架構(gòu)系統(tǒng)中的門面一樣,所有的外部客戶端訪問(wèn)云平臺(tái),都需要經(jīng)過(guò)網(wǎng)關(guān)來(lái)做統(tǒng)一的調(diào)度和管控。具體而言,主要體現(xiàn)在以下方面:

        (1) 服務(wù)統(tǒng)一管理。其包括對(duì)服務(wù)接口格式、元數(shù)據(jù)、服務(wù)提供方、服務(wù)消費(fèi)方等的管理。涵蓋API的上線、發(fā)布、下線等整個(gè)生命周期。

        (2) 服務(wù)調(diào)用管理。主要體現(xiàn)在權(quán)限控制方面,比如調(diào)用權(quán)限的認(rèn)證過(guò)濾、調(diào)用頻次、調(diào)用總額、黑白名單等。

        (3) 服務(wù)質(zhì)量(QoS)控制。網(wǎng)關(guān)為上游服務(wù)提供多種策略來(lái)解決應(yīng)用過(guò)程中可能出現(xiàn)的服務(wù)性能問(wèn)題,比如負(fù)載均衡、緩存、熔斷、降級(jí)、流量控制等,以提高服務(wù)的穩(wěn)定性和可用性。

        (4) 服務(wù)監(jiān)控與報(bào)警。微服務(wù)體系中因系統(tǒng)繁多、交互復(fù)雜,更需要有較好的運(yùn)維監(jiān)控和報(bào)警體系。網(wǎng)關(guān)系統(tǒng)需要從用戶、服務(wù)、應(yīng)用多種維度分析統(tǒng)計(jì)API調(diào)用情況,并針對(duì)可能出現(xiàn)和已經(jīng)出現(xiàn)的問(wèn)題進(jìn)行及時(shí)預(yù)警和報(bào)警。

        2.2 網(wǎng)關(guān)集群設(shè)計(jì)

        本系統(tǒng)中,網(wǎng)關(guān)集群是基于開源技術(shù)Kong[8]來(lái)實(shí)現(xiàn)。Kong是Mashape公司的開源API網(wǎng)關(guān),其底層是基于Nginx驅(qū)動(dòng)的,幾乎沒(méi)有任何性能消耗,性能可以達(dá)到1 600次/s,增加安全鑒權(quán)后訪問(wèn)也沒(méi)有明顯性能下降,性能跟原生Nginx不相上下。

        Kong支持主流數(shù)據(jù)庫(kù)的讀寫,目前官方給定的選擇包括PostgreSQL和Cassandra。因?yàn)镃assandra[9]具備較成熟的集群解決方案,因此本文中采用Kong+Cassandra來(lái)組成集群。由于Kong本身不具備集群能力,因此需要配置前置負(fù)載來(lái)實(shí)現(xiàn)Kong節(jié)點(diǎn)之間的流量均衡。該方案可以使Kong支持更多的訪問(wèn)流量,同時(shí)保證較低的網(wǎng)絡(luò)延遲。出于性能考量,為了避免頻繁的數(shù)據(jù)訪問(wèn),集群中的每個(gè)節(jié)點(diǎn)都會(huì)在本地緩存一部分?jǐn)?shù)據(jù)。

        另外,Kong具備模塊性。開發(fā)者可以通過(guò)給Kong節(jié)點(diǎn)增加插件的方式來(lái)擴(kuò)展網(wǎng)關(guān)的功能。官方已經(jīng)提供了很多可以開箱即用的插件,比如Auth2.0、logging、CORS(Cross-Origin Resource Sharing)等。開發(fā)者也可以通過(guò)Lua語(yǔ)言編寫自定義插件,并通過(guò)Lua-Nginx-module模塊來(lái)集成進(jìn)Nginx[10]的生命周期中。具體集群架構(gòu)見(jiàn)圖2。

        圖2 Kong集群架構(gòu)

        3 網(wǎng)關(guān)管理平臺(tái)

        Kong提供了完善的管理接口,用來(lái)對(duì)Kong實(shí)現(xiàn)管理功能。默認(rèn)情況下,Kong服務(wù)會(huì)監(jiān)聽(tīng)8001端口用于管理API的響應(yīng),監(jiān)聽(tīng)8000端口用來(lái)接收需要轉(zhuǎn)發(fā)的RestFul請(qǐng)求。為了方便管理API,Kong抽象了若干個(gè)概念:

        (1) 服務(wù)(Service)。服務(wù)等價(jià)于Nginx的upstream指令中的server,用來(lái)代指上游的真實(shí)服務(wù)。當(dāng)有多個(gè)上游服務(wù)實(shí)例時(shí),可以配置權(quán)重來(lái)實(shí)現(xiàn)流量分配。

        (2) 路由(Route)。路由定義了匹配客戶端請(qǐng)求的路徑規(guī)則,一個(gè)服務(wù)可以包含若干路由。

        (3) 消費(fèi)者(Consumer)。消費(fèi)者代指一個(gè)服務(wù)接入方,可以根據(jù)消費(fèi)者的ID來(lái)對(duì)特定路由設(shè)置訪問(wèn)權(quán)限。

        (4) 插件(Plugin)。插件代指想要對(duì)Kong擴(kuò)展的小功能,比如日志插件,可以在請(qǐng)求到網(wǎng)關(guān)時(shí),記錄日志到數(shù)據(jù)庫(kù)。插件使用Lua語(yǔ)言開發(fā),通過(guò)Kong的管理端口來(lái)啟用,使得功能定制化擴(kuò)展非常方便。

        以上概念是Kong的核心概念,也是我們管理Kong網(wǎng)關(guān)的主要目標(biāo)。由于Kong提供了管理接口,我們可以通過(guò)命令行Curl進(jìn)行配置,以創(chuàng)建OCR識(shí)別應(yīng)用的API轉(zhuǎn)發(fā)為例,配置命令如下:

        curl -X POST "http:kongHost:8001/apis/

        -H ′Content-Type: application/json′

        -d ′{

        "name": "ocr_api",

        "uris": "OCR",

        "upstream_ url": "http://OCR_ HOST",

        "strip _ uri": " true"

        }′

        考慮到Curl的配置方式對(duì)使用者來(lái)說(shuō)不是很友好,而且容易出錯(cuò),本系統(tǒng)以開源項(xiàng)目KongA為基礎(chǔ),進(jìn)行了二次開發(fā),實(shí)現(xiàn)了Kong的可視化配置,簡(jiǎn)化了操作。具體管理界面效果見(jiàn)圖3。

        圖3 KongA配置Service示意圖

        4 網(wǎng)關(guān)監(jiān)控系統(tǒng)

        很多時(shí)候,服務(wù)的提供者和服務(wù)的調(diào)用者都有監(jiān)控服務(wù)的性能、服務(wù)調(diào)用量、網(wǎng)絡(luò)帶寬、出錯(cuò)告警等需求。因此,一個(gè)成熟的網(wǎng)關(guān)系統(tǒng)少不了監(jiān)控體系。本系統(tǒng)針對(duì)這部分需求,采用集成開源分布式搜索引擎Elasticsearch[11]加自研組件的方式,實(shí)現(xiàn)客戶端API請(qǐng)求的日志存儲(chǔ)、分析及實(shí)時(shí)監(jiān)控預(yù)警等功能。其中,Elasticsearch具體的架構(gòu)如圖4所示。

        圖4 監(jiān)控子系統(tǒng)架構(gòu)示意圖

        如圖4所示,監(jiān)控子系統(tǒng)主要包括Dashboard、monitor、Elasticsearch集群,以及自研數(shù)據(jù)同步集群Kong-syncer。其中:Dashboard主要負(fù)責(zé)對(duì)外實(shí)時(shí)展示各種統(tǒng)計(jì)圖表;monitor用來(lái)管理及實(shí)現(xiàn)統(tǒng)計(jì)邏輯;Elasticsearch集群負(fù)責(zé)存儲(chǔ)、搜索、聚合各種日志信息;Kong-syncer類似ETL工具,用來(lái)從數(shù)據(jù)源監(jiān)聽(tīng)拉取原始數(shù)據(jù),清洗及格式化后導(dǎo)入ES集群。

        4.1 日志插件

        Kong本身具備模塊特性,支持自定義插件來(lái)擴(kuò)展所需功能。本系統(tǒng)啟用http-log插件,在Kong接收到客戶端請(qǐng)求的響應(yīng)所有body信息時(shí)會(huì)自動(dòng)將請(qǐng)求的日志信息發(fā)送到自研的sync-server進(jìn)行歸并并存儲(chǔ)到ES集群。啟動(dòng)日志插件可以通過(guò)管理平臺(tái)來(lái)可視化完成操作。為了方便后續(xù)的統(tǒng)計(jì)和分析,針對(duì)請(qǐng)求的日志格式需要具備良好的擴(kuò)展性和可讀性。本系統(tǒng)采用JSON的格式來(lái)定義和解析日志,日志格式如下:

        {

        "request": {

        "method": "請(qǐng)求方式",

        "uri": "請(qǐng)求URI",

        "url": "完整請(qǐng)求路徑",

        "size": "請(qǐng)求體",

        "querystring": ["請(qǐng)求參數(shù)組"],

        "headers": ["請(qǐng)求頭鍵值對(duì)"]

        },

        "upstream_uri": "上游服務(wù)轉(zhuǎn)發(fā)路徑",

        "response": {

        "status": "響應(yīng)code",

        "size": "響應(yīng)大小",

        "headers": ["響應(yīng)頭鍵值對(duì)"]

        },

        "route": {

        "id": "請(qǐng)求匹配的路由Id",

        "paths": ["匹配的路徑數(shù)據(jù)"],

        "service": {

        "id": "關(guān)聯(lián)的service ID"

        }

        },

        "service": {

        "host": "匹配的服務(wù)的host",

        "id": "匹配服務(wù)的ID",

        "name": "服務(wù)名",

        "path": "服務(wù)路徑 ",

        "port": "服務(wù)端口",

        "protocol": "服務(wù)協(xié)議"

        },

        "consumer": {

        "username": "請(qǐng)求業(yè)務(wù)方的名字"

        },

        "latencies": {

        "proxy": "代理延遲",

        "kong": " 網(wǎng)關(guān)本身的延遲",

        "request": " 請(qǐng)求處理的延遲時(shí)長(zhǎng)"

        },

        "client_ip": "業(yè)務(wù)方IP",

        "started_at": " 請(qǐng)求的時(shí)間戳"

        }

        4.2 日志存儲(chǔ)及處理

        Elasticsearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。ElasticSearch用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索、穩(wěn)定、可靠、快速。本系統(tǒng)采用ES集群作為日志的持久化組件,既能滿足JSON格式的文本存儲(chǔ)的需求,又能利用Elastic開放的RestFul接口,實(shí)現(xiàn)日志的統(tǒng)計(jì)查詢和聚合功能。

        根據(jù)請(qǐng)求的路由id來(lái)查詢當(dāng)日訪問(wèn)量top5的Api為例,利用Elasticsearch的msearch接口,就可以通過(guò)以下post請(qǐng)求來(lái)實(shí)現(xiàn),非常靈活便捷。

        curl -X POST "http://es_host:9200/_msearch

        -H ′Content-Type: application/json′ -d

        {"index":"kong","ignore_unavailable":true,"timeout":30000,"preference":1580535845202}

        {"aggs":{"top5":{"terms":{"field":"route.id","size":5,"order":{"_count":"desc"}}}},"size":0,"version":true,"stored_fields":["*"],"docvalue_fields":[{"field":"request.headers.date","format":"date_time"},{"field":"startedAt","format":"date_time"}],"query":{"bool":{"must":[{"match_all":{}},{"range":{"startedAt":{"gte":"startTime","lte":"endTime","format":"epoch_millis"}}},{"bool":{"should":["filtersArray"],"minimum_should_match":1}}]}}}

        查詢的結(jié)果通過(guò)解析處理后就可以按照約定的格式發(fā)送給前端的Dashboard進(jìn)行展示;用戶可以決定是在大屏上顯示,還是通過(guò)H5頁(yè)面嵌入的方式在移動(dòng)端顯示。以移動(dòng)端顯示為例,部分效果如圖5所示。

        圖5 監(jiān)控平臺(tái)移動(dòng)端展示Dashboard

        5 結(jié) 語(yǔ)

        為了解決實(shí)際私有云環(huán)境中API網(wǎng)關(guān)的建設(shè)及監(jiān)控運(yùn)維問(wèn)題,本文以Kong、Elasticsearch等開源組件為基礎(chǔ),結(jié)合自有編碼,設(shè)計(jì)并實(shí)踐了一套API網(wǎng)關(guān)及監(jiān)控體系,取得了很好的效果。通過(guò)API集成網(wǎng)關(guān),私有云可以按照統(tǒng)一格式轉(zhuǎn)發(fā)、配置、管理、監(jiān)控所有的API請(qǐng)求,實(shí)現(xiàn)了API接口的統(tǒng)一管理和運(yùn)維,減少了開發(fā)人員和接口使用方的工作量,也減少了二次人員開發(fā)學(xué)習(xí)的成本。同時(shí),基于Nginx的網(wǎng)關(guān)集群技術(shù)也在最大程度保證并發(fā)的同時(shí),兼顧了響應(yīng)速度。

        猜你喜歡
        服務(wù)系統(tǒng)管理
        棗前期管理再好,后期管不好,前功盡棄
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        招行30年:從“滿意服務(wù)”到“感動(dòng)服務(wù)”
        商周刊(2017年9期)2017-08-22 02:57:56
        “這下管理創(chuàng)新了!等7則
        雜文月刊(2016年1期)2016-02-11 10:35:51
        一区二区免费国产a在亚洲| 日产精品高潮一区二区三区5月 | 国产h视频在线观看| 最新亚洲av日韩av二区| 午夜无码熟熟妇丰满人妻| 国模一区二区三区白浆| 国产午夜三级精品久久久| 婷婷久久av综合一区二区三区| 奶头又大又白喷奶水av| 国产精品视频二区不卡| 久久国产偷| 久草久热这里只有精品| 久久精品人妻一区二三区| 丝袜美腿亚洲第一免费| 免费看美女被靠的网站| 亚洲av无码专区国产乱码不卡| 日韩偷拍一区二区三区视频| 隔壁人妻欲求不满中文字幕 | 亚洲精品一区二区三区麻豆| 伊人久久大香线蕉午夜av | 天天躁夜夜躁狠狠躁婷婷| 色哟哟网站在线观看| 少妇人妻偷人精品无码视频| 40分钟永久免费又黄又粗| 久久精品中文字幕有码| 肥老熟妇伦子伦456视频| 亚洲精品字幕在线观看| 久久国产精品免费一区六九堂 | 亚洲国产av一区二区四季| 边喂奶边中出的人妻| 欧美a视频在线观看| 日本一区不卡在线观看| 欧美性生交活xxxxxdddd| 无码人妻品一区二区三区精99| 亚洲区日韩精品中文字幕| 亚洲人妻精品一区二区三区| 在线观看av片永久免费| 又污又黄又无遮挡的网站| 中文字幕人成乱码中文乱码| 久久精品免费视频亚洲| 欧美人与禽2o2o性论交|