Page History
Info |
---|
RestAPI는 단순하고 작성하기 쉽습니다직관적입니다. 하지만 미들웨어 고성능통신 또는 미들웨어 분산 마이크로 서비스 구축시 RestAPI 로만은 분명 성능적한계, 구현적 고성능 Push메시지를 처리하기에 성능적으로 한계가 있습니다. 우리의 목표는 다양한 메시지 모델처리를 위해 n개의 서비스를 뛰우는것이 아닌 1개의 서비스로으로도 가능하고 , 필요하면 확장하는 전략을 선택할것입니다. 그것을 위해 앞으로 활용이될 메시지 선택가능한 전송모델 몇개를 간략하게 소개합니다. |
연결 방식에의한 분류
...
RestFul(폴링방식)
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
단순하게 초당 천개의 메시지를 전송하는 시나리오에서, 다수의 커넥션을 맺는데 값비싼 리소스를사용하게 됩니다.
WebSocket(Push방식)
Rest vs Websocket 수행시간
Rest의 수행속도가 메시지가 증가함에 따라, 기울기가 급격해지는 성능저하를
...
웹소켓 VS 일반스트림 : http://blog.lightstreamer.com/2013/05/benchmarking-socketio-vs-lightstreamer.html
Server/Client VS PeerToPeer
Client/Sever방식은 Client가 중앙관리를 해주는 서버에 항상 연결을 유지하여 중앙 서버의 통제를받습니다.
...
메시지 처리 모델이며 AKKA의 목표는 이 사용을 단순화하는데 있습니다.
채널에의한 분류
...
Point To Point
송신자의 메시지가 특정 수신자에게 전달되는것으로 대부분 메시지전송은 이 채널로 충분하며
...
하지만 애플리케이션이 수행되는 동안, 채널이 다양화되고 수신자들이 자유롭게 채널을 바꾸고자할때는
PUS/SUB을 활용할수가 있습니다.
PUB/SUB
신문의 발행/구독모델과 유사하며 실제로 활용도가 높기때문에 여러 통신가능한 라이브러리 혹은 툴킷에서 기본으로 도입되었습니다.
...
Info |
---|
PUB/SUB 모델은 심플하기때문에, 직접 구현도 가능합니다. 아래는 TopicEventBus 라는 객체를 자바모델 참고하여 실제로 작성하고 사용해본 샘플입니다. (이개념을 쉽게 설명하기위해 직접 개발) |
다양한 언어의 시청자가 존재하는 다국어 방송 메시지 모듈
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
//Create Act Act System for Testing ActorSystem system = TopicEventBus.inItSystem("TestTopic"); //ActorSystem Init //Create user TopicEventBus.CreateActor("A"); TopicEventBus.CreateActor("B"); TopicEventBus.CreateActor("C"); //A user wants to receive News A in English TopicEventBus.Subscribe("A", "newsA", "en").Wait(); //User B wants to receive news A in Korean TopicEventBus.Subscribe("B", "newsA", "kr").Wait(); //Users of c want to receive News B in English TopicEventBus.Subscribe("C", "newsB", "en").Wait(); //Server real-time messages (server sprays news regardless of user) TopicEventBus.Publish("newsA", "Hi...here news A", "en"); TopicEventBus.Publish("newsA", "여기에 새로운 뉴스가 있습니다.", "kr"); TopicEventBus.Publish("newsB", "Hi...here news B", "en"); Result: create actor name:A create actor name:B create actor name:C Subscribe actor name:A to newsA Subscribe actor name:B to newsA A FirstSet LangCode en from newsA B FirstSet LangCode kr from newsA Subscribe actor name:C to newsB C FirstSet LangCode en from newsB Publish Topic:newsA msg:Hi...here news A Publish Topic:newsA msg:여기에 새로운 뉴스가 있습니다. A가 뉴스를 받음 Hi...here news A from newsA Publish Topic:newsB msg:Hi...here news B C가 뉴스를 받음 Hi...here news B from newsB B가 뉴스를 받음 여기에 새로운 뉴스가 있습니다. from newsA |
저장소위치
http://git.webnori.com/projects/AKKA/repos/topiceventbus/browse
메시지 처리및 전송 최종목표
Info |
---|
우리의 응답이 좋은 메시지의 목표는 출발한 메시지 type상관없이 ( rest / websocket ) 출발하여 미들웨어에서 가장 효율적인 처리를 위해 어떠한 라우터및 클러스터 방식을 선택할것이며 ( client to server ,peertopeer , pubsub) 중앙 Db의 호출을 최소화 하여 응답을 할것입니다. |
...