Giới thiệu
Ngày hôm nay chúng ta đã hoàn thành việc triển khai tính năng Kiến Trúc Dịch Vụ, thay thế chế độ xem AI Insights trước đó bằng hệ thống trực quan hóa ba bảng toàn diện. Việc triển khai này minh họa cho sự phát triển được hỗ trợ bởi AI, đạt được các tính năng cấp doanh nghiệp chỉ trong thời gian ngắn.
Tóm tắt triển khai
Trong phiên làm việc kéo dài 4 giờ, chúng ta đã sản xuất:
- Hình ảnh trực quan Kiến Trúc Dịch Vụ với đồ thị mạng tương tác.
- Phân tích Đường Dẫn Quan Trọng bằng sơ đồ Sankey.
- Chỉ số sức khỏe dịch vụ thời gian thực với các chỉ số R.E.D.
- Bảng phân tích được hỗ trợ bởi AI dành cho các dịch vụ đã chọn.
- Điều khiển phân tích toàn cầu tích hợp vào thanh menu.
- Chế độ Trực Tiếp/Demo để chuyển đổi nguồn dữ liệu.
Kiến trúc kỹ thuật
Tính năng Kiến Trúc Dịch Vụ sử dụng bố cục ba bảng để cung cấp hình ảnh toàn diện về hệ thống.
Bảng Đường Dẫn Quan Trọng
typescript
interface CriticalPath {
id: string;
name: string;
description?: string;
priority: 'critical' | 'high' | 'medium' | 'low';
services: string[];
edges: Array<{ source: string; target: string }>;
metrics: {
requestCount: number;
avgLatency: number;
p99Latency: number;
errorRate: number;
};
}
Chức năng chọn nhiều với Cmd/Ctrl+Click cho phép so sánh nhiều đường dẫn đồng thời.
Đồ Thị Kiến Trúc Dịch Vụ Tương Tác
Kích thước nút được tính toán theo tỷ lệ logarithm để đảm bảo rõ ràng:
typescript
const calculateNodeSize = (rate: number, maxRate: number) => {
const minSize = 30;
const maxSize = 80;
const scaleFactor = Math.log(rate + 1) / Math.log(maxRate + 1);
return minSize + (maxSize - minSize) * scaleFactor;
}
const getHealthColor = (errorRate: number): string => {
if (errorRate > 0.05) return '#ff4d4f'; // >5% lỗi
if (errorRate > 0.01) return '#faad14'; // 1-5% lỗi
return '#52c41a'; // <1% lỗi
}
Bảng Phân Tích AI
Phân tích sức khỏe dịch vụ với những thông tin có thể hành động:
typescript
export const generateHealthExplanation = (
serviceName: string,
metrics: ServiceMetricsDetail
): HealthExplanation => {
const errorSeverity = metrics.errorRate > 0.05 ? 2 :
metrics.errorRate > 0.01 ? 1 : 0;
const latencySeverity = metrics.duration > 500 ? 2 :
metrics.duration > 100 ? 1 : 0;
const rateSeverity = metrics.rate < 1 ? 2 :
metrics.rate < 10 ? 1 : 0;
const maxSeverity = Math.max(errorSeverity, latencySeverity, rateSeverity);
const status = maxSeverity === 2 ? 'critical' :
maxSeverity === 1 ? 'warning' : 'healthy';
return {
status,
summary: generateSummary(serviceName, metrics, status),
impactedMetrics: analyzeMetrics(metrics),
recommendations: generateRecommendations(metrics, status)
};
}
Thống kê phát triển
Tiến độ có thể đo lường từ việc triển khai hôm nay:
- Số dòng mã: 2,500 trong 12 tệp TypeScript.
- Thành phần tạo ra: 8 thành phần React.
- Phạm vi kiểm tra: 12 kiểm tra e2e thành công, 7 bị bỏ qua do tính tương thích.
- Thời gian phát triển: 4 giờ làm việc tập trung.
- Số lần tái cấu trúc: 3 chu kỳ lớn.
Chi tiết triển khai kỹ thuật
Sơ đồ Sankey cho Dòng Yêu Cầu
Chuyển đổi dữ liệu kiến trúc thành hình ảnh dòng chảy:
typescript
const getSankeyOption = (): EChartsOption => {
const links = path.edges.map((edge) => {
const sourceService = services.find(s => s.id === edge.source);
const targetService = services.find(s => s.id === edge.target);
const volume = Math.min(
sourceService?.metrics?.rate || 100,
targetService?.metrics?.rate || 100
);
const errorRate = targetService?.metrics?.errorRate || 0;
return {
source: edge.source,
target: edge.target,
value: volume,
lineStyle: {
color: getServiceColor(errorRate),
opacity: errorRate > 0.01 ? 0.9 : 0.6
}
};
});
return {
series: [{
type: 'sankey',
emphasis: { focus: 'adjacency' },
data: nodes,
links: links
}]
};
}
Tính Năng Hiển Thị Dịch Vụ Lân Cận
Lọc thông minh cho ngữ cảnh dịch vụ đã chọn:
typescript
const getVisibleServices = (selectedService: string, allServices: ServiceNode[]) => {
const neighbors = new Set<string>();
edges.forEach(edge => {
if (edge.source === selectedService) neighbors.add(edge.target);
if (edge.target === selectedService) neighbors.add(edge.source);
});
return allServices.filter(service =>
service.id === selectedService || neighbors.has(service.id)
);
}
Quản lý Nguồn Dữ Liệu
Hỗ trợ cả dữ liệu giả lập và dữ liệu thực:
typescript
const useDataSource = () => {
const { useMockData } = useAppStore();
return useMemo(() => ({
fetchTopology: useMockData
? () => Promise.resolve(getMockTopologyData())
: () => fetchRealTopologyData(),
fetchMetrics: useMockData
? () => Promise.resolve(getMockMetrics())
: () => fetchRealMetrics()
}), [useMockData]);
}
Tài liệu hình ảnh
Hình ảnh từ việc triển khai PR #39:
Xem Kiến Trúc Chính
Đường dẫn quan trọng, kiến trúc tương tác và bảng phân tích AI
Đường Dẫn Thanh Toán
Sơ đồ Sankey hiển thị khối lượng yêu cầu và tỷ lệ lỗi
Phạm vi kiểm tra
Bộ kiểm tra e2e toàn diện đảm bảo chất lượng:
typescript
describe('Xác thực toàn diện Kiến Trúc Dịch Vụ', () => {
test('nên hiển thị tất cả các thành phần Kiến Trúc Dịch Vụ đúng cách');
test('nên xử lý việc chọn đường dẫn trong bảng đường dẫn quan trọng');
test('nên hiển thị đồ thị kiến trúc với các nút và cạnh');
test('nên hiển thị chi tiết dịch vụ khi nhấp vào nút');
test('nên xử lý chuyển đổi chế độ Trực Tiếp/Demo');
test('nên lọc dịch vụ dựa trên trạng thái sức khỏe');
test('nên làm nổi bật các đường dẫn đã chọn trong kiến trúc');
test('nên hiển thị phân tích AI cho dịch vụ đã chọn');
test('nên xử lý chọn nhiều với Cmd/Ctrl+Click');
test('nên duy trì trạng thái qua các tương tác bảng');
test('nên xử lý trạng thái lỗi một cách duyên dáng');
test('nên hoạt động mượt mà với tập dữ liệu lớn');
});
Phân tích phát triển 4 giờ
Giờ 1: Phân tích yêu cầu và kiến trúc thành phần
Giờ 2: Triển khai đồ thị kiến trúc ECharts
Giờ 3: Sơ đồ Sankey và hình ảnh đường dẫn
Giờ 4: Bảng phân tích AI và bộ kiểm tra
Cân nhắc về hiệu suất
Những hạn chế hiện tại và các tối ưu hóa dự kiến:
- Việc hiển thị đồ thị chậm khi >100 nút.
- Cần tích hợp WebSocket cho các bản cập nhật thời gian thực.
- Viewport di động cần điều chỉnh thiết kế đáp ứng.
- Chức năng xuất đang chờ cho việc chia sẻ sơ đồ.
Kiến thức triển khai
Các mẫu hiệu quả
- Tách biệt thành phần đơn giản hóa quy trình phát triển song song.
- Tiếp cận dữ liệu giả lập trước đã tăng tốc độ lặp lại UI.
- Các giao diện TypeScript ngăn ngừa lỗi thời gian chạy.
- Các mẫu Effect-TS cung cấp biên giới dịch vụ an toàn cho kiểu.
Các lĩnh vực cần cải thiện
- Tối ưu hóa hiệu suất cho tập dữ liệu lớn.
- Tích hợp luồng dữ liệu thời gian thực.
- Điều chỉnh bố cục đáp ứng cho di động.
- Khả năng xuất sơ đồ.
Các bước tiếp theo
Ưu tiên triển khai của ngày mai:
- Kết nối với các luồng dữ liệu OpenTelemetry thời gian thực.
- Triển khai phát hiện bất thường dựa trên autoencoder.
- Tối ưu hóa việc hiển thị cho đồ thị quy mô doanh nghiệp.
- Thêm sự phát triển kiến trúc theo thời gian.
Kết luận
Ngày 20 đã mang lại một triển khai hoàn chỉnh tính năng Kiến Trúc Dịch Vụ với phân tích đường dẫn quan trọng, hình ảnh tương tác và những hiểu biết được hỗ trợ bởi AI. Phiên phát triển tập trung 4 giờ đã sản xuất 2,500 dòng mã sẵn sàng cho sản xuất với phạm vi kiểm tra toàn diện.
Tiến độ: Ngày 20 trong 30 hoàn thành
Tính năng: Kiến Trúc Dịch Vụ với Đường Dẫn Quan Trọng
Mã: 2,500 LOC đã thêm
Kiểm tra: 12 thành công, 7 bị bỏ qua
PR: #39
Phần của chuỗi 30 ngày về Nền Tảng Giám Sát AI-Native. Xây dựng khả năng giám sát doanh nghiệp với phát triển hỗ trợ AI và các ngày làm việc tập trung 4 giờ.