distributed tracing system · 2017. 10. 31. · mysql1 newthread • tracesegment -2 1....

15
DISTRIBUTED TRACING SYSTEM 吴晟 @wu-sheng, GitHub HTTPS://GITHUB.COM/OPENSKYWALKING/SKYWALKING Huawei OpenTracing & OTIAB Member Trace Context Member Oct. 2017

Upload: others

Post on 04-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

DISTRIBUTEDTRACINGSYSTEM吴晟

@wu-sheng, GitHub

HTTPS://GITHUB.COM/OPENSKYWALKING/SKYWALKING

Huawei

OpenTracing&OTIABMember

Trace Context Member

Oct. 2017

Page 2: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

WHOAMI?

GitHub: https://github.com/wu-sheng

Personal Homepage: https://wu-sheng.github.io/me/

• PrincipleEngineer / Tracing Expert, 2012Labs,Huawei

• SkywalkingAPMfounder, OpenSkywalking AdminandPMCmember

• OpenTracingMember

• OTIAB(OpenTracingIndustrialAdvisory Board)Member

• TraceContext Specification Member

• OpenTracingevangelistandcontributor

• 2017GSoC (GoogleSummerofCode)Mentor forCNCF(CloudNativeComputing Foundation)

Page 3: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

METRICS,TRACING, LOGGING

Page 4: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

WHATISDISTRIBUTEDTRACING?

ServiceA

ServiceB

ServiceC

Redis

MySQL1

ServiceE

MySQL2

Page 5: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

WHATISOPENTRACING?

• Itisaspecification• Notadatastructure• Justalayer,anAPIsSuit.• Benefit for manual instrumentation

• Supporting OpenTracing = Supporting someAPI libraries.

• In Java, the top and almost all commercialAPMproducts based on autoinstrumentation.• Just do the manual instrumentation in certaincircumstances.

Page 6: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

SKYWALKING• DistributedTracingSystem• Morethanadistributedtracingsystem,anApplicationPerformanceMonitoringSystem

• Collect JVMmetric

• ApplicationTopologicalDiscovery• ServiceDependencyDiscovery

• CollectServiceMetric• Alerting(TODOListfeature),providedsoon

• Provide highperformanceJavaAuto-InstrumentationAgent.Cost10%CPU in5000tps.• Support logging integration. Ifyouwantan ELK-stylesystemworkingwithSkywalking.• Supportmultistorageimplementation.H2,ElasticSearchfornow;dangdang providesSharding-JDBCsoon.• 30+librariessupported.• GitHub:https://github.com/OpenSkywalking/skywalking

• 1500+stars

• 开源中国GVP项目• CNCF,CloudNativeComputingFoundation,OpenTracingSupportedTracer• TraceContext Specification member

Page 7: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

SKYWALKINGECO-SYSTEM

ProjectManagementCommittee• 吴晟 Huawei• 张鑫• 彭勇升 R&Ddirector,Tydic

CommitterTeam• 柏杨 SeniorEngineer, AlibabaGroup.• 高洪涛 SeniorArchitect,dangdang.com

15+ Contributors

Partners

Page 8: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

SKYWALKING 3.2.3ROADMAP

Page 9: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

SKYWALKING TRACING CORE CONCEPT

• TraceSegment-1

1. Create entry span

2. Extract (done, but got nothing)

3. Create exit span

4. Inject

5. Stop exit span

6. Stop entry span

ServiceA

ServiceB

ServiceC

MySQL1

New Thread

• TraceSegment-2

1. Create entry span

2. Extract ContextCarrier

3. Create Exit/Inject/Stop Exit

4. [Async Module]

1. Create Local span

2. Capture Snapshot

3. [New Thread]Continued Snapshot

4. Create Local span

5. Stop entry span

• TraceSegment-3

1. Create entry span

2. Extract ContextCarrier

3. Create exit span

4. Stop exit span

5. Stop entry span

Page 10: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

DEMONSTRATION• Skywalking 3.2.3

• Spring Cloud

• Netflix Eureka

• https://github.com/SkywalkingTest/spring-cloud-example

Page 11: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

Topologicalgraphofapplicationclusters

Page 12: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

TRACE

Page 13: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

JVM

Page 14: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

SERVICEREFERENCETREE

Page 15: DISTRIBUTED TRACING SYSTEM · 2017. 10. 31. · MySQL1 NewThread • TraceSegment -2 1. Createentryspan 2. ExtractContextCarrier 3. CreateExit/Inject/StopExit 4. [Async Module] 1

THANKS