欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:分布式之網(wǎng)關(guān)介紹

柚子快報(bào)激活碼778899分享:分布式之網(wǎng)關(guān)介紹

http://yzkb.51969.com/

一、網(wǎng)關(guān)簡介

1、網(wǎng)關(guān)背景

由于微服務(wù)“各自為政的特性”使微服務(wù)的使用非常麻煩。通常公司會(huì)有一個(gè)“前臺(tái)小姐姐”作為統(tǒng)一入口,這就是網(wǎng)關(guān)

2、網(wǎng)關(guān)作用

統(tǒng)一入口:為服務(wù)提供一個(gè)唯一的入口,網(wǎng)關(guān)起到外部和內(nèi)部隔離的作用, 保障了后臺(tái)服務(wù)的安全性。鑒權(quán)校驗(yàn):識(shí)別每個(gè)請(qǐng)求的權(quán)限,拒絕不符合要求的請(qǐng)求。動(dòng)態(tài)路由:動(dòng)態(tài)的將請(qǐng)求路由到不同的后端集群中。減少客戶端與服務(wù)端的耦合:服務(wù)可以獨(dú)立發(fā)展,通過網(wǎng)關(guān)層來做映射。

3、網(wǎng)關(guān)優(yōu)勢(shì)

路由和負(fù)載均衡:網(wǎng)關(guān)可以作為反向代理,接收客戶端請(qǐng)求并將其路由到后端的多個(gè)服務(wù)器。通過使用負(fù)載均衡算法,網(wǎng)關(guān)可以根據(jù)服務(wù)器的負(fù)載情況分發(fā)請(qǐng)求,從而實(shí)現(xiàn)請(qǐng)求的平衡和優(yōu)化。安全性和訪問控制:網(wǎng)關(guān)可以充當(dāng)安全層,通過在請(qǐng)求到達(dá)應(yīng)用程序之前進(jìn)行身份驗(yàn)證、授權(quán)和訪問控制來保護(hù)應(yīng)用程序。它可以攔截和阻止惡意請(qǐng)求、DDoS攻擊和SQL注入等常見的安全威脅。協(xié)議轉(zhuǎn)換和數(shù)據(jù)格式轉(zhuǎn)換:網(wǎng)關(guān)可以處理不同的協(xié)議和數(shù)據(jù)格式之間的轉(zhuǎn)換。它可以將來自客戶端的請(qǐng)求從一種協(xié)議轉(zhuǎn)換為另一種協(xié)議,或?qū)⒑蠖朔?wù)的響應(yīng)轉(zhuǎn)換為適合客戶端的數(shù)據(jù)格式,從而實(shí)現(xiàn)系統(tǒng)之間的無縫集成和通信。監(jiān)控和分析:網(wǎng)關(guān)可以收集和監(jiān)控來自客戶端和后端服務(wù)的請(qǐng)求和響應(yīng)數(shù)據(jù)。它可以記錄日志、統(tǒng)計(jì)數(shù)據(jù)和指標(biāo),提供關(guān)于請(qǐng)求流量、性能和錯(cuò)誤的實(shí)時(shí)監(jiān)控和分析。這些信息可以幫助開發(fā)人員和管理員識(shí)別問題、優(yōu)化性能和做出決策。

4、網(wǎng)關(guān)劣勢(shì)

在微服務(wù)這種去中心化架構(gòu)中,成為瓶頸點(diǎn):如果網(wǎng)關(guān)掛掉,將會(huì)影響整個(gè)系統(tǒng)的可用性。作為系統(tǒng)的入口點(diǎn),網(wǎng)關(guān)的故障可能導(dǎo)致無法訪問后端服務(wù)和應(yīng)用程序。服務(wù)如果不是異步或者同步非阻塞,耦合度高:如果通過網(wǎng)關(guān)調(diào)用后端服務(wù)不可用或者響應(yīng)時(shí)間超時(shí),我們的連接數(shù)量是有限的,這時(shí)候網(wǎng)關(guān)處理能力下降這時(shí)候可能造成其他服務(wù)的不可用,嚴(yán)重者甚至導(dǎo)致雪崩效應(yīng)

二、常見網(wǎng)關(guān)的對(duì)比

1、Netflix Zuul1.0

中小廠落地案例豐富基于同步阻塞I0,性能差Netflix已經(jīng)停止了對(duì)Zuul 1.0的維護(hù)和開發(fā)

2、SpringCloud Gateway

是Spring Cloud生態(tài)系統(tǒng)中的官方網(wǎng)關(guān)解決方案,與其他Spring Cloud組件(如Eureka、Ribbon、Hystrix等)無縫集成響應(yīng)式支持:Spring Cloud Gateway基于Spring WebFlux框架,使用非阻塞式I/O和響應(yīng)式編程模型,具有高性能和高吞吐量的特點(diǎn)

3、Netflix Zuul2.0

基于非阻塞式I/O模型,性能接近SpringCloud Gateway它的開發(fā)和維護(hù)在2019年底停止了。Netflix推薦使用Spring Cloud Gateway作為替代方案,

4、綜合對(duì)比

Zuul1.0Spring Cloud GatewayZuul2.0長連接支持不支持支持支持IO模型阻塞非阻塞非阻塞性能低高高編程語言JavaJavaJava協(xié)議支持HttpHttpHttp流量管理需要二次開發(fā)需要二次開發(fā)需要二次開發(fā)擴(kuò)展性低高中成熟度高高低使用場(chǎng)景中小型流量項(xiàng)目大部分場(chǎng)景大部分場(chǎng)景

5、為什么自研網(wǎng)關(guān)

5.1 開源網(wǎng)關(guān)的不足

限制性:開源網(wǎng)關(guān)通常具有一些默認(rèn)的行為和規(guī)則,可能無法滿足特定業(yè)務(wù)需求的定制化要求。某些功能可能無法直接擴(kuò)展或修改,需要深入了解和修改源代碼,這對(duì)于非開發(fā)人員來說可能是一項(xiàng)挑戰(zhàn)??煽啃院头€(wěn)定性:開源網(wǎng)關(guān)在穩(wěn)定性和可靠性方面可能存在一些問題。盡管開源社區(qū)通常會(huì)及時(shí)修復(fù)和改進(jìn)問題,但是在某些情況下,可能會(huì)遇到較長時(shí)間的修復(fù)周期或仍存在未解決的問題。這對(duì)于對(duì)高可用性和系統(tǒng)穩(wěn)定性要求較高的應(yīng)用來說可能是一個(gè)問題。技術(shù)支持和文檔:相比商業(yè)解決方案,開源網(wǎng)關(guān)通常缺乏官方的技術(shù)支持和詳細(xì)的文檔。雖然開源社區(qū)通常提供一定的支持,但可能無法提供即時(shí)和全面的幫助。這對(duì)于在生產(chǎn)環(huán)境中使用開源網(wǎng)關(guān)的企業(yè)來說可能是一個(gè)潛在的風(fēng)險(xiǎn)。學(xué)習(xí)和培訓(xùn)成本:使用開源網(wǎng)關(guān)可能需要團(tuán)隊(duì)成員投入時(shí)間和精力來學(xué)習(xí)和理解其架構(gòu)、配置和使用方式。這可能需要額外的培訓(xùn)和學(xué)習(xí)成本,特別是對(duì)于新加入的團(tuán)隊(duì)成員來說。安全性和漏洞:盡管開源網(wǎng)關(guān)通常經(jīng)過廣泛的社區(qū)審查,但仍然存在潛在的安全漏洞。由于開源代碼的公開性,攻擊者可以更容易地發(fā)現(xiàn)和利用其中的漏洞。這要求團(tuán)隊(duì)及時(shí)更新和升級(jí)網(wǎng)關(guān),以確保應(yīng)用的安全性。依賴和版本兼容性:開源網(wǎng)關(guān)可能依賴于其他的開源組件和庫,可能需要處理版本兼容性和依賴沖突的問題。這可能需要額外的工作量來管理和升級(jí)依賴項(xiàng),以確保系統(tǒng)的穩(wěn)定性和一致性。

5.2 自研網(wǎng)關(guān)優(yōu)勢(shì)

定制化能力:自研網(wǎng)關(guān)可以根據(jù)具體業(yè)務(wù)需求進(jìn)行定制和擴(kuò)展,滿足特定場(chǎng)景的需求。你可以根據(jù)自己的業(yè)務(wù)邏輯、安全需求、性能要求等來設(shè)計(jì)和實(shí)現(xiàn)網(wǎng)關(guān),確保網(wǎng)關(guān)與整個(gè)系統(tǒng)的需求高度匹配。靈活性和可擴(kuò)展性:自研網(wǎng)關(guān)可以根據(jù)業(yè)務(wù)的發(fā)展和變化進(jìn)行靈活調(diào)整和擴(kuò)展。你可以根據(jù)需求添加新的功能、修改路由規(guī)則、引入新的協(xié)議等,而無需依賴第三方網(wǎng)關(guān)的更新和發(fā)布周期。性能和吞吐量:自研網(wǎng)關(guān)可以根據(jù)需求進(jìn)行性能優(yōu)化,以滿足高并發(fā)和低延遲的要求。你可以選擇合適的技術(shù)棧、采用非阻塞式I/O模型、引入異步處理等,以提升網(wǎng)關(guān)的性能和吞吐量。安全性和可控性:自研網(wǎng)關(guān)可以根據(jù)業(yè)務(wù)需求實(shí)現(xiàn)定制化的安全策略和訪問控制機(jī)制。你可以集成各種認(rèn)證和授權(quán)機(jī)制、請(qǐng)求過濾和防御機(jī)制,以確保系統(tǒng)的安全性,并根據(jù)具體需求進(jìn)行調(diào)整和優(yōu)化。增強(qiáng)的監(jiān)控和調(diào)試能力:自研網(wǎng)關(guān)可以針對(duì)自身的需求添加詳細(xì)的監(jiān)控指標(biāo)和調(diào)試功能。你可以收集和展示請(qǐng)求流量、性能指標(biāo)、錯(cuò)誤日志等數(shù)據(jù),以便進(jìn)行監(jiān)控、故障排查和性能優(yōu)化。技術(shù)棧選擇:自研網(wǎng)關(guān)可以根據(jù)團(tuán)隊(duì)的技術(shù)棧和專長選擇合適的技術(shù)和工具。你可以選擇自己熟悉和喜歡的編程語言、框架和庫,使網(wǎng)關(guān)的開發(fā)和維護(hù)更加高效和舒適。

三、網(wǎng)關(guān)整體設(shè)計(jì)

1、技術(shù)選型

1.1 基礎(chǔ)框架

SpringIOC ,SpringAOP,SpringmvcSpring Boot原生Java

1.2 網(wǎng)絡(luò)框架

原生NIOMinaNetty

1.3 注冊(cè)中心

Zookeeper:Zookeeper是一個(gè)分布式協(xié)調(diào)系統(tǒng),可以用于服務(wù)注冊(cè)與發(fā)現(xiàn)。它提供了一個(gè)可靠的分布式數(shù)據(jù)存儲(chǔ),并支持高可用性和一致性。由于他是強(qiáng)一致所以不適合,大數(shù)據(jù)量的注冊(cè)Eureka:Eureka是Netflix開源的服務(wù)注冊(cè)與發(fā)現(xiàn)組件,被設(shè)計(jì)為在云環(huán)境中運(yùn)行。它采用了基于REST的架構(gòu),具有簡單的配置和易于使用的特點(diǎn)。Netflix在官方文檔中已宣布停止對(duì)Eureka的更新和維護(hù)Consul:Consul是一個(gè)開源的服務(wù)網(wǎng)格解決方案,提供了服務(wù)注冊(cè)與發(fā)現(xiàn)、健康檢查、鍵值存儲(chǔ)、分布式一致性和多數(shù)據(jù)中心功能等,但是他是GO語言實(shí)現(xiàn)的Nacos:Nacos是阿里巴巴開源的一個(gè)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)治理平臺(tái)。它提供了統(tǒng)一的服務(wù)注冊(cè)與發(fā)現(xiàn)、動(dòng)態(tài)配置管理、服務(wù)健康監(jiān)測(cè)和流量管理等功能,幫助構(gòu)建和管理云原生應(yīng)用和微服務(wù)架構(gòu)

1.4 配置中心

Spring Cloud Config:Spring Cloud Config是Spring Cloud提供的配置管理工具用于集中管理和分發(fā)應(yīng)用程序的配置,但是不支持動(dòng)態(tài)刷新ApolloNacos

2、高性能要點(diǎn)

2.1異步化處理

單異步模式 (Future)雙異步模式 (completeFuture)

Future接口在某些方面存在一些局限性,這些局限性包括:

阻塞式獲取結(jié)果:Future的 get()方法是阻塞的,這意味著如果任務(wù)的結(jié)果還沒有準(zhǔn)備好,調(diào)用 get()方法的線程將會(huì)被阻塞,直到結(jié)果可用。這可能會(huì)導(dǎo)致應(yīng)用程序的性能下降,特別是當(dāng)需要同時(shí)處理多個(gè) Future對(duì)象時(shí)。無法取消任務(wù):Future接口提供了 cancel()方法來取消任務(wù)的執(zhí)行,但是這個(gè)方法并不能真正地取消任務(wù)的執(zhí)行。它只是嘗試去取消任務(wù),并返回一個(gè)表示取消成功與否的布爾值。如果任務(wù)已經(jīng)開始執(zhí)行或已經(jīng)完成,那么 cancel()方法將無效。缺乏異常處理:Future接口的 get()方法會(huì)拋出 InterruptedException和 ExecutionException異常。然而,這些異常并不提供足夠的信息來了解任務(wù)失敗的原因。當(dāng)任務(wù)拋出異常時(shí),我們無法在 Future對(duì)象上捕獲和處理這些異常。無法組合多個(gè) Future對(duì)象:在某些情況下,我們可能需要組合多個(gè)異步任務(wù)的結(jié)果,例如并行執(zhí)行多個(gè)任務(wù)并將它們的結(jié)果合并。Future接口本身并不提供直接的支持來處理這種情況,需要使用其他的方法,例如使用 CompletionService或者 CompletableFuture來實(shí)現(xiàn)。

為了克服這些局限性,Java 8 引入了 CompletableFuture類,它提供了更強(qiáng)大和靈活的功能,包括更好的異常處理、組合多個(gè)任務(wù)的結(jié)果以及異步任務(wù)的回調(diào)等。CompletableFuture類提供了一種更現(xiàn)代和易于使用的方式來處理異步編程任務(wù)。

CompletableFuture

CompletableFuture是Java編程語言中的一個(gè)類,它在Java 8中引入作為CompletableFuture API的一部分。它屬于java.util.concurrent包,并提供了一種執(zhí)行異步編程和處理異步計(jì)算結(jié)果的方式。

CompletableFuture代表了一個(gè)可能在未來完成的計(jì)算,并允許你將多個(gè)操作鏈接在一起形成一個(gè)流水線。每個(gè)操作都是異步執(zhí)行的,這意味著它可以與其他操作或任務(wù)并發(fā)運(yùn)行。

以下是關(guān)于CompletableFuture的一些關(guān)鍵特性和概念:

異步執(zhí)行:CompletableFuture提供了一種異步執(zhí)行任務(wù)的方式,這意味著你可以啟動(dòng)一個(gè)任務(wù)并繼續(xù)執(zhí)行其他操作,而不需要等待任務(wù)完成。組合:你可以將多個(gè)CompletableFuture實(shí)例鏈接在一起,形成一個(gè)操作的流水線。這使得你可以表達(dá)復(fù)雜的異步工作流和任務(wù)之間的依賴關(guān)系。完成動(dòng)作:CompletableFuture允許你指定在CompletableFuture完成時(shí)應(yīng)執(zhí)行的動(dòng)作,無論是正常完成還是異常完成。你可以附加回調(diào)函數(shù),在計(jì)算結(jié)果可用時(shí)執(zhí)行,或者處理任何發(fā)生的異常。結(jié)果合并:CompletableFuture提供了多種方法,在多個(gè)CompletableFuture都完成時(shí)合并它們的結(jié)果。例如,你可以使用 thenCombine方法指定一個(gè)函數(shù),將兩個(gè)CompletableFuture的結(jié)果合并并產(chǎn)生一個(gè)新的結(jié)果。異常處理:CompletableFuture提供了多種方法來處理計(jì)算過程中發(fā)生的異常。你可以使用 exceptionally方法指定一個(gè)備用值,或者使用 handle方法處理異常并基于異常產(chǎn)生一個(gè)結(jié)果。異步執(zhí)行模型:CompletableFuture支持不同的執(zhí)行模型,例如使用單獨(dú)的線程異步執(zhí)行任務(wù),或者利用線程池執(zhí)行任務(wù)。

package com.msb;

import java.util.concurrent.*;

public class FutureTaskTest {

public static void main(String[] args) throws ExecutionException, InterruptedException {

// 創(chuàng)建任務(wù)T2 FutureTask

FutureTask ft2 = new FutureTask<>(new T2Task());

// 創(chuàng)建任務(wù)T1的 FutureTask

FutureTask ft1 = new FutureTask<>(new T1Task(ft2));

// 線程1 執(zhí)行T2任務(wù)

Thread t1 = new Thread(ft2);

t1.start();

// 線程2執(zhí)行 任務(wù)他

Thread t2 = new Thread(ft1);

t2.start();

//等待返回結(jié)果

System.out.println(ft1.get());

}

}

// T1 任務(wù) 洗水壺,燒開水,泡茶

class T1Task implements Callable{

FutureTask ft2;

public T1Task(FutureTask ft2) {

this.ft2 = ft2;

}

@Override

public String call() throws Exception {

System.out.println("T1 洗水壺。。。。。");

TimeUnit.SECONDS.sleep(1);

System.out.println("T1 燒開水。。。。。");

TimeUnit.SECONDS.sleep(2);

// 獲取T2線程

String res = ft2.get();

System.out.println("T1 拿到茶葉。。。" + res);

System.out.println("T1 泡茶。。。。。");

return "喝茶" + res;

}

}

// T2任務(wù) 洗茶壺、洗茶杯、拿茶葉

class T2Task implements Callable{

@Override

public String call() throws Exception {

System.out.println("T2 洗茶壺。。。。。");

TimeUnit.SECONDS.sleep(1);

System.out.println("T2 洗茶杯。。。。。");

TimeUnit.SECONDS.sleep(2);

System.out.println("T2 拿茶葉。。。。。");

TimeUnit.SECONDS.sleep(1);

return "鐵觀音";

}

}

package com.msb;

import java.util.concurrent.CompletableFuture;

import java.util.concurrent.TimeUnit;

public class CompletableFutureTest {

public static void main(String[] args) {

// 任務(wù)1: 洗水壺 -> 燒開水

CompletableFuture f1 = CompletableFuture.runAsync(() -> {

System.out.println("T1 洗水壺。。。。。");

sleep(1,TimeUnit.SECONDS);

System.out.println("T1 燒開水。。。。。");

sleep(2,TimeUnit.SECONDS);

});

// 任務(wù)2: 洗茶壺 -> 洗茶杯 -> 拿茶葉

CompletableFuture f2 = CompletableFuture.supplyAsync(() -> {

System.out.println("T2 洗茶壺。。。。。");

sleep(1,TimeUnit.SECONDS);

System.out.println("T2 洗茶杯。。。。。");

sleep(2,TimeUnit.SECONDS);

System.out.println("T2 拿茶葉。。。。。");

sleep(1,TimeUnit.SECONDS);

return "鐵觀音";

});

// 任務(wù)3: 任務(wù)1和任務(wù)2完成后執(zhí)行:泡茶

CompletableFuture f3 = f1.thenCombine(f2, (__, tf) -> {

System.out.println("T1 拿到茶葉。。。。" + tf);

System.out.println("T1 泡茶");

return "喝茶:" + tf;

});

// 等待任務(wù)3的執(zhí)行結(jié)果

System.out.println(f3.join());

}

static void sleep(int t ,TimeUnit u){

try {

u.sleep(t);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

2.2 使用緩存機(jī)制

盡量使用內(nèi)容作為緩存(Map、Queue) ,比如加載的配置

2.3 合理利用串行和并行化機(jī)制

串行化使用場(chǎng)景 耗時(shí)較小,性能要求較高的場(chǎng)景 并行化使用場(chǎng)景 耗時(shí)較久,任務(wù)之間沒有依賴關(guān)系,比如遠(yuǎn)程RPC調(diào)用場(chǎng)景

3、整體架構(gòu)

柚子快報(bào)激活碼778899分享:分布式之網(wǎng)關(guān)介紹

http://yzkb.51969.com/

相關(guān)文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18794539.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄