• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Netflix suro begins
 

Netflix suro begins

on

  • 490 views

팀 내 발표 자료.

팀 내 발표 자료.
새벽에 급하게 만드느라 형편없지만,
버리긴 아까워서;;;

Statistics

Views

Total Views
490
Views on SlideShare
490
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Netflix suro begins Netflix suro begins Presentation Transcript

    • Netflix
    •   
    •    SURO
    •   Begins
    •    springloops@gmail.com netflix suro 에 대해서 소개하도록 하겠습니다.
    • SURO
    •   ? • Apache
    •   Chukwa
    •   를
    •   기반으로
    •   구현
    •    • Netflix’s
    •   distributed
    •   Data
    •   Pipeline
    •   service
    •    • 많은
    •   데이터
    •   소스를
    •   처리하는데
    •   보다
    •   쉬운
    •   구성과
    •   운영에
    •   초점을
    •   맞춰
    •   디자인된
    • SURO
    •   ? • Apache
    •   Chukwa
    •   를
    •   기반으로
    •   구현
    •    • Netflix’s
    •   distributed
    •   Data
    •   Pipeline
    •   service
    •    • 많은
    •   데이터
    •   소스에
    •   대해
    •   보다
    •   쉬운
    •   구성과
    •   운영에
    •   초점을
    •   맞춰
    •   디자인된 그냥... 로그 수집기
    • 특징 • SURO
    •   Client
    •   is
    •   Not
    •   an
    •   Agent
    •   !
    •    • Static
    •   /
    •   Dynamic
    •   Client-Side
    •   Load
    •   Balancing
    •   (Netflix
    •   OSS
    •   eureka)
    •    • Dynamic
    •   Configuration
    •   without
    •   server
    •   restart
    •   (Netflix
    •   OSS
    •   Archaius)
    •    • 메시지에
    •   포함된
    •   routingKey
    •   로
    •   목적지
    •   결정
    •   (sink)
    •    • Message
    •   Filtering,
    •   multiple
    •   destinations
    •    • 수평적
    •   확장의
    •   분산
    •   시스템
    •    • 사용자
    •   정의
    •   Serde를
    •   통한
    •   임의의
    •   데이터
    •   형식을
    •   지원
    •    • async,
    •   sync
    •   전송
    • 구성 • Collector
    •   Server • Producer
    •   Client • Status
    •   Server
    •    • Thrift
    •   Server
    •    • Suro
    •   client
    •   api
    •    • Message
    •   Process
    •   Queue
    •    • Suro
    •   log4j
    •   appender
    •    • Message
    •   Router
    •    • Suro
    •   log4j
    •   formatter • Sink
    •   plugin
    • SURO-Server 1. 클라이언트로 부터 메시지 셋을 요청받음 2. Thrift Server를 통해 데이터를 전달 1. Non-blocking (Java NIO) 멀티 쓰레드 서버 구현 2. THsHAServer : 1. TNonblockingServerTransport 를 상속받아 구현되었음 2. Half-sync/Half-async 방식의 스레드 관리함. 1. 쓰레드 풀 구성하는 방법 2. IO : 비동기, 데이터 처리 : 동기, 둘 사이에 큐 존재하는 방식 성능에 좋다. 3. 메시지 셋 프로세스 큐에 등록 1. memory queue 2. file-backed queue : 첫번째로 파일에 쓰기 때문에 데이터 유실이 없음 4. 메시지 라우터에서 메시지를 가져와 1. routingKey와 Filtering Rule에 따라 Sink에 메시지 전달 2. 하나의 router에 두개 이상의 Sink 가 연결된 경우 한쪽에만 데이터가 전달 될 가능성이 있어 보임- 좀 더 분석 필요) 5. Sink : 데이터의 목적지 1. 각 Sink는 메시지 큐를 가지고 있음. 2. 현재 Opensource 로 공개된 Sink 1. localFileSink
    • SURO-Server
    •   Routing
    •   Map 데이터의
    •   목적지를
    •   결정
    •    where
    •   
    •    filter 1. 기본적으로 routingKey를 통해 sink가 결정 되며, 2. filter 절에 의해 필터링 된다. 3. type은 regex와 x-path를 지원 4. routingKey 에 대한 filtering은 regex 만 제공
    • SURO-Server
    •   Sink.json {! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! } 1. Sink.json 작성법 소개 2. filter 1. regex 2. x-path 3. 로테이트 시간 iso-8601 , ms "default": {! ! "type": "local",! ! "outputDir": "/tmp/suroserver/default",! ! "writer": {! ! ! "type": "text"! ! }! },! "textFile": {! ! "type": "local",! ! "outputDir": "/tmp/suroserver/textFile_sink",! ! "writer": {! ! ! "type": "text"! ! },! ! "rotationPeriod": "PT1h"! },! "sequenceFile": {! ! "type": "local",! ! "outputDir": "/tmp/suroserver/sequenceFile_sink",! ! "writer": {! ! ! "type": "sequence"! ! },! ! "rotationPeriod": "PT1m"! },! "kafkaTest": {! ! "type": "Kafka",! ! "metadata.broker.list": "localhost:9092",! ! "request.required.acks": 1,! ! "client.id": "kafkaTest"! }! default
    •   설정은
    •   반드시
    •   등록해야함
    •    없으면
    •   Start
    •   up
    •   시
    •   오류
    •   발생
    •    ! routing
    •   map
    •   에서
    •   해당
    •   하는
    •   것이
    •   
    •    없을
    •   경우
    •   default로
    •   전송
    • SURO-STATUS
    •   Server • 
    •   Suro
    •   Monitoring
    •   Server
    •    • http://suro-server:7103/healthcheck
    •    • response
    •   =>
    •   SuroServer
    •   -
    •   Ok
    •   ㅠㅠ
    •    • http://suro-server:7103/sinkstat
    •    • response
    •   =>
    •   Sink
    •   별
    •   데이터
    •   처리
    •   정보
    •   출력
    • SURO-Client • synchronous
    •   /
    •   asynchronous
    •   전송
    •   방법
    •   제공
    •    • asynchronous
    •   타입의
    •   경우
    •   memory
    •   queue/
    •   file-backed
    •   queue
    •   제공
    •    • memory
    •   queue
    •   25%
    •   처리량
    •   높음
    •   
    •    • bigqueue
    •   사용
    •   (https://github.com/bulldog2011/bigqueue)
    •    • Singleton
    •   Connection
    •   pool
    •   제공 1. sync : 동기적으로 하나의 메시지를 보내고 ACK 가 올때까지 블락됨 2. async : 1. 내부 queue에 메시지 등록 2. queue에서 메시지를 꺼내서 전송 3. batch process 4. batch size 설정 가능 5. 메시지에 대한 최대 대기시간 설정 가능 6. batch size 에 상관 없이 최대 대기 시간이 경과한 경우 전송. 3. Connection 1. Thrift client 는 NOT thread safe, 따라서 Sender의 수가 suro-server 보다 클 경우 여분의 concoction을 만든다.
    • Netflix
    •   OSS
    •   Eureka 1. 동적 load balancing을 위해 사용함 2. netflix OpenSource Software 중 하나 3. SURO의 동적 Load Balancing을 위해 사용됨. 4. Rest based service 5. middle tier 인스턴스 검색에 사용 6. 장애 복구 및 load balance 용도로 주로 사용됨 7. 기능 : 1. load balancing 2. deployment 3. automation 4. data storage 5. caching 8. Eureka-server / Eureka-client 로 구성 됨 1. JavaBased 2. Round-Robin load balancing 제공
    • Netflix
    •   OSS
    •   Archaius • 구성
    •   관리
    •   라이브러리
    •    • 여러
    •   저장소로
    •   부터
    •   동적
    •   구성
    •   변경
    •   기능
    •   제공 1. 2. 동적 설정 변경을 위해 사용.
    • SURO
    •   Dynamic
    •   Configuration vm
    •   option
    •   설정
    •    ! -Darchaius.dynamicPropertyFactory.registerConfigWithJMX=true -Dcom.sun.management.jmxremote.port=10403 -Dcom.sun.management.jmxre.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=localhost 1. 사용법 소개 2. vm 옵션 등록 3. jconsole 실행 4. 값 변경 5.
    • SURO
    •   Dynamic
    •   Configuration addProperty
    •    ! routing
    •   map
    •   
    •    key
    •   :
    •   SuroServer.routingMap
    •    Sink
    •   config
    •    key
    •   :
    •   SuroServer.sinkConfig
    • Demo • 데이터
    •   흐름
    •   확인
    •    • /sinkstat
    •    • hdfs
    •    • kafka
    •    • 동적
    •   routingMap
    •   /
    •   Sink
    •   확인 1. hdfs 비우고.. 1. ~download/hadoop/bin/hadoop fs -rmr /tmp/suroserver 2. suro server 실행 3. hdfs web ui 로 디스크 생성된것 확인 4. 클라이언트 실행 5. 카프카 토픽 목록 1. ~/download/kafka_2.8.0-0.8.0/bin/kafak-list-topic.sh —zookeeper localhost:2181 6. 카프카 콘솔 컨슈머 1. ~/download/kafka_2.8.0-0.8.0/bin/kafka-console-consumer.sh —zookeeper localhost:2181 —topic kafkaTest from-beginning 7. /sinkstat 확인 8. 동적 설정 확인 1.
    • Reference • https://github.com/Netflix/suro
    •    • https://github.com/Netflix/suro/wiki
    •    • https://groups.google.com/forum/#!forum/suro-users
    •    • http://techblog.netflix.com/2013/12/announcing-suro-backbone-of- netflixs.html
    •    • https://github.com/Netflix/archaius/wiki
    •    • https://github.com/Netflix/eureka/wiki