亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

簡單的油門控制在行駛

簡單的油門控制在行駛

Go
桃花長相依 2022-08-24 15:44:03
如何創建簡單的限制控件以停止 API 接收多個請求。還是有效地獲得DDOS?因為有時您可能有一個正向 API 將所有連接傳遞到您的服務。如前所述,還有其他一些解決方案可以將節流構建到實際連接中,但是確實使實際上的簡單解決方案變得過于復雜,查看推薦的解決方案,它們幾乎通過將id添加到地圖來執行下面建議的功能。對于那些仍在學習的人來說,這不是一個糟糕的選擇,但是由于go是如此之好,你可以嘗試簡單,然后在你開始更好地理解機制時改進成更好的解決方案。雖然這被標記為推廣某些書籍或其他東西,但這只是我試圖幫助他人。如果這是壞事,那么Ill就保持不好。:D
查看完整描述

1 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

下面是一些簡單的限制控制代碼,將其用作具有所述服務的唯一標識符(在本例中為 IP)和要等待的時間的 IF 調用。正如您通過代碼所看到的,您可以將秒更改為分鐘或毫秒。你最好使用像cloudflare這樣的服務,但作為最后一個選項,把它放在你的API中,并在處理程序代碼周圍放置一個IF語句,你可以限制對連接的控制。這是為了保持簡單,我相信還有其他優雅的解決方案出來,我的愚蠢嘗試可能會被嘲笑,但我相信有人會從中吸取教訓,如果它們有意義,改進建議也會包括在內。


/******************************************************************************

 *      _   _               _   _   _               _ _

 *     | | | |             | | | | | |        /\   | | |

 *     | |_| |__  _ __ ___ | |_| |_| | ___   /  \  | | | _____      __

 *     | __| '_ \| '__/ _ \| __| __| |/ _ \ / /\ \ | | |/ _ \ \ /\ / /

 *     | |_| | | | | | (_) | |_| |_| |  __// ____ \| | | (_) \ V  V /

 *      \__|_| |_|_|  \___/ \__|\__|_|\___/_/    \_\_|_|\___/ \_/\_/

 * ----------------------------------------------------------------------------

 * This function will temp store the value in a map and then remove it, it will

 * return true or false if the item is in the map, Now sets delay on second response

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

var throttle = make(map[string]bool)

func throttleAllow(ip string, timeout int) (retVal bool) {

    if throttle[ip] == true {

        fmt.Println("WARM","-=Throttle=-To frequent calls from:",ip)

        time.Sleep(time.Duration(timeout)*time.Second) //Random next cycle.

        retVal = true  // false will result is receiging to frequent message

    } else {

        throttle[ip] = true

        go func(){

            time.Sleep(time.Duration(timeout)*time.Second) //Random next cycle.

            delete(throttle, ip)

        }()

        retVal = true

    }

    return

}


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號