<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 六、Lars-Load Balance Agent負載代理 ## 1) 簡介 ? 一個服務稱為一個模塊,一個模塊由modid+cmdid來標識 modid+cmdid的組合表示一個遠程服務,這個遠程服務一般部署在多個節點上 LB Agent以UDP方式為業務方提供:1、節點獲取服務;2、節點調用結果上報服務 ### 1.1 業務1-節點獲取服務: ? 業務方每次要向遠程服務發送消息時,先利用modid+cmdid去向LB Agent獲取一個可用節點,然后向該節點發送消息,完成一次遠程調用;具體獲取modid+cmdid下的哪個節點是由LB Agent負責的 ### 1.2 業務2-節點調用結果上報服務 ? 對LB Agent節點的一次遠程調用后,調用結果會匯報給LB Agent,以便LB Agent根據自身的LB算法來感知遠程服務節點的狀態是空閑還是過載,進而控制節點獲取時的節點調度. ![](https://img.kancloud.cn/54/84/54840375c2d793a337b4a1530f685a08_1172x571.png) LB Agent擁有5個線程,一個LB算法: UDP Server服務,并運行LB算法,對業務提供節點獲取和節點調用結果上報服務;為了增大系統吞吐量,使用3個UDP Server服務互相獨立運行LB算法:modid+cmdid % 3 = i的那些模塊的服務與調度,由第i+1個UDP Server線程負責 Dns Service Client:是dnsserver的客戶端線程,負責根據需要,向dnsserver獲取一個模塊的節點集合(或稱為獲取路由);UDP Server會按需向此線程的MQ寫入獲取路由請求,DSS Client將MQ到來的請求轉發到dnsserver,之后將dnsserver返回的路由信息更新到對應的UDP Server線程維護的路由信息中 Report Service Client:是reporter的客戶端線程,負責將每個模塊下所有節點在一段時間內的調用結果、過載情況上報到reporter Service端,便于觀察情況、做報警;本身消費MQ數據,UDP Server會按需向MQ寫入上報狀態請求。 ## 2) 構建Lars-Agent項目 ### 2.1 構建目錄結構 依次創建如下目錄: > Lars/lars_loadbalance_agent ```bash lars_loadbalance_agent/ ├── bin/ ├── conf/ │?? └── lars_lb_agent.conf ├── include/ ├── Makefile └── src/ ``` 其中Makefile如下: ```makefile TARGET= bin/lars_lb_agent CXX=g++ CFLAGS=-g -O2 -Wall -Wno-deprecated BASE=../base BASE_H=$(BASE)/include PROTO = $(BASE)/proto PROTO_H = $(BASE)/proto LARS_REACTOR=../lars_reactor LARS_REACTOR_H =$(LARS_REACTOR)/include LARS_REACTOR_LIB=$(LARS_REACTOR)/lib -llreactor MYSQL=$(BASE)/mysql-connector-c MYSQL_H=$(MYSQL)/include MYSQL_LIB=$(MYSQL)/lib/libmysqlclient.a OTHER_LIB = -lpthread -ldl -lprotobuf SRC= ./src INC= -I./include -I$(BASE_H) -I$(LARS_REACTOR_H) -I$(MYSQL_H) -I$(PROTO_H) LIB= $(MYSQL_LIB) -L$(LARS_REACTOR_LIB) $(OTHER_LIB) OBJS = $(addsuffix .o, $(basename $(wildcard $(SRC)/*.cpp))) OBJS += $(PROTO)/lars.pb.o $(TARGET): $(OBJS) mkdir -p bin $(CXX) $(CFLAGS) -o $(TARGET) $(OBJS) $(INC) $(LIB) %.o: %.cpp $(CXX) $(CFLAGS) -c -o $@ $< $(INC) .PHONY: clean clean: -rm -f src/*.o $(PROTO)/lars.pb.o $(TARGET) ``` ? 實際上reporter、dns相似。 > conf/lars_lb_agent.conf ```ini [reporter] ip = 127.0.0.1 port = 7779 [dnsserver] ip = 127.0.0.1 port = 7778 ``` ? 目前的基本配置文件,因為loadbalance_agent是充當reporter和dnsserver的客戶端,所以需要知道對應的reporter和dnsserver的ip和port信息。 --- ### 關于作者: 作者:`Aceld(劉丹冰)` mail: [danbing.at@gmail.com](mailto:danbing.at@gmail.com) github: [https://github.com/aceld](https://github.com/aceld) 原創書籍: [http://www.hmoore.net/@aceld](http://www.hmoore.net/@aceld) ![](https://img.kancloud.cn/b0/d1/b0d11a21ba62e96aef1c11d5bfff2cf8_227x227.jpg) >**原創聲明:未經作者允許請勿轉載, 如果轉載請注明出處**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看