網(wǎng)站性能檢測(cè)評(píng)分
注:本網(wǎng)站頁(yè)面html檢測(cè)工具掃描網(wǎng)站中存在的基本問(wèn)題,僅供參考。
net開(kāi)源網(wǎng)站
全球最棒開(kāi)源網(wǎng)絡(luò)監(jiān)控工具 行業(yè)視頻課程
開(kāi)源軟件的需求持續(xù)增長(zhǎng),網(wǎng)絡(luò)管理工具已經(jīng)適應(yīng)了這一浪潮。你不再需要為可能不是你所需的軟件支付小額的費(fèi)用,請(qǐng)留意下(大部分)免費(fèi)的開(kāi)源工具,用來(lái)監(jiān)控、配置和映射你的聯(lián)網(wǎng)設(shè)備。
這里有 14 個(gè)開(kāi)源網(wǎng)絡(luò)監(jiān)控工具來(lái)協(xié)助IT管理員完成工作。
開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: NetXMS
NetXMS 提供了企業(yè)級(jí)開(kāi)源網(wǎng)絡(luò)管理和監(jiān)控程序,它在Windows和Linux上有一個(gè)簡(jiǎn)單的用戶界面。NetXMS通過(guò)相對(duì)簡(jiǎn)單的安裝過(guò)程為IT基礎(chǔ)架構(gòu)的所有層提供了分布式網(wǎng)絡(luò)監(jiān)控、自動(dòng)化網(wǎng)絡(luò)發(fā)現(xiàn)和詳細(xì)報(bào)告。此外,服務(wù)器設(shè)備和代理對(duì)于這樣一個(gè)全面的產(chǎn)品來(lái)說(shuō)是相當(dāng)輕量級(jí)的.2. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: Pandora FMS
定位于企業(yè)級(jí), Pandora FMS 提供了一個(gè)時(shí)尚且整潔的用戶體驗(yàn),提供了易于閱讀的快速洞察工具以及重要的網(wǎng)絡(luò)統(tǒng)計(jì)信息,例如網(wǎng)絡(luò)狀態(tài)、已上報(bào)的告警、已部署的代理數(shù)量和其他最近執(zhí)行任務(wù)的列表。
Pandora FMS可以在無(wú)需外部訪問(wèn)的情況下執(zhí)行網(wǎng)絡(luò)診斷,這意味著用戶可以更快地響應(yīng)任何網(wǎng)絡(luò)問(wèn)題。事實(shí)上,F(xiàn)MS聲稱,在代理模式下的器監(jiān)控系統(tǒng)響應(yīng)速度約為10秒。
3. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: Cacti
最初發(fā)布于2001年, Cacti 是一款開(kāi)源的基于Web的網(wǎng)絡(luò)監(jiān)控和專為數(shù)據(jù)記錄而設(shè)計(jì)的圖形化工具。它可以用于實(shí)時(shí)顯示網(wǎng)絡(luò)數(shù)據(jù),如CPU負(fù)載或帶寬利用率。Cacti是RRDtool的前端應(yīng)用程序,RRDtool是一種用于存儲(chǔ)實(shí)時(shí)變化數(shù)據(jù)的開(kāi)源數(shù)據(jù)庫(kù)工具,其使用SNMP作為其默認(rèn)收集算法,但如果你喜歡本地Perl的PHP腳本,那么你也可以使用它們。其最新版本0.8.8h于2016年5月發(fā)布,主要功能包括無(wú)限圖形項(xiàng)目、圖形自動(dòng)填充支持、圖形數(shù)據(jù)處理、自定義數(shù)據(jù)采集腳本、內(nèi)置SNMP支持、圖形模板、數(shù)據(jù)源模板、主機(jī)模板和基于用戶的管理。
4. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: GroundWork Monitor Core
GroundWork Monitor Core 是監(jiān)控網(wǎng)絡(luò)、應(yīng)用和云計(jì)算使用情況的平臺(tái)。開(kāi)源版本包含最多可監(jiān)控50個(gè)設(shè)備和基于社區(qū)的支持的許可證,該軟件還有其對(duì)應(yīng)的商業(yè)版本。在其網(wǎng)絡(luò)管理功能方面,GroundWork提供網(wǎng)絡(luò)和設(shè)備的自發(fā)現(xiàn)和維護(hù)、拓?fù)洹?bào)警控制、通過(guò)API/SNMP/IPMI的數(shù)據(jù)收集和對(duì)OpenDaylight SDN的支持等功能。
GroundWork還提供了存儲(chǔ)管理,支持大規(guī)模的企業(yè)級(jí)供應(yīng)商,如NetApp和EMC,以及從磁盤、塊或?qū)ο蟠鎯?chǔ)的數(shù)據(jù)收集和存儲(chǔ)緩沖以及中斷可視化。由于GroundWork的一站式網(wǎng)絡(luò)管理方法,這種套件可能更適合那些尋找成熟品牌的大型商業(yè)和企業(yè),而不是以開(kāi)發(fā)人員為重點(diǎn)的工具,如Big Brother或Big Sister。
5. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具:Hyperic
VMware的Hyperic工具用于在物理、虛擬或云環(huán)境下監(jiān)控Web應(yīng)用程序及其性能。 它適用于應(yīng)用程序服務(wù)器,web服務(wù)器,數(shù)據(jù)庫(kù),操作系統(tǒng),虛擬機(jī)管理程序,消息傳遞服務(wù)和目錄服務(wù)器。
Hyperic提供基礎(chǔ)架構(gòu)和操作系統(tǒng)監(jiān)控,詳細(xì)的報(bào)告,應(yīng)用程序和中間件監(jiān)控,警報(bào)和修復(fù)工作流程以及通用可擴(kuò)展的API。該網(wǎng)絡(luò)監(jiān)控工具提供了企業(yè)版本,可以提高網(wǎng)絡(luò)警報(bào)功能,并且能更好地創(chuàng)建基準(zhǔn)。
6. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: Observium
基于Linux的Observium是一個(gè)自動(dòng)監(jiān)測(cè)的網(wǎng)絡(luò)監(jiān)控工具。 據(jù)該網(wǎng)站介紹,“該工具是由一批經(jīng)驗(yàn)豐富的專業(yè)網(wǎng)絡(luò)工程師和系統(tǒng)管理員開(kāi)發(fā)和維護(hù)的,Observium是一個(gè)由用戶自己設(shè)計(jì)和構(gòu)建的平臺(tái)?!監(jiān)bservium提供社區(qū)版本和專業(yè)版,使用RRDTool進(jìn)行緩沖存儲(chǔ)和圖形化功能,并具有易于使用的用戶界面和報(bào)告功能。 但是,它沒(méi)有報(bào)告導(dǎo)出功能,這可能對(duì)商務(wù)應(yīng)用來(lái)講會(huì)是一個(gè)問(wèn)題。
社區(qū)版本將為用戶提供對(duì)所有支持設(shè)備或指標(biāo)的完整自動(dòng)監(jiān)測(cè)功能,通過(guò)自動(dòng)發(fā)現(xiàn)協(xié)議進(jìn)行網(wǎng)絡(luò)映射,自動(dòng)識(shí)別數(shù)百種設(shè)備,并且每六個(gè)月發(fā)布一個(gè)新版本。
而專業(yè)版用戶將獲得所有社區(qū)版本的功能并且還將獲得實(shí)時(shí)軟件更新和修復(fù)功能,基于規(guī)則的自動(dòng)分組功能,網(wǎng)絡(luò)閾值和狀態(tài)警報(bào)系統(tǒng)以及流量統(tǒng)計(jì)系統(tǒng)。
7. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: Zabbix
Zabbix 作為企業(yè)級(jí)的網(wǎng)絡(luò)監(jiān)控工具,通過(guò)從服務(wù)器,虛擬機(jī)和網(wǎng)絡(luò)設(shè)備收集的數(shù)據(jù)提供實(shí)時(shí)監(jiān)控,自動(dòng)發(fā)現(xiàn),映射和可擴(kuò)展等功能。
Zabbix的企業(yè)級(jí)監(jiān)控軟件為用戶提供內(nèi)置的Java應(yīng)用服務(wù)器監(jiān)控,硬件監(jiān)控,VMware監(jiān)控和CPU,內(nèi)存,網(wǎng)絡(luò),磁盤空間性能監(jiān)控。
該企業(yè)級(jí)網(wǎng)絡(luò)監(jiān)控工具能夠每分鐘進(jìn)行 3,000,000 次檢查,具有更高的安全性和數(shù)據(jù)中心監(jiān)控功能。
8. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: Nagios
Nagios 是一款用于監(jiān)控IT基礎(chǔ)架構(gòu)和查看當(dāng)前狀態(tài)、歷史日志和基本報(bào)告的開(kāi)源軟件工具。 Nagios 用戶可以監(jiān)控系統(tǒng)指標(biāo),網(wǎng)絡(luò)協(xié)議,應(yīng)用程序,服務(wù)器,網(wǎng)絡(luò)基礎(chǔ)架構(gòu)和接收故障警報(bào)。
其它翻譯版本(1)
Nagios提供三種類型的網(wǎng)絡(luò)管理工具,Nagios XL,Nagios日志服務(wù)器和Nagios網(wǎng)絡(luò)分析器。其中 Nagios XL 最適合網(wǎng)絡(luò)監(jiān)控(盡管其他兩種也提供網(wǎng)絡(luò)監(jiān)控服務(wù))。
Nagios XL提供企業(yè)級(jí)網(wǎng)絡(luò)監(jiān)控,為用戶提供帶寬報(bào)告,網(wǎng)絡(luò)心跳監(jiān)控,自定義URL,電子郵件報(bào)告和遠(yuǎn)程機(jī)器監(jiān)控。 升級(jí)的企業(yè)版提供基于Web的服務(wù)器控制臺(tái)訪問(wèn),業(yè)務(wù)流程監(jiān)控,記錄審核和自動(dòng)化刪除功能。
9. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: NetDisco
NetDisco專為類 Unix 操作系統(tǒng)而設(shè)計(jì),通過(guò)NSMP提供基于網(wǎng)絡(luò)的自動(dòng)發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備的功能,從而生成網(wǎng)絡(luò)拓?fù)鋱D。它是專為中型到大型網(wǎng)絡(luò)而設(shè)計(jì)的。
該網(wǎng)絡(luò)管理工具可用于定位設(shè)備,創(chuàng)建設(shè)備目錄并報(bào)告IP地址和交換機(jī)端口使用情況。
NetDisco用戶可以通過(guò)MAC或IP在網(wǎng)絡(luò)上定位機(jī)器,關(guān)閉交換機(jī)端口,或更改端口的VLAN或PoE狀態(tài),按照型號(hào),供應(yīng)商,軟件和操作系統(tǒng)對(duì)網(wǎng)絡(luò)硬件進(jìn)行清點(diǎn),并給你的網(wǎng)絡(luò)創(chuàng)建一個(gè)詳細(xì)的拓?fù)鋱D。
10. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: OpenNMS
OpenNMS是在1999年發(fā)布的,旨在為大型企業(yè)級(jí)用戶提供事件管理,服務(wù)監(jiān)控和性能測(cè)量。
使企業(yè)用戶受益的主要特點(diǎn)包括外部腳本、向通話系統(tǒng)工程師發(fā)送警報(bào)、擴(kuò)展Java本機(jī)通知策略API、請(qǐng)求跟蹤(RT)集成、高級(jí)警報(bào)、IPv4和IPv6網(wǎng)絡(luò)可達(dá)性超過(guò)ICMP、測(cè)試狀態(tài)和節(jié)點(diǎn)庫(kù)存信息。
11. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具:RANCID
RANCID 聽(tīng)起來(lái)像一個(gè)消極的名字,除非你學(xué)會(huì)Really Awesome New Cisco的配置。這一點(diǎn)意味著它能監(jiān)視路由器或其他設(shè)備的配置,并維護(hù)任何更改過(guò)的歷史記錄。RANCID 支持很多供應(yīng)商設(shè)備,包括 Juniper路由,HP交換機(jī),Redback的NAS 和 很多對(duì)Observium有擴(kuò)展設(shè)備的支持。
RANCID支持許多供應(yīng)商的設(shè)備,包括Juniper路由器,HP交換機(jī),Redback NAS和許多其他設(shè)備,以及對(duì)Observium的擴(kuò)展支持。
RANCID提供多種網(wǎng)絡(luò)管理功能,包括登錄到路由器表(router.db)中的每個(gè)設(shè)備,運(yùn)行各種命令以獲取將被保存的信息,將之前收集的信息中的任何變化發(fā)送到郵件列表,并提交這些更改到版本控制系統(tǒng)。
12. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: Xymon
另一個(gè)需要提及的網(wǎng)絡(luò)監(jiān)控工具是Xymon(以前稱為Hobbit)。 Xymon監(jiān)控服務(wù)器,應(yīng)用程序和網(wǎng)絡(luò),通過(guò)網(wǎng)頁(yè)提供有關(guān)所有這些網(wǎng)絡(luò)組件運(yùn)行狀況的信息。
其網(wǎng)站上表示Xymon的開(kāi)發(fā)受到Big Brother的啟發(fā),同Big Sister一樣,它試圖解決Big Brother BTF的缺點(diǎn),如性能方面。 同時(shí),Xymon更容易部署并且是免費(fèi)的。
13. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: Big Brother BTF
other創(chuàng)建于20世紀(jì)90年代中期,用于監(jiān)控網(wǎng)絡(luò)系統(tǒng),后來(lái)被Quest Software收購(gòu),而其又被戴爾在2012年收購(gòu)。
許多其他網(wǎng)絡(luò)監(jiān)控工具都是模仿Big Brother的,所以它有一個(gè)大型的、詳細(xì)的論壇和有幫助的開(kāi)發(fā)人員社區(qū),是初學(xué)者的好選擇。除了可用于學(xué)生和非商業(yè)用途的開(kāi)源版本之外,其還提供了名為Big Brother Professional Edition的商業(yè)版本。
14. 開(kāi)源網(wǎng)絡(luò)監(jiān)控工具: Big Sister
Big Sister創(chuàng)始人托馬斯·艾比(Thomas Aeby)表示,他對(duì)Big Brother的網(wǎng)絡(luò)監(jiān)控印象深刻,但希望提高其性能,減少壞事件發(fā)生時(shí)的警報(bào)數(shù)量,并進(jìn)行其他改進(jìn)。
Big Sister提供網(wǎng)絡(luò)監(jiān)控,節(jié)點(diǎn)管理,doxygen過(guò)濾器和Web應(yīng)用程序框架,作為Unix衍生產(chǎn)品和Microsoft Windows操作系統(tǒng)的一部分。
Big Sister對(duì)監(jiān)控網(wǎng)絡(luò)系統(tǒng)的IT管理員有所幫助。當(dāng)系統(tǒng)故障時(shí),它會(huì)通知管理員,生成狀態(tài)變化歷史記錄日志并顯示各種系統(tǒng)性能數(shù)據(jù)。
Ocelot中文文檔:一個(gè).NET Core開(kāi)源API網(wǎng)關(guān) 互聯(lián)網(wǎng)視頻課程
Ocelot是一個(gè)用.NET Core實(shí)現(xiàn)并且開(kāi)源的API網(wǎng)關(guān),它功能強(qiáng)大,包括了:路由、請(qǐng)求聚合、服務(wù)發(fā)現(xiàn)、認(rèn)證、鑒權(quán)、限流熔斷、并內(nèi)置了負(fù)載均衡器與Service Fabric、Butterfly Tracing集成。這些功能只都只需要簡(jiǎn)單的配置即可完成,下面我們會(huì)對(duì)這些功能的配置一一進(jìn)行說(shuō)明。
介紹
簡(jiǎn)單的來(lái)說(shuō)Ocelot是一堆的asp core middleware組成的一個(gè)管道。當(dāng)它拿到請(qǐng)求之后會(huì)用一個(gè)request builder來(lái)構(gòu)造一個(gè)HttpRequestMessage發(fā)到下游的真實(shí)服務(wù)器,等下游的服務(wù)返回response之后再由一個(gè)middleware將它返回的HttpResponseMessage映射到HttpResponse上。
API網(wǎng)關(guān)—— 它是系統(tǒng)的暴露在外部的一個(gè)訪問(wèn)入口。這個(gè)有點(diǎn)像代理訪問(wèn)的家伙,就像一個(gè)公司的門衛(wèi)承擔(dān)著尋址、限制進(jìn)入、安全檢查、位置引導(dǎo)、等等功能。
Ocelot的基本使用
用一臺(tái)web service來(lái)host Ocelot,在這里有一個(gè)json配置文件,里面設(shè)置了所有對(duì)當(dāng)前這個(gè)網(wǎng)關(guān)的配置。它會(huì)接收所有的客戶端請(qǐng)求,并路由到對(duì)應(yīng)的下游服務(wù)器進(jìn)行處理,再將請(qǐng)求結(jié)果返回。而這個(gè)上下游請(qǐng)求的對(duì)應(yīng)關(guān)系也被稱之為路由。
集成Identity Server
當(dāng)我們涉及到認(rèn)證和鑒權(quán)的時(shí)候,我們可以跟Identity Server進(jìn)行結(jié)合。當(dāng)網(wǎng)關(guān)需要請(qǐng)求認(rèn)證信息的時(shí)候會(huì)與Identity Server服務(wù)器進(jìn)行交互來(lái)完成。
網(wǎng)關(guān)集群
只有一個(gè)網(wǎng)關(guān)是很危險(xiǎn)的,也就是我們通常所講的單點(diǎn),只要它掛了,所有的服務(wù)全掛。這顯然無(wú)法達(dá)到高可用,所以我們也可以部署多臺(tái)網(wǎng)關(guān)。當(dāng)然這個(gè)時(shí)候在多臺(tái)網(wǎng)關(guān)前,你還需要一臺(tái)負(fù)載均衡器。
Consul 服務(wù)發(fā)現(xiàn)
在Ocelot已經(jīng)支持簡(jiǎn)單的負(fù)載功能,也就是當(dāng)下游服務(wù)存在多個(gè)結(jié)點(diǎn)的時(shí)候,Ocelot能夠承擔(dān)起負(fù)載均衡的作用。但是它不提供健康檢查,服務(wù)的注冊(cè)也只能通過(guò)手動(dòng)在配置文件里面添加完成。這不夠靈活并且在一定程度下會(huì)有風(fēng)險(xiǎn)。這個(gè)時(shí)候我們就可以用Consul來(lái)做服務(wù)發(fā)現(xiàn),它能與Ocelot完美結(jié)合。
集成網(wǎng)關(guān)
在asp core 2.0里通過(guò)nuget即可完成集成,或者命令行dotnet add package Ocelot以及通過(guò)vs2017 UI添加Ocelot nuget引用都可以。
Install-Package Ocelot
配置
我們需要添加一個(gè).json的文件用來(lái)添加Ocelot的配置,以下是最基本的配置信息。
要特別注意一下BaseUrl是我們外部暴露的Url,比如我們的Ocelot運(yùn)行在http://123.111.1.1的一個(gè)地址上,但是前面有一個(gè) nginx綁定了域名http://api.jessetalk,那這里我們的BaseUrl就是 http://api.jessetalk。
將配置文件加入ASP.NET Core Configuration
我們需要通過(guò)WebHostBuilder將我們添加的json文件添加進(jìn)asp core的配置
配置依賴注入與中間件
在startup.cs中我們首先需要引用兩個(gè)命名空間
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
接下來(lái)就是添加依賴注入和中間件
Ocelot功能介紹
通過(guò)配置文件可以完成對(duì)Ocelot的功能配置:路由、服務(wù)聚合、服務(wù)發(fā)現(xiàn)、認(rèn)證、鑒權(quán)、限流、熔斷、緩存、Header頭傳遞等。在配置文件中包含兩個(gè)根節(jié)點(diǎn):ReRoutes和GlobalConfiguration。ReRoutes是一個(gè)數(shù)組,其中的每一個(gè)元素代表了一個(gè)路由,我們可以針對(duì)每一個(gè)路由進(jìn)行以上功能配置。下面是一個(gè)完整的路由配置
Downstream是下游服務(wù)配置
UpStream是上游服務(wù)配置
Aggregates 服務(wù)聚合配置
ServiceName, LoadBalancer, UseServiceDiscovery 配置服務(wù)發(fā)現(xiàn)
AuthenticationOptions 配置服務(wù)認(rèn)證
RouteClaimsRequirement 配置Claims鑒權(quán)
RateLimitOptions為限流配置
FileCacheOptions 緩存配置
QosOptions 服務(wù)質(zhì)量與熔斷
DownstreamHeaderTransform頭信息轉(zhuǎn)發(fā)
我們接下來(lái)將對(duì)這些功能一一進(jìn)行介紹和配置
路由
路由是API網(wǎng)關(guān)最基本也是最核心的功能、ReRoutes下就是由多個(gè)路由節(jié)點(diǎn)組成。
而每一個(gè)路由由以下幾個(gè)基本信息組成:
下面這個(gè)配置信息就是將用戶的請(qǐng)求 /post/1 轉(zhuǎn)發(fā)到 localhost/api/post/1
DownstreamPathTemplate:下游戲
DownstreamScheme:下游服務(wù)http schema
DownstreamHostAndPorts:下游服務(wù)的地址,如果使用LoadBalancer的話這里可以填多項(xiàng)
UpstreamPathTemplate: 上游也就是用戶輸入的請(qǐng)求Url模板
UpstreamHttpMethod: 上游請(qǐng)求http方法,可使用數(shù)組
萬(wàn)能模板
萬(wàn)能模板即所有請(qǐng)求全部轉(zhuǎn)發(fā),UpstreamPathTemplate 與DownstreamPathTemplate 設(shè)置為 “/{url}”
萬(wàn)能模板的優(yōu)先級(jí)最低,只要有其它的路由模板,其它的路由模板則會(huì)優(yōu)先生效。
上游Host
上游Host也是路由用來(lái)判斷的條件之一,由客戶端訪問(wèn)時(shí)的Host來(lái)進(jìn)行區(qū)別。比如當(dāng)a.jesetalk/users/{userid}和b.jessetalk/users/{userid}兩個(gè)請(qǐng)求的時(shí)候可以進(jìn)行區(qū)別對(duì)待。
Prioirty優(yōu)先級(jí)
對(duì)多個(gè)產(chǎn)生沖突的路由設(shè)置優(yōu)化級(jí)
比如你有同樣兩個(gè)路由,當(dāng)請(qǐng)求/goods/delete的時(shí)候,則下面那個(gè)會(huì)生效。也就是說(shuō)Prority是大的會(huì)被優(yōu)先選擇。
路由負(fù)載均衡
當(dāng)下游服務(wù)有多個(gè)結(jié)點(diǎn)的時(shí)候,我們可以在DownstreamHostAndPorts中進(jìn)行配置。
LoadBalancer將決定負(fù)載均衡的算法
LeastConnection – 將請(qǐng)求發(fā)往最空閑的那個(gè)服務(wù)器
RoundRobin – 輪流發(fā)送
NoLoadBalance – 總是發(fā)往第一個(gè)請(qǐng)求或者是服務(wù)發(fā)現(xiàn)
在負(fù)載均衡這里,我們還可以和Consul結(jié)合來(lái)使用服務(wù)發(fā)現(xiàn),我們將在后面的小節(jié)中進(jìn)行詳述。
請(qǐng)求聚合
即將多個(gè)API請(qǐng)求結(jié)果合并為一個(gè)返回。要實(shí)現(xiàn)請(qǐng)求聚合我們需要給其它參與的路由起一個(gè)Key。
當(dāng)我們請(qǐng)求/的時(shí)候,會(huì)將/tom和/laura兩個(gè)結(jié)果合并到一個(gè)response返回
{"Tom":{"Age": 19},"Laura":{"Age": 25}}
需要注意的是:
聚合服務(wù)目前只支持返回json
目前只支持Get方式請(qǐng)求下游服務(wù)
任何下游的response header并會(huì)被丟棄
如果下游服務(wù)返回404,聚合服務(wù)只是這個(gè)key的value為空,它不會(huì)返回404
有一些其它的功能會(huì)在將來(lái)實(shí)現(xiàn)
下游服務(wù)很慢的處理
做一些像 GraphQL的處理對(duì)下游服務(wù)返回結(jié)果進(jìn)行處理
404的處理
限流
對(duì)請(qǐng)求進(jìn)行限流可以防止下游服務(wù)器因?yàn)樵L問(wèn)過(guò)載而崩潰,這個(gè)功能就是我們的張善友張隊(duì)進(jìn)添加進(jìn)去的。非常優(yōu)雅的實(shí)現(xiàn),我們只需要在路由下加一些簡(jiǎn)單的配置即可以完成。
ClientWihteList 白名單
EnableRateLimiting 是否啟用限流
Period 統(tǒng)計(jì)時(shí)間段:1s, 5m, 1h, 1d
PeroidTimeSpan 多少秒之后客戶端可以重試
Limit 在統(tǒng)計(jì)時(shí)間段內(nèi)允許的最大請(qǐng)求數(shù)量
在 GlobalConfiguration下我們還可以進(jìn)行以下配置
Http頭 X-Rate-Limit 和 Retry-After 是否禁用
QuotaExceedMessage 當(dāng)請(qǐng)求過(guò)載被截?cái)鄷r(shí)返回的消息
HttpStatusCode 當(dāng)請(qǐng)求過(guò)載被截?cái)鄷r(shí)返回的http status
ClientIdHeader 用來(lái)識(shí)別客戶端的請(qǐng)求頭,默認(rèn)是 ClientId
服務(wù)質(zhì)量與熔斷
熔斷的意思是停止將請(qǐng)求轉(zhuǎn)發(fā)到下游服務(wù)。當(dāng)下游服務(wù)已經(jīng)出現(xiàn)故障的時(shí)候再請(qǐng)求也是功而返,并且增加下游服務(wù)器和API網(wǎng)關(guān)的負(fù)擔(dān)。這個(gè)功能是用的Pollly來(lái)實(shí)現(xiàn)的,我們只需要為路由做一些簡(jiǎn)單配置即可
ExceptionsAllowedBeforeBreaking 允許多少個(gè)異常請(qǐng)求
DurationOfBreak 熔斷的時(shí)間,單位為秒
TimeoutValue 如果下游請(qǐng)求的處理時(shí)間超過(guò)多少則自如將請(qǐng)求設(shè)置為超時(shí)
緩存
Ocelot可以對(duì)下游請(qǐng)求結(jié)果進(jìn)行緩存 ,目前緩存的功能還不是很強(qiáng)大。它主要是依賴于CacheManager 來(lái)實(shí)現(xiàn)的,我們只需要在路由下添加以下配置即可
"FileCacheOptions": { "TtlSeconds": 15, "Region": "somename" }
Region是對(duì)緩存進(jìn)行的一個(gè)分區(qū),我們可以調(diào)用Ocelot的 administration API來(lái)移除某個(gè)區(qū)下面的緩存 。
認(rèn)證
如果我們需要對(duì)下游API進(jìn)行認(rèn)證以及鑒權(quán)服務(wù)的,則首先Ocelot 網(wǎng)關(guān)這里需要添加認(rèn)證服務(wù)。這和我們給一個(gè)單獨(dú)的API或者ASP.NET Core Mvc添加認(rèn)證服務(wù)沒(méi)有什么區(qū)別。
然后在ReRoutes的路由模板中的AuthenticationOptions進(jìn)行配置,只需要我們的AuthenticationProviderKey一致即可。
JWT Tokens
要讓網(wǎng)關(guān)支持JWT 的認(rèn)證其實(shí)和讓API支持JWT Token的認(rèn)證是一樣的
Identity Server Bearer Tokens
添加Identity Server的認(rèn)證也是一樣
Allowed Scopes
這里的Scopes將從當(dāng)前 token 中的 claims中來(lái)獲取,我們的鑒權(quán)服務(wù)將依靠于它來(lái)實(shí)現(xiàn) 。當(dāng)前路由的下游API需要某個(gè)權(quán)限時(shí),我們需要在這里聲明 。和oAuth2中的 scope意義一致。
鑒權(quán)
我們通過(guò)認(rèn)證中的AllowedScopes 拿到claims之后,如果要進(jìn)行權(quán)限的鑒別需要添加以下配置
當(dāng)前請(qǐng)求上下文的token中所帶的claims如果沒(méi)有 name=”UserType” 并且 value=”registered” 的話將無(wú)法訪問(wèn)下游服務(wù)。
請(qǐng)求頭轉(zhuǎn)化
請(qǐng)求頭轉(zhuǎn)發(fā)分兩種:轉(zhuǎn)化之后傳給下游和從下游接收轉(zhuǎn)化之后傳給客戶端。在Ocelot的配置里面叫做Pre Downstream Request和Post Downstream Request。目前的轉(zhuǎn)化只支持查找和替換。我們用到的配置主要是 UpstreamHeaderTransform 和 DownstreamHeaderTransform
Pre Downstream Request
"Test": "http://bbc.co.uk/, http://ocelot/"
比如我們將客戶端傳過(guò)來(lái)的Header中的 Test 值改為 http://ocelot/之后再傳給下游
"UpstreamHeaderTransform": {
"Test": "http://bbc.co.uk/, http://ocelot/"
},
Post Downstream Request
而我們同樣可以將下游Header中的Test再轉(zhuǎn)為 http://bbc.co.uk/之后再轉(zhuǎn)給客戶端。
"DownstreamHeaderTransform": {
"Test": "http://bbc.co.uk/, http://ocelot/"
},
變量
在請(qǐng)求頭轉(zhuǎn)化這里Ocelot為我們提供了兩個(gè)變量:BaseUrl和DownstreamBaseUrl。BaseUrl就是我們?cè)贕lobalConfiguration里面配置的BaseUrl,后者是下游服務(wù)的Url。這里用301跳轉(zhuǎn)做一個(gè)示例如何使用這兩個(gè)變量。
默認(rèn)的301跳轉(zhuǎn),我們會(huì)返回一個(gè)Location的頭,于是我們希望將http://bbc.co.uk 替換為 http://ocelot,后者者網(wǎng)關(guān)對(duì)外的域名。
"DownstreamHeaderTransform": {
"Location": "http://bbc.co.uk/, http://ocelot/"
},
"HttpHandlerOptions": {
"AllowAutoRedirect": false,
},
我們通過(guò)DownstreamHeaderTranfrom將下游返回的請(qǐng)求頭中的Location替換為了網(wǎng)關(guān)的域名,而不是下游服務(wù)的域名。所以在這里我們也可以使用BaseUrl來(lái)做為變量替換。
"DownstreamHeaderTransform": {
"Location": "http://localhost:6773, {BaseUrl}"
},
"HttpHandlerOptions": {
"AllowAutoRedirect": false,
},
當(dāng)我們的下游服務(wù)有多個(gè)的時(shí)候,我們就沒(méi)有辦法找到前面的那個(gè)http://localhost:6773,因?yàn)樗赡苁嵌鄠€(gè)值。所以這里我們可以使用DownstreamBaseUrl。
"DownstreamHeaderTransform": {
"Location": "{DownstreamBaseUrl}, {BaseUrl}"
},
"HttpHandlerOptions": {
"AllowAutoRedirect": false,
},
Claims轉(zhuǎn)化
Claims轉(zhuǎn)化功能可以將Claims中的值轉(zhuǎn)化到請(qǐng)求頭、Query String、或者下游的Claims中,對(duì)于Claims的轉(zhuǎn)化,比較特殊的一點(diǎn)是它提供了一種對(duì)字符串進(jìn)行解析的方法。舉個(gè)例子,比如我們有一個(gè)sub的claim。這個(gè)claims的 name=”sub” value=”usertypevalue|useridvalue”,實(shí)際上我們不會(huì)弄這么復(fù)雜的value,它是拼接來(lái)的,但是我們?yōu)榱搜菔具@個(gè)字符串解析的功能,所以使用了這么一個(gè)復(fù)雜的value。
Ocelot為我們提供的功能分為三段,第一段是Claims[sub],很好理解[] 里面是我們的claim的名稱。第二段是 > 表示對(duì)字符串進(jìn)行拆分, 后面跟著拆分完之后我們要取的那個(gè)數(shù)組里面的某一個(gè)元素用 value[index]來(lái)表示,取第0位元素也可以直接用value。第三段也是以 > 開(kāi)頭后面跟著我們的分隔符,在我們上面的例子分隔符是 |
所以在這里如果我們要取 usertype這個(gè)claim就會(huì)這樣寫: Claims[sub] > value[0] >|
Claim取到之后我們?nèi)绻诺秸?qǐng)求頭、QueryString、以及Claim當(dāng)中對(duì)應(yīng)有以下三個(gè)配置。
Claims to Claims
"AddClaimsToRequest": {
"UserType": "Claims[sub] > value[0] >|",
"UserId": "Claims[sub] > value[1] >|"
}
Claims to Headers
"AddHeadersToRequest": {
"CustomerId": "Claims[sub] > value[1] >|"
}
這里我們還是用的上面那個(gè) sub = usertypevalue|useridvalue 的claim來(lái)進(jìn)行處理和轉(zhuǎn)化。
Claims to Query String
"AddQueriesToRequest": {
"LocationId": "Claims[LocationId] >value",
}
這里沒(méi)有進(jìn)行分隔,所以直接取了value。
作者:Jesse 出處: http://jesse2013blogs/
.net core 必學(xué)開(kāi)源項(xiàng)目三 流量視頻課程
當(dāng)你需要一個(gè)任務(wù)調(diào)度框架時(shí), core 也提供了很好的支持。從下面的搜索結(jié)果可以看出這個(gè)框架已經(jīng)非常流行了。
搜索 結(jié)果
Hangfire provides a unified programming model to handle background tasks in a reliable way and run them on shared hosting, dedicated hosting or in cloud. You can start with a simple setup and grow computational power for background jobs with time for these scenarios:
mass notifications/newsletters
batch import from xml, csv or json
creation of archives
firing off web hooks
deleting users
building different graphs
image/video processing
purging temporary files
recurring automated reports
database maintenance
…and so on
Hangfire is a .NET Framework alternative to Resque, Sidekiq, delayed_job, Celery.
示意圖
示意圖
項(xiàng)目地址:https://github/HangfireIO/Hangfire
項(xiàng)目文檔:http://docs.hangfire.io/en/latest/
再次提醒各位同學(xué),點(diǎn)關(guān)注不迷路哦!
免費(fèi)開(kāi)源建站程序來(lái)了!12款強(qiáng)大又好用 免費(fèi)視頻課程
上期給大家介紹了目前比較主流的8大傻瓜式自助建站平臺(tái),有朋友留言對(duì)開(kāi)源建站程序感興趣。雖然小編有回復(fù),但是為了讓更多的人可以看到,還是決定單獨(dú)成篇介紹下:
1.Drupal
Drupal是一個(gè)開(kāi)源的內(nèi)容管理框架(CMF) 平臺(tái),它由內(nèi)容管理系統(tǒng)(CMS)和PHP開(kāi)發(fā)框架(Framework)共同構(gòu)成。主要用于構(gòu)造提供多種功能和服務(wù)的動(dòng)態(tài)網(wǎng)站,“Drupal有難度,學(xué)習(xí)需謹(jǐn)慎。”因?yàn)镈rupal具有業(yè)內(nèi)最強(qiáng)的定制能力和靈活性,這也是造成Drupal學(xué)習(xí)難度太大的根本原因,
網(wǎng)址:drupal.org
drupal 8
2.Wordpress
這個(gè)上期已經(jīng)介紹過(guò)了,不過(guò)之前沒(méi)有標(biāo)明它是開(kāi)源的系統(tǒng),它其實(shí)也是屬于源碼類,可上傳至自己的服務(wù)器,方便二次開(kāi)發(fā)和管理。具體就不多說(shuō)了!
網(wǎng)址:https://cn.wordpress.org
3.Joomla
Joomla實(shí)際有兩個(gè)開(kāi)源的東西,一個(gè)是JoomlaCMS(內(nèi)容管理系統(tǒng))一個(gè)是Joomla Platform(Joomla框架,除了網(wǎng)站之外,還可以進(jìn)行廣泛的web開(kāi)發(fā)、手機(jī)應(yīng)用開(kāi)發(fā)等等。Joomla在國(guó)內(nèi)最重要的開(kāi)源支持網(wǎng)站為囧啦中國(guó)。需要有需要的可以看看,下方附網(wǎng)址。
網(wǎng)址:joomla
4.OctoberCMS
基于Laravel這個(gè)PHP開(kāi)發(fā)框架的CMS系統(tǒng),免費(fèi)、開(kāi)源、自托管。OctoberCMS的后臺(tái)功能相當(dāng)強(qiáng)大,并且可以在后臺(tái)進(jìn)行代碼的修改。事實(shí)上,如果是常見(jiàn)的功能,我們完全不用編寫任何代碼,只需要使用正確的插件和正確的配置即可。
網(wǎng)址:octobercms
5.XOOPS
XOOPS是一個(gè)開(kāi)放源代碼的工具程序,用于實(shí)現(xiàn)從小型到大型的動(dòng)態(tài)交互社區(qū),公司門戶,企業(yè)內(nèi)部網(wǎng),網(wǎng)絡(luò)日志等。衍生自PHP-Nuke,采用PHP語(yǔ)言跟MySQL數(shù)據(jù)庫(kù)。功能、界面全部模板化設(shè)計(jì),
網(wǎng)址:http://xoops.org/
6.ECMS
帝國(guó)CMS(ECMS),目前國(guó)內(nèi)應(yīng)用最廣泛的開(kāi)源CMS系統(tǒng),基于B/S結(jié)構(gòu),安全、功能強(qiáng)大而易用的網(wǎng)站管理系統(tǒng)。安全性能好,內(nèi)置強(qiáng)大的備份恢復(fù)系統(tǒng)。相對(duì)來(lái)說(shuō)比較適合做一個(gè)信息網(wǎng)或者門戶網(wǎng)站,對(duì)互動(dòng)性要求比較高的網(wǎng)站則不適合。
網(wǎng)址:phome
7.Dedecms
Dedecms(織夢(mèng))以簡(jiǎn)單、實(shí)用、開(kāi)源而聞名,采用PHP+MySQL技術(shù)開(kāi)發(fā),程序源代碼完全開(kāi)放,在尊重版權(quán)的前提下能極大的滿足站長(zhǎng)對(duì)于網(wǎng)站程序進(jìn)行二次開(kāi)發(fā)。DedeCms免費(fèi)版的主要目標(biāo)用戶鎖定在個(gè)人站長(zhǎng),功能更專注于個(gè)人網(wǎng)站或中小型門戶的構(gòu)建。
網(wǎng)址:dedecms
8.Discuz!
Discuz!(Crossday Discuz! Board)社區(qū)論壇軟件系統(tǒng),基礎(chǔ)架構(gòu)采用web編程組合PHP+MySQL,用戶可以在不需要任何編程的基礎(chǔ)上,通過(guò)簡(jiǎn)單的設(shè)置和安裝,在互聯(lián)網(wǎng)上搭建起具備完善功能、很強(qiáng)負(fù)載能力和可高度定制的論壇服務(wù)。同樣適用于搭建社區(qū)論壇的還有Phpwind。
網(wǎng)址:discuz
9.Typecho
輕量級(jí)開(kāi)源博客程序,基于PHP(需要PHP5以上版本)構(gòu)建,可以運(yùn)行在各種平臺(tái)上,支持多種數(shù)據(jù)庫(kù)(Mysql,PostgreSQL,SQLite)。適用于搭建個(gè)人網(wǎng)絡(luò)日志發(fā)布平臺(tái)。
網(wǎng)址:typecho.org
10.蟬知CMS
一款開(kāi)源免費(fèi)的專向企業(yè)營(yíng)銷的企業(yè)門戶系統(tǒng)。蟬知系統(tǒng)內(nèi)置了文章、產(chǎn)品、論壇、評(píng)論、會(huì)員、博客、幫助等功能,功能豐富實(shí)用,后臺(tái)操作簡(jiǎn)潔方便。同時(shí)蟬知系統(tǒng)內(nèi)置了搜索引擎優(yōu)化必備的功能
網(wǎng)址:chanzhi.org
11.Phpcms
國(guó)內(nèi)知名的站長(zhǎng)建站工具,是網(wǎng)站內(nèi)容管理系統(tǒng),同時(shí)也是一個(gè)開(kāi)源的PHP開(kāi)發(fā)框架,采用模塊化開(kāi)發(fā),支持自定義內(nèi)容模型和會(huì)員模型,并且可以自定義字段。
網(wǎng)址:phpcms
12.Ecshop
國(guó)內(nèi)免費(fèi)的開(kāi)源B2B2C商城系統(tǒng),適合企業(yè)及個(gè)人快速構(gòu)建個(gè)性化網(wǎng)上商店。系統(tǒng)是基于PHP語(yǔ)言及MYSQL數(shù)據(jù)庫(kù)構(gòu)架開(kāi)發(fā)的跨平臺(tái)開(kāi)源程序,能夠自定義開(kāi)發(fā)。不過(guò)這個(gè)系統(tǒng)部分模板和插件服務(wù)之類的是需要付費(fèi)的。
網(wǎng)址:ecshop
這篇文章介紹的部分系統(tǒng)來(lái)源于上期文章中大家的留言@千古歲歲@iSaMueLWang@輕舞飛沙26938313 @XBATU,謝謝親們!也歡迎各位新老朋友們留言補(bǔ)充,讓大家可以了解更多的免費(fèi)開(kāi)源建站系統(tǒng)!
點(diǎn)擊傳送門,閱讀“推薦!2017比較主流的8款自助建站平臺(tái)!”
Meetsite(見(jiàn)站),您身邊的建站技巧分享家!
.net core 必學(xué)開(kāi)源項(xiàng)目一 行業(yè)視頻課程
網(wǎng)關(guān)(Gateway)又稱網(wǎng)間連接器、協(xié)議轉(zhuǎn)換器。網(wǎng)關(guān)在網(wǎng)絡(luò)層以上實(shí)現(xiàn)網(wǎng)絡(luò)互連,是最復(fù)雜的網(wǎng)絡(luò)互連設(shè)備,僅用于兩個(gè)高層協(xié)議不同的網(wǎng)絡(luò)互連。網(wǎng)關(guān)既可以用于廣域網(wǎng)互連,也可以用于局域網(wǎng)互連。 網(wǎng)關(guān)是一種充當(dāng)轉(zhuǎn)換重任的計(jì)算機(jī)系統(tǒng)或設(shè)備。使用在不同的通信協(xié)議、數(shù)據(jù)格式或語(yǔ)言,甚至體系結(jié)構(gòu)完全不同的兩種系統(tǒng)之間,網(wǎng)關(guān)是一個(gè)翻譯器。與網(wǎng)橋只是簡(jiǎn)單地傳達(dá)信息不同,網(wǎng)關(guān)對(duì)收到的信息要重新打包,以適應(yīng)目的系統(tǒng)的需求。同層--應(yīng)用層。
示意圖
相關(guān)搜索
從圖中我們不難看出,推舉度最高的里面有一個(gè)比較完善的,它叫Ocelot。
Ocelot is a .NET Api Gateway. This project is aimed at people using .NET running a micro services / service orientated architecture that need a unified point of entry into their system.
Ocelot is a bunch of middlewares in a specific order.
Ocelot manipulates the HttpRequest object into a state specified by its configuration until it reaches a request builder middleware where it creates a HttpRequestMessage object which is used to make a request to a downstream service. The middleware that makes the request is the last thing in the Ocelot pipeline. It does not call the next middleware. The response from the downstream service is stored in a per request scoped repository and retrieved as the requests goes back up the Ocelot pipeline. There is a piece of middleware that maps the HttpResponseMessage onto the HttpResponse object and that is returned to the client. That is basically it with a bunch of other features.
項(xiàng)目地址:https://github/TomPallister/Ocelot
項(xiàng)目文檔:http://ocelot.readthedocs.io/en/latest
再次提醒各位同學(xué),點(diǎn)關(guān)注不迷路哦!
基于Asp.net MVC的一個(gè)博客類網(wǎng)站開(kāi)源了! 流量視頻課程
基于Asp MVC的一個(gè)博客類網(wǎng)站開(kāi)源了!
網(wǎng)站介紹:
該網(wǎng)站采用UnitOfwork框架,前端和后臺(tái)在實(shí)現(xiàn)過(guò)程中引用了不少的控件和一些優(yōu)秀的庫(kù),具體看下面的介紹:
系統(tǒng)結(jié)構(gòu),跟參考來(lái)源中的框架沒(méi)有很大的區(qū)別,當(dāng)時(shí)就建立在該框架的基礎(chǔ)上進(jìn)行實(shí)現(xiàn)的:)
圖1:系統(tǒng)架構(gòu)
圖2:核心思想和組件
在實(shí)現(xiàn)該網(wǎng)站了可是使用了不少心思調(diào)用修改各種控件,又做前端又寫后臺(tái),而且還P圖~,哦哦,這里前端和后臺(tái)管理都使用了一套來(lái)自 keenthemes 的框架 ,有興趣可以點(diǎn)擊看一下。
圖3:系統(tǒng)引用的部分第三方控件和庫(kù)
該網(wǎng)站實(shí)現(xiàn)的功能還是比較多的,看下面兩張圖就明白了,誰(shuí)叫我當(dāng)時(shí)真的有那顆熱忱的心,可謂是吃飯睡覺(jué)時(shí)心思都放在這件事上,好懷念當(dāng)時(shí)的那種感覺(jué)。
這里多說(shuō)兩句:
在基本模塊中都實(shí)現(xiàn)了評(píng)論功能,而且是局部刷新分頁(yè),在 書(shū)籍推薦 模塊中參考豆瓣的設(shè)計(jì),添加了評(píng)分的功能,而且還支持書(shū)籍資源下載;
圖片欣賞模塊在前端方面實(shí)現(xiàn)了瀑布流模式,體驗(yàn)還不錯(cuò),如果內(nèi)容足夠,可以一直往下刷~
圖4:功能內(nèi)容
后臺(tái)針對(duì)前臺(tái)的功能做了對(duì)應(yīng),內(nèi)容也是多得要命~
圖5:后臺(tái)管理
一睹為快:
以前買過(guò)服務(wù)器和域名跑了一段時(shí)間呢,但是沒(méi)續(xù)費(fèi)所以不能在線點(diǎn)擊預(yù)覽啦,先上幾張圖先,個(gè)人感覺(jué)我的審美能力還是不錯(cuò)的,排版還是自己折騰出來(lái)的。
安裝部署說(shuō)明:
再貼一次:github地址:https://github/xueying/QSWebProject
下載解壓后,用 Visual Studio 2013 或以上版本打開(kāi)(2010或2012 估計(jì)也行,沒(méi)試過(guò),估計(jì)要折騰一下);
找到 MSSQL 數(shù)據(jù)庫(kù)腳本文件 QSDB_github.sql 并執(zhí)行之
數(shù)據(jù)庫(kù)連接:打開(kāi) QSProject\QSWebProject\QS.Web\Web.config 文件,找到:
前臺(tái)登錄采用學(xué)號(hào)或用戶名登錄:用戶名:Admin(學(xué)號(hào):123456789012)密碼:123456;后臺(tái)管理地址 Admin/OAuth/Index,后臺(tái)登錄僅提供用戶名登錄。
總結(jié):
因時(shí)間有限,還有好多細(xì)節(jié)的內(nèi)容沒(méi)有說(shuō)到的,相信在你在了解代碼中能夠發(fā)現(xiàn)不少驚喜,如果你覺(jué)得不錯(cuò)的話,那就 頂一個(gè)唄!