日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java服务端限流框架,美团大众点评服务框架Pigeon

發布時間:2023/12/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java服务端限流框架,美团大众点评服务框架Pigeon 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

服務框架Pigeon架構

? Pigeon提供jar包接入 ,線上運行在tomcat里

? Monitor-CAT ,負責調用鏈路分析、異常監控告警等

? 配置中心-Lion ,負責一些開關配置讀取

? Governor-服務治理門戶

? 一個interface定義為一個服務 ,每個服務有一個唯一標識

服務的注冊與發現

? 注冊信息包括service name、ip、port、group等

? 服務提供方初始化完成后自動注冊 ,也可以通過api或管理端注冊

? 服務調用方通過service name去發現服務

Registry (Zookeeper)

/DP/SERVER/com.dianping.iphub.IpService

10.66.1.1:5020,10.66.1.2:5020

服務的注銷

? 服務地址通過zookeeper持久節點存儲 ,避免臨時節點的不穩定

? 關閉tomcat時會調用pigeon腳本去注冊中心摘除本機服務地址

? 對于殘留的無效地址 ,有獨立的心跳服務會檢測無效的服務地址進行zookeeper刪除

? 客戶端對于無效的服務地址 ,內部也有心跳檢測機制等來保證

編程方式、序列化

? 基于Hessian序列化 ,通過netty實現自定義TCP協議格式 ,開發成本低 ,通過java interface定義服務接口

? 基于Thrift序列化 ,通過netty實現自定義TCP協議格式 ,性能更高 ,開發成本稍高 ,通過定義IDL或annotation方式定義服務接口 ,

更方便接入其他語言 ,thrift會有一些制如方法不支持重載、struct不支持繼承等

調用模式

? Sync ,同步等待返回調用

? Future ,可實現并行發出多個請求 ,總耗時是最慢的請求的執行時長 ,推薦方式

? Callback ,發出結果不等待返回 ,結果回調 ,完全異步化

? Oneway ,無需返回結果

客戶端心跳

? 心跳線程客戶端發起 ,定期發送 ,服務端響應 ,連續5次不成功則在本地路由緩存里摘除該服務端節點 ,摘除后下次嘗試重連

客戶端負載均衡

? 多種負載均衡策略 ,默認是自適應策略 ,客戶端會計算發往每個服務端節點的在途請求數 ,新的請求會優先選擇在途請求數最小的節點發送

? 預熱控制 ,針對服務端某個剛啟動的節點 ,客戶端按從慢到快的頻率 ,將請求逐步發往這個節點 ,防止服務端剛啟動的節點大量請求進來導致大量超時

? 也可自定義負載均衡策略

服務限流

? 可以在服務端對某一個服務接口的某一個方法 ,針對不同的調用方應用的請求進行流量QPS限制 ,超出閥值后調用端會收到服務拒絕異常 ,未來會在調用端進行限流

? 服務端會對任意接口的請求所占用的線程數進行控制 ,防止單個接口某個方法用盡線程池所有可用線程

服務隔離

? 服務端默認會監控每個接口的超時情況 ,超時多的接口請求會自動路由到獨立的慢線程池處理 ,如果該接口恢復正常 ,則會回到正常共享線程池處理

? 也可以為某些接口方法配置獨立的線程池 ,剩余的使用公共池

服務監控分析與告警

? 通過監控系統CAT (已開源 )分析調用鏈路 ,包括調用量、TP耗時、異常、請求及響應大小、區間耗時明細、QPS等

項目地址:https://github.com/dianping/pigeon

采用的監控系統:Central Application Tracking

項目地址:https://github.com/dianping/cat

監控系統環境搭建:http://www.cnblogs.com/softidea/p/5719331.html

總結

以上是生活随笔為你收集整理的java服务端限流框架,美团大众点评服务框架Pigeon的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。