Netflix suro begins
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Netflix suro begins

on

  • 861 views

팀 내 발표 자료.

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

Statistics

Views

Total Views
861
Views on SlideShare
861
Embed Views
0

Actions

Likes
0
Downloads
11
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 Presentation Transcript

  • 1. Netflix
  • 2.   
  • 3.    SURO
  • 4.   Begins
  • 5.    springloops@gmail.com netflix suro 에 대해서 소개하도록 하겠습니다.
  • 6. SURO
  • 7.   ? • Apache
  • 8.   Chukwa
  • 9.   를
  • 10.   기반으로
  • 11.   구현
  • 12.    • Netflix’s
  • 13.   distributed
  • 14.   Data
  • 15.   Pipeline
  • 16.   service
  • 17.    • 많은
  • 18.   데이터
  • 19.   소스를
  • 20.   처리하는데
  • 21.   보다
  • 22.   쉬운
  • 23.   구성과
  • 24.   운영에
  • 25.   초점을
  • 26.   맞춰
  • 27.   디자인된
  • 28. SURO
  • 29.   ? • Apache
  • 30.   Chukwa
  • 31.   를
  • 32.   기반으로
  • 33.   구현
  • 34.    • Netflix’s
  • 35.   distributed
  • 36.   Data
  • 37.   Pipeline
  • 38.   service
  • 39.    • 많은
  • 40.   데이터
  • 41.   소스에
  • 42.   대해
  • 43.   보다
  • 44.   쉬운
  • 45.   구성과
  • 46.   운영에
  • 47.   초점을
  • 48.   맞춰
  • 49.   디자인된 그냥... 로그 수집기
  • 50. 특징 • SURO
  • 51.   Client
  • 52.   is
  • 53.   Not
  • 54.   an
  • 55.   Agent
  • 56.   !
  • 57.    • Static
  • 58.   /
  • 59.   Dynamic
  • 60.   Client-Side
  • 61.   Load
  • 62.   Balancing
  • 63.   (Netflix
  • 64.   OSS
  • 65.   eureka)
  • 66.    • Dynamic
  • 67.   Configuration
  • 68.   without
  • 69.   server
  • 70.   restart
  • 71.   (Netflix
  • 72.   OSS
  • 73.   Archaius)
  • 74.    • 메시지에
  • 75.   포함된
  • 76.   routingKey
  • 77.   로
  • 78.   목적지
  • 79.   결정
  • 80.   (sink)
  • 81.    • Message
  • 82.   Filtering,
  • 83.   multiple
  • 84.   destinations
  • 85.    • 수평적
  • 86.   확장의
  • 87.   분산
  • 88.   시스템
  • 89.    • 사용자
  • 90.   정의
  • 91.   Serde를
  • 92.   통한
  • 93.   임의의
  • 94.   데이터
  • 95.   형식을
  • 96.   지원
  • 97.    • async,
  • 98.   sync
  • 99.   전송
  • 100. 구성 • Collector
  • 101.   Server • Producer
  • 102.   Client • Status
  • 103.   Server
  • 104.    • Thrift
  • 105.   Server
  • 106.    • Suro
  • 107.   client
  • 108.   api
  • 109.    • Message
  • 110.   Process
  • 111.   Queue
  • 112.    • Suro
  • 113.   log4j
  • 114.   appender
  • 115.    • Message
  • 116.   Router
  • 117.    • Suro
  • 118.   log4j
  • 119.   formatter • Sink
  • 120.   plugin
  • 121. 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
  • 122. SURO-Server
  • 123.   Routing
  • 124.   Map 데이터의
  • 125.   목적지를
  • 126.   결정
  • 127.    where
  • 128.   
  • 129.    filter 1. 기본적으로 routingKey를 통해 sink가 결정 되며, 2. filter 절에 의해 필터링 된다. 3. type은 regex와 x-path를 지원 4. routingKey 에 대한 filtering은 regex 만 제공
  • 130. SURO-Server
  • 131.   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
  • 132.   설정은
  • 133.   반드시
  • 134.   등록해야함
  • 135.    없으면
  • 136.   Start
  • 137.   up
  • 138.   시
  • 139.   오류
  • 140.   발생
  • 141.    ! routing
  • 142.   map
  • 143.   에서
  • 144.   해당
  • 145.   하는
  • 146.   것이
  • 147.   
  • 148.    없을
  • 149.   경우
  • 150.   default로
  • 151.   전송
  • 152. SURO-STATUS
  • 153.   Server • 
  • 154.   Suro
  • 155.   Monitoring
  • 156.   Server
  • 157.    • http://suro-server:7103/healthcheck
  • 158.    • response
  • 159.   =>
  • 160.   SuroServer
  • 161.   -
  • 162.   Ok
  • 163.   ㅠㅠ
  • 164.    • http://suro-server:7103/sinkstat
  • 165.    • response
  • 166.   =>
  • 167.   Sink
  • 168.   별
  • 169.   데이터
  • 170.   처리
  • 171.   정보
  • 172.   출력
  • 173. SURO-Client • synchronous
  • 174.   /
  • 175.   asynchronous
  • 176.   전송
  • 177.   방법
  • 178.   제공
  • 179.    • asynchronous
  • 180.   타입의
  • 181.   경우
  • 182.   memory
  • 183.   queue/
  • 184.   file-backed
  • 185.   queue
  • 186.   제공
  • 187.    • memory
  • 188.   queue
  • 189.   25%
  • 190.   처리량
  • 191.   높음
  • 192.   
  • 193.    • bigqueue
  • 194.   사용
  • 195.   (https://github.com/bulldog2011/bigqueue)
  • 196.    • Singleton
  • 197.   Connection
  • 198.   pool
  • 199.   제공 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을 만든다.
  • 200. Netflix
  • 201.   OSS
  • 202.   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 제공
  • 203. Netflix
  • 204.   OSS
  • 205.   Archaius • 구성
  • 206.   관리
  • 207.   라이브러리
  • 208.    • 여러
  • 209.   저장소로
  • 210.   부터
  • 211.   동적
  • 212.   구성
  • 213.   변경
  • 214.   기능
  • 215.   제공 1. 2. 동적 설정 변경을 위해 사용.
  • 216. SURO
  • 217.   Dynamic
  • 218.   Configuration vm
  • 219.   option
  • 220.   설정
  • 221.    ! -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.
  • 222. SURO
  • 223.   Dynamic
  • 224.   Configuration addProperty
  • 225.    ! routing
  • 226.   map
  • 227.   
  • 228.    key
  • 229.   :
  • 230.   SuroServer.routingMap
  • 231.    Sink
  • 232.   config
  • 233.    key
  • 234.   :
  • 235.   SuroServer.sinkConfig
  • 236. Demo • 데이터
  • 237.   흐름
  • 238.   확인
  • 239.    • /sinkstat
  • 240.    • hdfs
  • 241.    • kafka
  • 242.    • 동적
  • 243.   routingMap
  • 244.   /
  • 245.   Sink
  • 246.   확인 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.
  • 247. Reference • https://github.com/Netflix/suro
  • 248.    • https://github.com/Netflix/suro/wiki
  • 249.    • https://groups.google.com/forum/#!forum/suro-users
  • 250.    • http://techblog.netflix.com/2013/12/announcing-suro-backbone-of- netflixs.html
  • 251.    • https://github.com/Netflix/archaius/wiki
  • 252.    • https://github.com/Netflix/eureka/wiki