Trường Hợp Sử Dụng – Khả Năng Mở Rộng Thực Tiễn: Bên Trong Artifactory HA
Chuyển ngữ Bài Nói:
Tôi là Viktor Gamov, làm việc với vai trò kiến trúc sư giải pháp tại Hazelcast. Về cơ bản, công việc của một kiến trúc sư giải pháp là giải quyết các vấn đề. Và, bạn biết đấy, tôi nghĩ bạn đã hiểu ý từ người đàn ông cũng giải quyết tất cả các vấn đề của bạn.
Hôm nay, chúng ta sẽ thảo luận về Artifactory HA và những lựa chọn mà các nhà phát triển đã thực hiện để làm cho giải pháp này giải quyết được các vấn đề của họ.
Về cơ bản, Artifactory HA có một ý tưởng đơn giản: Cung cấp các tệp nhị phân của bạn bằng mọi giá. Đó là lý do tại sao có nhiều instance của Artifactory. Nhiều thứ sẽ được nhân bản, bởi vì trong thế giới thực, mọi thứ có thể hỏng. Vì vậy, tính sẵn sàng cao của sản phẩm là điều thiết yếu cho hạ tầng của các nhà phát triển, đây là một mục tiêu rất lớn đối với JFrog với tư cách là nhà phát triển của sản phẩm này.
Và nhiều điều tôi sẽ nói với bạn hôm nay, bạn có thể tìm thấy trong Artifactory HA. Về cơ bản, như một hệ thống phân tán hoặc hệ thống có tính sẵn sàng cao, nhiều vấn đề cần được giải quyết trong Artifactory HA.
Trước tiên, đây là sơ đồ giải thích kiến trúc cơ bản của Artifactory HA. Như bạn có thể thấy, ở phần back end, Artifactory có thể lưu trữ dữ liệu trong nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu ở chế độ full cache. Vì vậy, bạn cũng bao gồm các tệp nhị phân trong cơ sở dữ liệu. Ngoài ra, các tệp nhị phân có thể được lưu trữ trên bộ nhớ gắn mạng. Tại sao lại là bộ nhớ gắn mạng? Bởi vì nhiều instance cần truy cập vào đó. Và đó là một lựa chọn khá hợp lý khi sử dụng bộ nhớ gắn mạng hoặc bất kỳ bộ nhớ gắn mạng nào có thể truy cập được bởi nhiều node. Thêm vào đó, một số tính năng mới được tích hợp vào chuỗi Artifactory, ví dụ như tích hợp với Amazon S3. Trong trường hợp này, bạn có thể vượt qua sự phức tạp của NSF và sử dụng giải pháp phù hợp và có khả năng mở rộng.
Một số thông tin mà các thành viên trong cụm Artifactory cần trao đổi bao gồm thông tin về cache, thông tin về một số dữ liệu được lưu trữ trong metadata, cùng với kiểm soát đồng thời đối với các nguồn của bạn, bởi vì, như bạn có thể thấy, trong FAS hoặc cơ sở dữ liệu ở đây là tài nguyên chia sẻ, vì vậy chúng ta cần có một số hình thức kiểm soát truy cập đồng thời.
Và có một số thách thức cần giải quyết. Đó là truy cập đồng thời và phân tán cho các tệp nhị phân. Như bạn đã thấy từ hình ảnh, NSF là bộ nhớ trung tâm, mặc dù nó có một số bản sao lưu và một số tính năng phục hồi ở mức phần cứng, nhưng nó vẫn là một nguồn duy nhất từ góc nhìn của Artifactory. Vì vậy, để cung cấp truy cập vào các tài nguyên này, truy cập này cần được kiểm soát. Và vì truy cập này cần được kiểm soát về việc node nào sẽ thực hiện hành động. Ví dụ, có một node chính sẽ chạy thu gom rác trên Artifactory của bạn hoặc một số node có thể chạy lập chỉ mục khi bạn tải lên một tệp jar mới và bạn cần phân tích metadata của Maven hoặc các artifact khác.
Vì vậy, đây là những thách thức, bởi vì nhiều instance cần có cùng một bức tranh về thế giới, cùng một bức tranh về ai có quyền truy cập vào tệp nhị phân cụ thể tại một thời điểm. Một số thông tin mà các thành viên Artifactory cần truy cập là thông tin metadata về các kho lưu trữ, về tệp nào thuộc về kho lưu trữ nào, v.v. Vì vậy, cache kho lưu trữ là một thách thức khác mà các nhà phát triển của Artifactory HA phải đối mặt.
Như tôi đã đề cập, một số tác vụ chạy trong nền, ví dụ, khi bạn chạy lập chỉ mục hoặc khi bạn chạy một số kiểm tra checksum trong thu gom rác, các công việc này cần củng cố các thành phần khác nhau của hệ thống rằng công việc đã hoàn thành hoặc đang tiến hành và nhiều điều khác. Vì vậy, về cơ bản, việc xác định tiến trình công việc là một điều khác mà chúng ta sẽ thảo luận về cách thức hoạt động trong chuỗi Artifactory. Và vì lý do mà bạn có thể hiểu, kết nối là điều thiết yếu cho hệ thống phân tán. Đúng không? Trong trường hợp này, chuỗi Artifactory là hệ thống phụ thuộc vào mạng hơn là I/O. Đúng không? Trong trường hợp này, tốc độ mạng là quan trọng, và thêm vào đó, việc phát hiện các thành viên khác, khi các thành viên khác của cụm sẽ tham gia. Thông tin này cần được lưu trữ để chuyển đổi dự phòng trong trường hợp một node không thể thực hiện công việc, vì vậy chúng ta cần gửi công việc đến một node khác nếu node đó không khả dụng.
Một số điều tôi vừa giải thích, tôi chỉ tập trung vào bốn điều vì nó dễ nắm bắt. Dễ nhớ khi, bởi vì tôi muốn bạn nhớ điều gì đó sau bài nói này, mặc dù hôm qua rất thú vị. Và có một số điều dễ nhớ, ba, bốn điều mà mọi người thường nhớ.
Và đây là một số điều tôi sẽ tập trung. Các API cụ thể, hãy gọi chúng là các mảnh ghép của bức tranh ghép mà các nhà phát triển Artifactory HA đã áp dụng trong sản phẩm. Vì vậy, chúng ta sẽ nói về khóa phân tán cung cấp truy cập đồng thời qua các tài nguyên chia sẻ. Tài nguyên chia sẻ như các tệp nhị phân. Chúng ta sẽ nói về bản đồ phân tán cung cấp cache phân tán cho một số thông tin metadata trong Artifactory HA. Một chủ đề phân tán cung cấp khung để thực hiện thông báo phân tán cho các thành phần khác nhau. Trình nghe thành viên cho phép nhận thông tin khi một thành viên tham gia hoặc rời khỏi hoặc một số thông tin về thành viên đã thay đổi. Thêm vào đó, tôi sẽ nói về một cái gọi là Discovery SPI.
Tại sao lại là Hazelcast? Và Hazelcast thực chất là gì. Hazelcast về cơ bản cũng
