네티로 아웃바운드 클라이언트를 구현하려 합니다

325 views
Skip to first unread message

박진우

unread,
Jul 25, 2017, 11:01:47 PM7/25/17
to Netty Korean User Group
안녕하세요.

그룹 가입과 동시에 질문을 올리네요

네티 그리고 그룹 관계자분들께 미리 먼저 감사드립니다



지금 네티를 이용해 서버와 클라이언트를 구현해 보려 하는데요

클라이언트에서 서버로 아웃바운드를 구현하고 싶습니다.

현재 아래과 같은 구조로 구현하고 테스트해 보았는데요. 검색을 해보니 대부분 인바운드핸들러에서 라이트하는 코드가 많더라구요


문제는 멀티스레드 들이 하나의 핸들러에 라이트하는게 맞는건가 싶어서 질문드립니다

지금은 단순히 텍스트를 네티 바이트버퍼에 작성해 라이트하고 있는데요. 스레드가 거의 동시에 라이트를 해버리면 다른 스레드에서 보낸 데이터도 서버에서 한꺼번에 받는 경우가 있더라구요

라이트하는 부분에서 동기화를 해도 안되구요. 데이터를 보내고 받는 곳에서 데이터 처음과 끝을 구분 하는 별도의 구현이 들어가는게 맞는지,

아웃바운드 핸들러를 구현해도 어차피 라이트 하는 부분은 달라질게 없어보이는데, 다른 좋은 구현 방법이 있을까요?

네트워크 프로그래밍 기본 지식도 부족한거 같고, 너무 급하게 하다 보니 놓친게 있는게 아닌가 싶기도 하네요 ㅜㅜ

도움 부탁드립니다 감사합니다

박진우

unread,
Jul 26, 2017, 5:49:17 AM7/26/17
to Netty Korean User Group
서버에서 DelimiterBasedFrameDecoder 와 같이 핸들러를 파이프라인에 추가해 데이터 처리를 하고
클아이언트에서는 위와 같은 구조로 context, 그러니깐 결국 하나의 channel에 write and flush 하는게 일반적이 방법이 맞나요? 아니면 더 효율적인 구현 방법이 있을까요?ㅜㅜ
감사합니다

김남철

unread,
Jul 28, 2017, 5:26:35 AM7/28/17
to nett...@googlegroups.com
음 질문을 제가 제대로 이해했는지 모르겠는데요..

일단 여러대의 클라이언트가 접속하면 여러개의 파이프 라인이 생기는것입니다.

이벤트 루프라는 개념이라 물론 100대가 접속한다고 100개가 생기는건 아니고 돌려쓰는 구조입니다만.

올려주신 그림처럼 하나의 쓰레드에서 처리되는 방식은 아닙니다.



2017년 7월 26일 오후 6:49, 박진우 <pjw1...@gmail.com>님이 작성:
서버에서 DelimiterBasedFrameDecoder 와 같이 핸들러를 파이프라인에 추가해 데이터 처리를 하고
클아이언트에서는 위와 같은 구조로 context, 그러니깐 결국 하나의 channel에 write and flush 하는게 일반적이 방법이 맞나요? 아니면 더 효율적인 구현 방법이 있을까요?ㅜㅜ
감사합니다

--
이 메일은 Google 그룹스 'Netty Korean User Group' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 netty-ko+unsubscribe@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/netty-ko/8a3835b3-2456-4322-aa11-829388bad83b%40googlegroups.com을(를) 방문하세요.

더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

kris jeong

unread,
Jul 28, 2017, 11:00:10 PM7/28/17
to nett...@googlegroups.com
안녕하세요.

나머지 부분은 김남철님이 잘 설명해 주셨네요.

부가적으로 네티의 스레드에 관해 설명 드리자면 

100개의 클라이언트가 연결되었을 때 생성되는 파이프라인은 100개 입니다.

그 100개의 파이프라인에서 발생한 이벤트들을 부트스트랩에서 설정한 워커 스레드중에서 유휴 스레드가 처리합니다.

그러므로 질문하신 스레드 구현방법은 정상적인 구현입니다.


2017년 7월 28일 오후 6:26, 김남철 <kmjy...@gmail.com>님이 작성:

박진우

unread,
Aug 1, 2017, 8:11:43 PM8/1/17
to Netty Korean User Group
두 분 답변 감사드립니다
Reply all
Reply to author
Forward
0 new messages