-
Notifications
You must be signed in to change notification settings - Fork 3
add jaeger document #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| # Jaeger | ||
| ## 1. Giới thiệu về Uber Jaeger | ||
| * **Bối cảnh**: Việc truy xuất phân tán trở thành một thành phần phải có các công cụ mà một tổ chức sử dụng để giám sát các kiến trúc phức tạp dựa trên kiến trúc microservice | ||
| * **Từ Monolith đến Microservices**: Vì hoạt động kinh doanh của Uber đã phát triển theo cấp số nhân nên sự phức tạp của kiến trúc phần mềm. Điều này một phần là do sự gia tăng số lượng các tính năng kinh doanh – người dùng mà hệ thống phải đối mặt, cũng như các chức năng nội bộ như phát hiện gian lận, khai thác dữ liệu và xử lý bản đồ. Một lý do khác là chuyển các ứng dụng sang kiến trúc microservices phân phối. Di chuyển vào một hệ sinh thái microservices mang lại nhưng thách thức riêng. Đó là sự mất khả năng hiển thị trong hệ thống, các tương tác phức tạp giữa các dịch vụ. Các công cụ giám sát truyền thống như số liệu và phân loại phân tán vẫn có vị trí cửa chúng, tuy nhiên chúng thường không cung cấp khả năng hiển thi qua các dịch vụ. Đây là nơi phát tán các dấu vết | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Vì hoạt động kinh doanh của Uber đã phát triển theo cấp số nhân nên sự phức tạp của kiến trúc phần mềm"? Đoạn này chắc phải dịch lại em ạ, câu cú nó cứ sao sao ấy, không thoát được ý, em viết theo cách em hiểu đi @Nobita4116 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Vì hoạt động kinh doanh của Uber đã phát triển theo cấp số nhân đòi hỏi kiến trúc phần mềm phức tạp hơn." There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
| * **Tại Uber Engineering**:hệ thống phân phối mã nguồn mở Jaeger đã nhận được sự chấp nhận nội bô vào năm 2016, được tích hợp vào hàng tram microservices và ghi lại hàng nghìn dấu vết mỗi giây. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. *nội bộ (sai chính tả) |
||
|
|
||
| ## 2. Tracing Uber’s Beginning | ||
| * Hệ thống truy tìm được sử dụng rộng rãi đầu tiền ở Uber là Merckx. Nó nhanh chóng trả lời các câu hỏi về sự phức tạp về phụ trợ Python nguyên khối của Uber. Dữ liệu profiling được tổ chức thành các khối, với mỗi khối đại diện cho một hoạt động nhất định. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Anh ví dụ theo ý hiểu nhé: Block thì cứ để là block đi cũng được |
||
|
|
||
|  | ||
|
|
||
| Merckx mô hình biểu đồ cuộc gọi | ||
| * Thiết bị Merckx đã tự động áp dụng một số thư viện hạ tầng trong Python, bao gồm các máy khách và máy chủ HTTP, các truy vấn SQL , các cuộc gọ Redis và cả việc tuần tự hóa JSON. Thiết bị ghi lại một số chỉ số nhất định và siêu dữ liệu về mỗi hoạt động như URL cho cuộc gọi HTTP hoặc truy vấn SQL cho các cuộc gọi cơ sở dữ liệu. Đồng thời cũng nắm bắt thông tin như thời gian các giao dịch cơ sở dữ liệu còn mở và nhưng mảnh cơ sở dữ liệu và bản sao được truy cập. | ||
|
|
||
|  | ||
|
|
||
| Kiến trúc Merckx là một mô hình kéo từ dòng dữ liệu ở Kafka | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Chỗ này thì pull/push mechanism cũng không cần dịch đâu. |
||
| * Một hạn chế thú vị khác của Merckx là nhiều tính năng như theo dõi giao dịch cơ sở dữ liệu thực sự chỉ hoạt động dưới [uWSGI]( https://uwsgi-docs.readthedocs.io/en/latest/) vì dữ liệu được lưu trữ trong kho lưu trữ cục bộ. Một khi Uber bắt đầu áp dụng [Tornado]( http://www.tornadoweb.org/en/stable/) một khung ứng dụng không đồng bộ cho các dịch vụ Python, bộ nhơ thread-local không thể biểu diễn nhiều yêu cầu đồng thời chay cùng một chủ đề trên IOLoop của Tornado | ||
| * Vào đầu năm 2015, họ bắt đầu phát triển TChannel, một giao thức ghép kênh và ghép kênh cho RPC. Một trong những mục tiêu thiết kế của giao thức này là phải có phân loại Dapper theo kiểu xây dựng trong giao thức như lớp đầu tiên. Để hướng tới mục tiêu đó, đặc tả giao thức TChannel đã định nghĩa các trường tìm kiếm là một phần của định dạng nhị phân. | ||
| Ngoài ra họ còn phát hành nhiều thư viện mã nguồn mở. Các thư viện khuyến khích các nhà phát triển ứng dụng viết mã của họ với sự phân bố ngữ cảnh phân tán. | ||
| Thư viện TChannel gần gũi với hệ thống tìm kiếm phân phối Uber, cung cấp các khối xây dựng: | ||
| * Interprocess tuyên truyền của bối cảnh truy tim, in-band với các yêu cầu | ||
| * API thiết bị ghi lại khoảng thời gian | ||
| * Quá trình tuyên truyền của bối cảnh truy tìm | ||
| * Định dạng và cơ chế báo cáo truy xuất dữ liệu trong quá trình xử lý đề truy tìm nguồn phụ trợ | ||
| Họ đã xây dựng một hệ thống phụ trợ nguyên mẫu kết hợp một số thành phần tùy chỉnh với giao diện Zipkin để tạo thành một hệ thống truy tìm hoàn chỉnh. | ||
|
|
||
|  | ||
|
|
||
| Kiến trúc của phụ trợ nguyên mẫu cho các dấu vết được tạo ra bởi TChannel | ||
| ## 3. Kiến trúc Jaeger | ||
| ### Cũ | ||
|
|
||
|  | ||
|
|
||
| Kiến trúc Jaeger dựa vào định dạng lưu trữ Zip và giao diện Zipkin | ||
| * Từ bỏ nguyên mẫu dựa trên Riak/ Solr. Hộ đã thực hiện lại các bộ sưu tập trong Go để chấp nhận lưu lượng TChannel và lưu trữ nó trong Cassandra theo định dạng nhị phân tương thích với Zipkin mà không cần sửa đổi và cung cấp chức năng tìm kiếm dấu vết bị mất. | ||
| * Truy xuất tất cả các dịch vụ hiện có mà không sử dụng TChannel cho RPC. Họ đã xây dựng các thư viện phía khách hàng trong Go, Java, Python và Node.js để hỗ trợ các thiết bị của các dịch vụ tùy ý. | ||
| ### Hiện tại | ||
|
|
||
|  | ||
|
|
||
| Kiến trúc Jaeger hiện tại: các thành phần phụ trợ được thực hiện trong Go, các thư viện khác hàng bằng OpenTracing, một front-end và ống dữ liệu tổng hợp và xử lý trên Apache Spark. | ||
|
|
||
|  | ||
|
|
||
| ## 4. Data Model của Jaeger | ||
|
|
||
|  | ||
|
|
||
| Mô hình dữ liệu hỗ trợ khai báo giá trị khóa và các tham chiếu về khoảng thời gian, Nó cũng tối ưu hóa khối lượng dữ liệu được gửi ra khỏi quá trình bằng các tránh trùng lặp thẻ quá trình mỗi khoảng | ||
| Giao diện web hoàn toàn mới được xây dựng với React: | ||
|
|
||
|  | ||
|
|
||
| ## 5. Các thư viện của Jaeger | ||
| - [Go]( https://github.com/uber/jaeger-client-go) | ||
| - [Java](https://github.com/uber/jaeger-client-java) | ||
| - [Node.js](https://github.com/uber/jaeger-client-node) | ||
| - [Python](https://github.com/uber/jaeger-client-python) | ||
| ## 6. Tài liệu tham khảo | ||
| [Uber documentation](https://eng.uber.com/distributed-tracing/) | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
*truy xuất phân tán?
Câu này sao mà lủng củng thế @@
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures"
Phân phối truy vết đã nhanh chóng trở thành một thành phần trong các công cụ mà các tổ chức dùng để giám sát các kiến trúc phức tạp dựa trên kiến trúc microservice