본문 바로가기
협업툴,가상환경 정리/방법론 관련 정리

client-agent-manager 구조

by 알 수 없는 사용자 2022. 8. 5.

믿지말것 혼자 보는용이라 틀린내용 다수 있을 수 있습니다아


1. C - A - M - S 구조

2. Simple C - S 구조

 

3.  1,2 를 합친 구조 // C - S - SA -> CM <- CA - C

여까진 그림


ps >

여기서 나오는 개념은 1.Client, 2.Agent, 3.manager 그리고 4.Client, 5.Server, 6.ServerAgent 정도임

그럼 중간에 낀 5.Server 때문에 형식이 달라보이지만 사실 그렇지 않음 동일함.

4.Client, 5.Server, 6.ServerAgent  구조의 4.Client는 엄청 다수의 Client가 있는 경우인데 다수의 4.Client마다 agent를 두면 비효율 적이기 때문에 중간에서 data를 정리해주는(교통정리) 5.Server가 있는 거임.

따라서 Client도 아닌 5.Server 가 6.ServerAgent에 다뤄지는 중~-~

 

여기선 1.Client, 2.Agent, 3.Manager 구조만 정리 할 것이다.!


1.Client ( Client 내부에 다른역할의 Client 가 있을 순 있음( 상속하거나 import 한다는 의미로 ) )

가장 첫단에 Client 들이 있고 Client를 다뤄주는 Handler 들이 있을 수 도 있고 없을 수 도 있음. ( 필요할때 꺼내 쓰는 용 )

Client -(Handler필수x)- agent - manager  구조 

보통 일반적으로 우리가 사용하는 lib들이 Client인 경우가 많음

Client    ex) Message, Subscription, SubscriptionsHandler, Client

Handler ex) Error handler , Callback handler , Package handler 

한번 작성이후에는 수정할일 없게끔 짜야하고, validatation check 나 구조를 잘 짜놔야 하는 코드

 

2.Handler

Client 를 직접 바로 쓰지 않고 사용자가 원하는 모양새로 만들어주는 과정

한번 작성이후에는 수정할일 없게끔 짜야하고, validatation check 나 구조를 잘 짜놔야 하는 코드

 

3.Agent

제공하는 Client(API, lib)를 이용해서 적재적소에 코드를 구성 

보통 우리가 사용하는 lib를 쓰는 코드 부분이 Agent

Agent   ex) 사용자가 작성

Manager가 몰라도 되는 부분들을 작성해주고, Manager입장에서 최대한 간단하게 프로그램을 실행 할 수 있게끔 도와주는 부분.

callback 함수 정의 구문, publish, send, subscribe, recieve, connect, disconnect, getter, setter, run_특정client, 비지니스 로직, 방어로직, executer 종합, 특정 조건 발현 등등 코딩을 하면 Manager 단에서 여러 Agent를 거느리고 필요한타이밍에 트리거를 보내준다(polling구조)든가 해줌

 

4.Manager

우리가 만든 Agent들을 취합해서 폴링구조로 사용하면 Manager

따라서 __main__ 코드에서 Manager들을 Thread나 asyncio로 돌려주는 구조가 많음

 


 

1~4 depth 를 보고 상속과 import 를 적절히 써서 구성하면 됨

 

 

 

 

 

 

 

 

 

 

 

댓글