Brave เป็นไลบรารีเครื่องมือติดตามแบบกระจาย โดยทั่วไปแล้ว Brave จะสกัดกั้นคำขอการผลิตเพื่อรวบรวมข้อมูลเกี่ยวกับเวลา เชื่อมโยงและเผยแพร่บริบทการติดตาม แม้ว่าโดยทั่วไปแล้วข้อมูลการติดตามจะถูกส่งไปยังเซิร์ฟเวอร์ Zipkin แต่ปลั๊กอินของบริษัทอื่นก็พร้อมที่จะส่งไปยังบริการอื่น เช่น Amazon X-Ray
พื้นที่เก็บข้อมูลนี้มีไลบรารี Java ที่ไม่ต้องใช้การพึ่งพาและเครื่องมือสำหรับส่วนประกอบทั่วไปที่ใช้ในบริการการใช้งานจริง ตัวอย่างเช่น รวมถึงตัวกรองการติดตามสำหรับ Servlet และความสัมพันธ์ของบันทึกสำหรับ Apache Log4J
คุณสามารถดูโปรเจ็กต์ตัวอย่างของเราสำหรับวิธีติดตามเว็บแอปพลิเคชันแบบง่าย
ไลบรารีตัวติดตามที่ไม่มีการพึ่งพาของ Brave ใช้งานได้กับ JRE6+ นี่คือ API พื้นฐานที่เครื่องมือวัดใช้เพื่อจับเวลาการดำเนินการและเพิ่มแท็กที่อธิบายการดำเนินการเหล่านั้น ไลบรารีนี้ยังรวมถึงโค้ดที่แยกวิเคราะห์ส่วนหัว X-B3-TraceId
ผู้ใช้ส่วนใหญ่จะไม่เขียนโค้ดติดตามโดยตรง แต่พวกเขานำเครื่องมือที่คนอื่นเขียนมาใช้ซ้ำ ตรวจสอบอุปกรณ์และรายการของ Zipkin ของเราก่อนเปิดตัวอุปกรณ์ของคุณเอง ไลบรารีการติดตามทั่วไปเช่น JDBC, Servlet และ Spring มีอยู่แล้ว เครื่องมือวัดที่เขียนที่นี่ได้รับการทดสอบและเปรียบเทียบมาตรฐาน
หากคุณกำลังพยายามติดตามแอปพลิเคชันรุ่นเก่า คุณอาจสนใจ Spring XML Configuration สิ่งนี้ทำให้คุณสามารถตั้งค่าการติดตามโดยไม่ต้องใช้โค้ดที่กำหนดเองใดๆ
คุณอาจต้องการใส่รหัสติดตามลงในไฟล์บันทึกของคุณ หรือเปลี่ยนลักษณะการทำงานของเธรดในเครื่อง ดูไลบรารีบริบทของเรา สำหรับการผสานรวมกับเครื่องมือ เช่น SLF4J
ไลบรารีของ Brave ทั้งหมดตรงกับเวอร์ชัน Java ขั้นต่ำของสิ่งที่ถูกติดตามหรือรวมเข้าด้วยกัน และไม่มีการพึ่งพาบุคคลที่สาม เป้าหมายคือจะไม่ส่งผลกระทบต่อตัวเลือกของโครงการของคุณ หรือทำให้โครงการของคุณต้องขึ้นอยู่กับการตัดสินใจของผู้อื่น
ตัวอย่างเช่น แม้จะรวมไลบรารีการรายงานพื้นฐาน การเชื่อมต่อ zipkin-sender-url แล้ว Brave ก็ยังไม่รวม json, logging, protobuf หรือ thrift dependency ซึ่งหมายความว่าไม่ต้องกังวลหากแอปพลิเคชันของคุณเลือกเวอร์ชันเฉพาะของ SLF4J, Gson หรือ Guava ยิ่งไปกว่านั้น แผนผังการพึ่งพาทั้งหมดรวมถึงการรายงานพื้นฐานใน json, thrift หรือ protobuf นั้นมีขนาดขวดน้อยกว่า 512KiB
มี Java เวอร์ชันพื้นเป็น 1.6 ซึ่งอนุญาตให้ใช้ JRE รุ่นเก่าและรันไทม์ Android รุ่นเก่าได้ แต่อาจจำกัดบางแอปพลิเคชัน ตัวอย่างเช่น Servlet 2.5 ใช้งานได้กับ Java 1.5 แต่เนื่องจาก Brave เป็น 1.6 คุณจะไม่สามารถติดตามแอปพลิเคชัน Servlet 2.5 ได้จนกว่าคุณจะใช้ JRE 1.6 เป็นอย่างน้อย
การบูรณาการทั้งหมดจะตั้งค่าไลบรารีที่เกี่ยวข้องเป็นขอบเขต "ที่ให้มา" เพื่อให้แน่ใจว่า Brave จะไม่รบกวนเวอร์ชันที่คุณเลือก
ไลบรารีบางแห่งอัปเดตบ่อยครั้งซึ่งนำไปสู่การเบี่ยงเบนของ API ในบางกรณี เราจะทดสอบช่วงเวอร์ชันต่างๆ เพื่อลดผลกระทบจากกรณีนี้ ตัวอย่างเช่น เราทดสอบ gRPC และ Kafka กับไลบรารีหลายเวอร์ชัน
อาร์ติแฟกต์ทั้งหมดเผยแพร่ไปยังรหัสกลุ่ม "io.zipkin.brave" เราใช้เวอร์ชันเผยแพร่ทั่วไปสำหรับส่วนประกอบทั้งหมด
สแนปชอตจะถูกอัปโหลดไปยัง Sonatype ซึ่งจะซิงโครไนซ์กับ Maven Central
สแนปชอตจะถูกอัปโหลดไปยัง Sonatype หลังจากคอมมิตเป็นมาสเตอร์
เมื่อใช้องค์ประกอบที่กล้าหาญหลายรายการ คุณจะต้องจัดเรียงเวอร์ชันต่างๆ ไว้ในที่เดียว วิธีนี้ช่วยให้คุณอัปเกรดได้อย่างปลอดภัยยิ่งขึ้น โดยไม่ต้องกังวลกับข้อขัดแย้งน้อยลง
คุณสามารถใช้ BOM (รายการวัสดุ) ของเครื่องมือ Maven ของเราสำหรับสิ่งนี้:
อดีต. ในส่วนการอ้างอิงของคุณ ให้นำเข้า BOM ดังนี้:
< dependencyManagement >
< dependencies >
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-bom</ artifactId >
< version >${brave.version}</ version >
< type >pom</ type >
< scope >import</ scope >
</ dependency >
</ dependencies >
</ dependencyManagement >
ตอนนี้คุณสามารถละเวอร์ชันไว้ได้เมื่อเลือกเครื่องมือใดๆ ที่รองรับ นอกจากนี้ การใช้งานทางอ้อมใดๆ จะมีเวอร์ชันที่สอดคล้อง:
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-instrumentation-okhttp3</ artifactId >
</ dependency >
เมื่อปฏิบัติตามข้างต้นแล้ว คุณสามารถใช้คุณสมบัติ brave.version
เพื่อแทนที่เวอร์ชันที่ขึ้นต่อกันอย่างสอดคล้องกัน โดยทั่วไปมักเป็นการทดสอบคุณลักษณะหรือการแก้ไขใหม่
หมายเหตุ: หากคุณแทนที่เวอร์ชัน ให้ตรวจสอบอีกครั้งเสมอว่าเวอร์ชันของคุณถูกต้อง (เท่ากับหรือใหม่กว่า) กว่าเวอร์ชันที่คุณกำลังอัปเดต วิธีนี้จะหลีกเลี่ยงความขัดแย้งในชั้นเรียน