Truy dấu phân tán là gì?
Truy dấu phân tán là quan sát các yêu cầu dữ liệu khi các yêu cầu đó đi qua một hệ thống phân tán. Kiến trúc vi dịch vụ hiện đại thường có nhiều thành phần nhỏ độc lập liên tục giao tiếp và trao đổi dữ liệu bằng cách sử dụng API để thực hiện công việc phức tạp. Với tính năng truy dấu phân tán, các nhà phát triển có thể truy dấu hoặc theo dõi trực quan đường đi của yêu cầu qua các vi dịch vụ khác nhau. Khả năng hiển thị này giúp khắc phục lỗi hoặc sửa lỗi và sự cố hiệu năng.
Phương thức truy dấu phân tán mang lại những lợi ích gì?
Nhà phát triển phần mềm có thể triển khai các hệ thống truy dấu phân tán trong hầu hết mọi môi trường hoạt động trên đám mây, cũng như ghi lại các dấu vết phân tán mà ứng dụng trên đám mây tạo ra. Hơn nữa, các công cụ truy dấu hỗ trợ nhiều ngôn ngữ lập trình và ngăn xếp phần mềm, giúp nhóm phần mềm có thể giám sát và thu thập dữ liệu hiệu suất cho các ứng dụng khác nhau trên cùng một nền tảng.
Các nhóm phát triển sử dụng tính năng truy dấu phân tán để cải thiện khả năng quan sát, cũng như giải quyết các vấn đề về hiệu suất mà các công cụ giám sát và gỡ lỗi phần mềm thông thường không làm được.
Sau đây là các lợi ích khác của tính năng truy dấu phân tán.
Đẩy nhanh quá trình khắc phục sự cố phần mềm
Các ứng dụng hiện đại dùng nhiều vi dịch vụ để trao đổi dữ liệu và thực hiện yêu cầu dịch vụ trên các hệ thống phân tán. Việc khắc phục sự cố hiệu suất trong kiến trúc dựa trên vi dịch vụ khó hơn nhiều so với ứng dụng phần mềm nguyên khối. Không giống như ứng dụng nguyên khối, nguyên nhân gốc rễ dẫn đến một vấn đề cụ thể về phần mềm có thể không rõ ràng - các hoạt động tương tác chồng chéo và phức tạp giữa nhiều mô-đun phần mềm có thể khiến khó chẩn đoán sự cố.
Với tính năng truy dấu phân tán, các nhóm phần mềm có thể giám sát dữ liệu đi qua các đường dẫn phức tạp kết nối các vi dịch vụ và kho lưu trữ dữ liệu khác nhau. Bằng công cụ truy dấu phân tán, các nhóm phần mềm có thể theo dõi các yêu cầu và trực quan hóa các đường dẫn truyền dữ liệu một cách chính xác. Các nhóm phần mềm có thể giải quyết kịp thời các vấn đề về hiệu suất và giảm thiểu tình trạng gián đoạn dịch vụ.
Cải thiện hoạt động cộng tác của nhà phát triển
Một số nhà phát triển thường tham gia vào việc xây dựng ứng dụng trên đám mây, trong đó, mỗi người chịu trách nhiệm về một hoặc một số vi dịch vụ. Quá trình phát triển phần mềm chậm lại nếu các nhà phát triển không thể truy dấu dữ liệu do các vi dịch vụ trao đổi. Với hệ thống truy dấu phân tán, nhà phát triển có thể cộng tác bằng cách cung cấp dữ liệu đo từ xa, chẳng hạn như nhật ký và dấu vết, cho mọi yêu cầu dịch vụ mà vi dịch vụ đưa ra. Nhà phát triển có thể phản hồi chính xác các lỗi và các vấn đề phần mềm khác phát hiện được trong quá trình kiểm thử và sản xuất.
Rút ngắn thời gian tiếp cận thị trường
Các tổ chức triển khai các nền tảng truy dấu phân tán có thể hợp lý hóa và đẩy nhanh hoạt động phát hành các ứng dụng phần mềm cho người dùng cuối. Nhóm phần mềm xem xét các dấu vết phân tán để nắm rõ thông tin chi tiết, giúp tăng tốc độ phát triển phần mềm, giảm thiểu chi phí phát triển, hiểu hành vi của người dùng và cải thiện mức độ sẵn sàng của thị trường.
Có các loại truy dấu phân tán khác nhau nào?
Nhóm phần mềm dùng các công cụ truy dấu phân tán để giám sát, phân tích và tối ưu hóa ứng dụng.
Truy dấu mã
Truy dấu mã là quá trình phần mềm kiểm tra luồng mã nguồn trong ứng dụng khi thực hiện một chức năng cụ thể. Tính năng này giúp nhà phát triển hiểu luồng logic của mã và nhận biết các vấn đề không xác định. Ví dụ: nhà phát triển dùng tính năng truy dấu mã để xác thực rằng yêu cầu dịch vụ đã gọi các bước để truy vấn cơ sở dữ liệu. Nếu một số chức năng phần mềm không phản hồi, hệ thống truy dấu sẽ thu thập trạng thái lỗi thích hợp và thu hút sự chú ý đến thời gian phản hồi.
Truy dấu chương trình
Truy dấu chương trình là phương pháp giúp nhà phát triển kiểm tra địa chỉ của các lệnh và biến do một ứng dụng đang hoạt động gọi. Khi một ứng dụng phần mềm chạy, ứng dụng này sẽ xử lý từng dòng mã nằm trong một không gian bộ nhớ được phân bổ cụ thể. Ứng dụng cũng xử lý các biến được lưu trữ trong bộ nhớ máy. Kiểm tra các thay đổi về chương trình và bộ nhớ dữ liệu là việc khó khăn nếu không có công cụ tự động. Với tính năng truy dấu chương trình, các nhóm phần mềm có thể chẩn đoán các vấn đề lâu đời về hiệu suất, chẳng hạn như tràn bộ nhớ, tiêu thụ tài nguyên quá mức và chặn các hoạt động logic.
Truy dấu toàn diện
Với tính năng truy tìm toàn diện, các nhóm phát triển có thể theo dõi quá trình chuyển đổi dữ liệu dọc theo đường dẫn yêu cầu dịch vụ. Khi khởi tạo một yêu cầu, ứng dụng sẽ gửi dữ liệu đến các thành phần phần mềm khác để xử lý thêm. Nhà phát triển dùng các công cụ truy dấu để theo dõi và biên dịch các thay đổi đối với dữ liệu quan trọng một cách toàn diện. Tính năng này cung cấp chế độ xem lấy ứng dụng làm trung tâm về những yêu cầu truyền qua ứng dụng.
Truy dấu phân tán toàn diện hoạt động như thế nào trong kiến trúc vi dịch vụ?
Khi dùng ứng dụng, người dùng bắt đầu yêu cầu dịch vụ và các thành phần ứng dụng khác nhau sẽ xử lý yêu cầu.
Hãy xem xét trường hợp một người dùng đặt vé trong ứng dụng đặt vé xem phim trực tuyến. Người dùng nhập thông tin liên hệ, chi tiết phim và thông tin thanh toán của họ rồi chọn Đặt ngay. Một yêu cầu được tạo và chuyển đến:
- Microservice A xác thực dữ liệu do người dùng nhập.
- Microservice B lấy dữ liệu từ A và tạo một bản ghi trong cơ sở dữ liệu khách hàng.
- Microservice C lấy dữ liệu từ B và xác nhận lệnh thanh toán.
- Microservice D lấy dữ liệu từ C, phân bổ chỗ ngồi và tạo dữ liệu vé xem phim.
- Microservice E lấy dữ liệu từ D và tạo tệp vé ở định dạng PDF.
Sau đó, một phản hồi chứa tệp vé dạng PDF được trả về với chuỗi vi dịch vụ từ E đến D đến C đến B đến A, và cuối cùng là đến tay người dùng. Trên đây là một ví dụ rất đơn giản - một yêu cầu thường đi qua vài chục vi dịch vụ và thậm chí đi qua chuỗi thành phần phần mềm của bên thứ ba bên ngoài ứng dụng. Điều này làm cho quá trình ngày càng phức tạp.
Các hệ thống truy dấu phân tán theo dõi các tương tác này của yêu cầu dịch vụ với các vi dịch vụ và những thành phần phần mềm khác trong môi trường điện toán phân tán. Truy dấu phân tán thể hiện dòng thời gian và tất cả các hành động xảy ra giữa việc tạo yêu cầu và nhận phản hồi. Các nhóm phần mềm sử dụng dấu vết để theo dõi chuyển động dữ liệu thông qua nhiều vi dịch vụ ban đầu tương tác với yêu cầu.
Span
Khi xử lý yêu cầu dịch vụ, một ứng dụng có thể thực hiện một số hành động. Các hành động này được biểu diễn dưới dạng khoảng thời gian trong truy dấu phân tán. Ví dụ: span có thể là lệnh gọi API, xác thực người dùng hoặc cho phép truy cập bộ nhớ. Nếu một yêu cầu duy nhất dẫn đến nhiều hành động, span ban đầu (hoặc cha) có thể phân nhánh thành nhiều span con. Các lớp lồng nhau của span cha và span con tạo thành một biểu diễn logic liên tục của các bước được thực hiện để hoàn thành yêu cầu dịch vụ.
ID theo dõi
Hệ thống truy dấu phân tán gán một ID duy nhất cho mọi yêu cầu để theo dõi yêu cầu đó. Mỗi span kế thừa cùng một ID theo dõi từ yêu cầu ban đầu chứa span đó. Span cũng được gắn ID duy nhất giúp hệ thống truy dấu hợp nhất siêu dữ liệu, nhật ký và số liệu mà thu thập được.
Bộ sưu tập số liệu
Khi truyền qua các vi dịch vụ khác nhau, mỗi span sẽ thêm các số liệu giúp cung cấp cho nhà phát triển những thông tin chi tiết cụ thể và chính xác về hành vi của phần mềm. Bạn có thể thu thập tỷ lệ lỗi, dấu thời gian, thời gian phản hồi và siêu dữ liệu khác với các span. Sau khi quá trình truy dấu hoàn thành toàn bộ chu kỳ, công cụ truy dấu phân tán sẽ hợp nhất tất cả dữ liệu thu thập được.
Ví dụ: một lệnh gọi API được đánh giá dựa vào thời gian phản hồi, trạng thái lỗi và sự cố của các chức năng phụ do nhiều dịch vụ của bên thứ ba thực hiện. Công cụ truy dấu biến dữ liệu thành các dạng trực quan, nêu bật các chỉ số chính và nội dung tóm tắt về hiệu suất. Bằng cách này, các kỹ sư về độ tin cậy của trang web có thể nhanh chóng xác định lỗi, kiểm tra các yếu tố dữ liệu quan trọng và cộng tác với các nhóm phát triển để khắc phục những vấn đề về hiệu suất cũng như đảm bảo tính tuân thủ Thỏa thuận cấp độ dịch vụ (SLA).
Tiêu chuẩn truy dấu phân tán là gì?
Các tiêu chuẩn truy dấu phân tán cung cấp một khung chung và các công cụ phần mềm cho nhà phát triển. Các tiêu chuẩn này giám sát, trực quan hóa và phân tích những yêu cầu dịch vụ trong môi trường ứng dụng hiện đại. Bằng cách tiêu chuẩn hóa quy trình truy dấu phân tán, các nhóm phần mềm có thể đo lường việc theo dõi yêu cầu mà không chịu sự ràng buộc của nhà cung cấp.
Các phần dưới đây mô tả các tiêu chuẩn được áp dụng để cho phép tương tác khi thực hiện truy dấu phân tán.
OpenTracing
OpenTracing là một tiêu chuẩn truy dấu phân tán mã nguồn mở do Cloud Native Computing Foundation (CNCF) phát triển. OpenTracing chú trọng đến việc cho phép các nhà phát triển tạo ra dấu vết thông qua API đo lường. Điều này cho phép các nhà phát triển tạo ra dấu vết phân tán từ các phần khác nhau của cơ sở mã, thư viện hoặc các phụ thuộc khác.
OpenCensus
OpenCensus bao gồm các thư viện đa ngôn ngữ, có khả năng trích xuất số liệu phần mềm và gửi chúng đến các hệ thống phụ trợ để phân tích. Các nhà phát triển có thể sử dụng API được cung cấp để quản lý cách tạo và thu thập dấu vết. Không giống như OpenTracing, các nhà phát triển làm việc với OpenCensus từ một kho dự án duy nhất thay vì các cơ sở mã và thư viện riêng lẻ.
OpenTelemetry
OpenTelemetry hợp nhất OpenTracing và OpenCensus. OpenTeleMetry kết hợp các tính năng tốt nhất của cả 2 tiêu chuẩn để cung cấp một khung truy dấu phân tán toàn diện. OpenTelemetry cung cấp các bộ công cụ phát triển phần mềm mở rộng, API, thư viện và các công cụ đo đạc khác để truy dấu phân tán dễ dàng hơn.
Sự khác biệt giữa truy dấu phân tán và ghi nhật ký là gì?
Ghi nhật ký là phương thức ghi lại các sự kiện cụ thể xảy ra khi một ứng dụng chạy. Công cụ ghi nhật ký thu thập các sự kiện có dấu thời gian - chẳng hạn như lỗi hệ thống, tương tác của người dùng, trạng thái giao tiếp và các chỉ số khác - để giúp các nhóm phát triển phát hiện sự bất thường của hệ thống. Nói chung, có 2 loại phương thức ghi nhật ký:
- Ghi nhật ký tập trung thu thập tất cả các hoạt động được ghi lại và lưu trữ chúng ở một vị trí duy nhất.
- Ghi nhật ký phân tán lưu trữ các tệp nhật ký ở các vị trí riêng biệt trên đám mây.
Cả 2 phương pháp ghi nhật ký đều mang đến cái nhìn tổng quan tĩnh về các sự cố để các nhà phát triển nắm được những gì đã xảy ra trong ứng dụng. Ngược lại, truy dấu phân tán cung cấp biên bản kiểm tra chỉ ra lý do tại sao một sự cố xảy ra bằng cách tương quan các dữ liệu đo từ xa khác nhau được thu thập trong suốt thời gian yêu cầu dịch vụ. Truy dấu phân tán có thể sử dụng phương thức ghi nhật ký và các phương pháp thu thập dữ liệu khác để theo dõi một yêu cầu dịch vụ cụ thể.
Phương thức truy dấu phân tán mang đến những thách thức gì?
Truy dấu phân tán giúp các nhà phát triển dễ dàng chẩn đoán, gỡ lỗi và khắc phục các vấn đề phần mềm. Mặc dù vậy, các nhóm phần mềm phải lưu ý về những thách thức sau đây khi chọn các công cụ truy dấu.
Thiết bị đo lường thủ công
Một số công cụ truy dấu yêu cầu các nhóm phần mềm phải đo lường mã theo cách thủ công để tạo ra các dấu vết cần thiết. Khi nhà phát triển sửa đổi mã để theo dõi các yêu cầu, lỗi mã hóa có nguy cơ ảnh hưởng đến các bản phát hành chính thức. Hơn nữa, việc không có hệ thống tự động hóa khiến việc truy dấu trở nên phức tạp, dẫn đến sự chậm trễ và tình trạng thu thập dữ liệu không chính xác.
Phạm vi frontend hạn chế
Các nhà phát triển có thể không giám sát được hoàn toàn các vấn đề về hiệu suất nếu các công cụ truy dấu bị hạn chế về khả năng phân tích phụ trợ. Trong một số trường hợp, hệ thống truy dấu phân tán chỉ bắt đầu thu thập dữ liệu khi dịch vụ phụ trợ đầu tiên nhận được yêu cầu. Điều này có nghĩa là các nhà phát triển không thể phát hiện và kiểm tra các vấn đề phát sinh từ dịch vụ frontend trong phiên người dùng tương ứng.
Lấy mẫu ngẫu nhiên
Một số công cụ không cho phép các nhóm phần mềm ưu tiên việc truy dấu, làm hạn chế khả năng quan sát đối với các dấu vết được lấy mẫu ngẫu nhiên. Với dữ liệu mẫu hạn chế, các tổ chức cần những phương pháp khắc phục sự cố phần mềm khác để nắm bắt các vấn đề lớn mà công cụ truy dấu không thể phát hiện.
AWS có thể hỗ trợ các yêu cầu về truy dấu phân tán như thế nào?
AWS X-Ray là nền tảng dò vết phân tán giúp nhà phát triển phần mềm theo dõi các yêu cầu của người dùng và xác định tình trạng tắc nghẽn trong các ứng dụng trên đám mây. Các tổ chức sử dụng X-Ray để trực quan hóa số liệu ứng dụng và cải thiện tính khả dụng của khối lượng công việc. Với AWS X-Ray, bạn có thể:
- Tích hợp với tất cả các ứng dụng chạy trên Amazon Elastic Compute Cloud (EC2), Amazon EC2 Container Service (Amazon ECS), AWS Lambda và AWS Elastic Beanstalk.
- Đặt tỷ lệ lấy mẫu thích hợp để mang đến khả năng hiển thị toàn diện cho các dấu vết.
- Trực quan hóa dữ liệu tổng hợp thông qua bản đồ dịch vụ, hiển thị các số liệu chính chẳng hạn như độ trễ và tỷ lệ thất bại.
Bắt đầu sử dụng phương thức truy dấu phân tán trên AWS bằng cách tạo tài khoản miễn phí ngay hôm nay.