1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài tìm hiểu về git dưới góc nhìn của hệ phân tán

23 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Về Git Dưới Góc Nhìn Của Hệ Phân Tán
Tác giả Nguyễn Thành Bắc, Trương Văn Hiển, Đinh Trọng Nghĩa, Nguyễn Trường Sơn
Người hướng dẫn TS. Đặng Tuấn Linh
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Các Hệ Thống Phân Tán Và Ứng Dụng
Thể loại Bài Tập Lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 2,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khái niệm về GitGit là tên gọi của một Hệ thống quản lý phiên bản phân tán Distributed Version Control System – DVCS là một trong những hệ thống quản lý phiên bản ph

Trang 1

TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO BÀI TẬP LỚN Đề tài: Tìm hiểu về Git dưới góc nhìn của Hệ phân tán

Lớp : 132666

Học phần : Các hệ thống phân tán và ứng dụng

Mã học phần

:

IT4611

Giảng viên hướng dẫn : TS Đặng Tuấn Linh

Danh sách thành viên nhóm:

Trang 2

PHÂN CÔNG THÀNH VIÊN TRONG NHÓM

ST

T

côngviệc làm

1 Nguyễn Thành Bắc 20194229 bac.nt19

4229@sis.hust.edu.vn

 Kiến trúc hệ phân tán

 Trao đổi thông tin

 Cơ chế định danh

 Cơ chế đồng bộ hóa

25%

3 Đinh Trọng Nghĩa 20194340 nghia.dt

194340

@sis.hust.edu.vn

 Tính nhân bản

 Tính nhất quán

25%

4 Nguyễn Trường Sơn 20194364 son.nt19

4364@sis.hust.edu.vn

 Tính chịu lỗi của hệ

phân tán

25%

Trang 3

MỤC LỤC

LỜI MỞ ĐẦU 4

CHƯƠNG 1: KIẾN TRÚC HỆ PHÂN TÁN 5

1.1 Khái niệm về Git 5

1.2 Các lợi thế của Git 5

1.3 Đặc tính phi tập trung nhưng mang tính tập trung của Git 5

1.4 Hệ thống quản lý phiên bản (Version Control System – VCS) 6

1.5 Mô hình quản lý source phân tán 7

1.6 So sánh mô hình quản lý source CVS – SVN 8

CHƯƠNG 2: TRAO ĐỔI THÔNG TIN 10

CHƯƠNG 3: CƠ CHẾ ĐỊNH DANH 11

CHƯƠNG 4: CƠ CHẾ ĐỒNG BỘ HÓA 14

CHƯƠNG 5: TÍNH NHÂN BẢN VÀ NHẤT QUÁN 18

5.1 Tính nhân bản 18

5.2 Tính nhất quán 19

5.2.1 Quản lý dữ liệu trong Git 19

5.2.2 Các trạng thái trong Git 19

CHƯƠNG 6: TÍNH CHỊU LỖI CỦA HỆ PHÂN TÁN 22

DANH MỤC TÀI LIỆU THAM KHẢO 23

Trang 4

LỜI MỞ ĐẦU

Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem là một trong những yếu tố mang tính quyết định trong hoạt động của các chính phủ, tổ chức,cũng như của các công ty, nó đóng vai trò hết sức quan trọng, có thể tạo ra những bước đột phá mạnh mẽ

Cùng với sự phát triển không ngừng về kỹ thuật máy tính và mạng điện tử, công nghệ thông tin cũng được những công nghệ có đẳng cấp cao và lần lượt chinh phục hết đỉnh cao này đến đỉnh cao khác Mạng Internet là một trong những sản phẩm có giá trị hết sức lớn lao và ngày càng trở thành một công cụ không thể thiếu, là nền tảng chính cho sự truyền tải, trao đổi thông tin trên toàn cầu

Giờ đây, mọi việc liên quan đến thông tin trở nên thật dễ dàng cho người sử dụng, chỉ cần có một máy tính kết nối Internet và một dòng dữ liệu truy tìm thì gần như lập tức vấn đề mà bạn đnag quan tâm sẽ hiện ra, có đầy đủ thông tin, hình ảnh vàthậm chí đôi lúc có cả những âm thanh nếu bạn cần

Trong hoạt động công nghệ thông tin, Git là một dịch vụ nổi tiếng cung cấp kho lưu trữ mà nguồn cho các dự án phần mềm Ngoài ra còn là công cụ bổ sung những tính năng về social để các developer tương tác với nhau

Với lý do đó, nhóm chúng em đã chọn đề tài “Tìm hiểu Git dưới góc nhìn

của Hệ phân tán” làm đề tài cho Bài tập lớn môn học của mình.

Mặc dù đã cố gắng hoàn thiện sản phẩm nhưng không thể tránh khỏi những thiếu hụt về kiến thức và sai sót trong kiểm thử Chúng em rất mong nhận được những nhận xét thẳng thắn, chi tiết đến từ thầy để tiếp tục hoàn thiện hơn nữa Cuối

cùng, nhóm chúng em xin được gửi lời cảm ơn đến thầy TS Đăng Tuấn Linh đã

hướng dẫn chúng em trong suốt quá trình hoàn thiện Bài tập lớn Nhóm chúng em xin chân thành cảm ơn thầy

Trang 5

CHƯƠNG 1: KIẾN TRÚC HỆ PHÂN TÁN

1.1 Khái niệm về Git

Git là tên gọi của một Hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS) là một trong những hệ thống quản lý phiên bản phân tán phổ biến nhất hiện nay

1.2 Các lợi thế của Git

- Mã nguồn mở và miễn phí.

- Tốc độ nhanh và nhỏ gọn.

- Dự phòng (sao lưu) ẩn.

- An toàn cao.

- Không yêu cầu phần cứng mạnh.

- Phân nhánh dễ dàng hơn.

1.3 Đặc tính phi tập trung nhưng mang tính tập trung của Git

Trong khi mỗi lập trình triển khai một tính năng thuộc hệ thống rồi sau đó mới đẩy về kho trung tâm Mô hình rất hiệu quả trong các dự án đều sở hữu một kho code đầy đủ thì Git cho thiết lập một kho trung tâm thực sự, tất cả các lập trình viên đều có thể kéo (pull) các thay đổi từ đó về kho của mình, và đẩy (push) các thay đổi về kho trung tâm Tuy nhiên, bên cạnh những mối quan hệ pull-push tập trung, mỗi nhà phát triển cũng có thể kéo (pull) thay đổi từ các đồng nghiệp để tạo thành các nhóm nhỏ hơn.

Ví dụ minh họa dưới đây cho thấy một dự án với 1 kho code trung tâm và

4 người, họ hình thành 3 nhóm nhỏ hơn là nhóm của A-B, A-C, B-D Mỗi nhóm này có thể phụ trách phá án lớn.

Trang 6

1.4 Hệ thống quản lý phiên bản (Version Control System – VCS)

Hệ thống quản lý phiên bản (Version control system – VCS) là một dạng phần mềm Quản lý mã nguồn (Source Code Management – SCM).

Vì sao phải sử dụng VCS : VCS là hệ thống hỗ trợ làm việc theo nhóm rất hiệu quả Khi một nhóm làm việc cùng trên một dự án (project), việc nhiều người cùng chỉnh sửa nội dung của một tệp tin là điều không thể tránh khỏi Việc chỉnh sửa như vậy sẽ tạo ra các phiên bản (Versions/Revisions) khác nhau và phát sinh nhu cầu quản lý chúng VCS ra đời để cung cấp các chức năng để có thể thực hiện việc này một cách đơn giản và an toàn.

Chức năng của VCS :

- Lưu lại lịch sử thay đổi của file.

- Làm việc đồng thời.

- Phân nhánh và hợp nhất.

- Truy xuất nguồn gốc

Trang 7

1.5 Mô hình quản lý source phân tán

Git có thể nói là một hướng tiếp cận hoàn toàn mới so với SVN (CVS và SVN theo hướng CENTRALIZED - quản lý source code tập trung, còn Git theo hướng DISTRIBUTED - quản lý source code phân tán) Chúng ta thường dùng SVN chắc đã hiểu khái niệm CENTRALIZED là gì rùi, vậy thì DISTRIBUTED sẽ như thế nào đây: Với một vài hệ thông như Git và ngay cả CVS và SVN, repository gốc sẽ được lưu trữ trên server và lập trình viên sẽ checkout về một bản copy mới nhất từ source code trên server đó để làm việc Và khi ta muốn apply thay đổi của ta từ local ta sẽ send yêu cầu đó lên server Đó chính là nguyên tắc chung của source control

Source control ra đời để phục vụ nhu cầu cho nhiều hơn một developer để họ có thể làm việc với nhau trên cùng một project Mỗi một developer sẽ có một source code và làm việc với nó, và cập nhật thay đổi của mình cho những người khác trong team biết Việc cập nhật thay đổi của bạn đến server là theo nguyên lý của SVN và CVS, tức là không phân tán vì tất cả thay đổi đều tập trung ở server Việc quản lý tập trung yêu cầu quyền truy cập đến server khi ta commit hoặc update từ những thành viên khác, chính họ cũng đưa thay đổi của mình lên server (để tránh conflic hoặc out of update)

Git hoàn toàn đối lập: Quản lý phân tán của Git là một repositories không cần có chung một nơi để lưu trữ, mà mỗi thành viên sẽ có một repository ở local của họ.

Tất cả thao tác ta làm việc với Git đều ở trên máy của ta, local repository, khi quyết định đưa những thay đổi đó lên server ta chỉ cần một thao tác "push" nó lên server Chúng ta vẫn có thể share thay đổi của chúng ta cho thành viên khác, bằng cách commit hoặc update trực tiếp từ máy của họ mà không phải thông qua repositories gốc trên server (thông qua share ssh cho nhau) Và dĩ nhiên là mọi thao tác đều mang theo thông tin history với Git

Trang 8

Tính phân tán thì an toàn hơn so với tập trung, vì mỗi bản copy của thành viên đều là full copy từ repository gốc, khi server bị down, các thành viên vẫn có thể làm việc offline, họ vẫn có thể commit và update trên local của họ hoặc thậm chí với nhau mà không cần thông qua server Khi server hoạt động trở lại, họ có thể cập nhật tất cả lên lại server Với mô hình Git, mỗi thành viên tham gia git sẽ có một repository trên local của họ.

1.6 So sánh mô hình quản lý source CVS – SVN

CVS (Concurrent Versions System) và SVN (SubVersioN) với mô hình quản lý source code tập trung, là hai phiên bản được sử dụng phổ biến hiện nay Các hệ thống này cho phép các cộng tác viên theo dõi sự thay đổi đang thực hiện và biết ai đang phát triển nhánh nào của source code CVS ra đời trước, sau đó đến sự bùn nổ của SVN SVN bản chất vẫn là CVS được cải tiến, nhưng có nhiều công cụ hỗ trợ hơn Cả CVS và SVN đều có tư tưởng chung về cách làm việc chung giữa các thành viên theo mô hình (quản lý source code tập trung) như sau:

- Sự cải thiện lớn nhất của SVN từ CVS là bổ sung việc commit của các thành viên được gọi là Atomic Commit Atomic Commit cho phép mỗi commit từ thành viên được upate đầy đủ hoặc không có gì cả, điều này rất có ý nghĩa khi máy chủ bị treo trong lúc commit Với CVS khi máy chủ bị treo hay kết nối bị trục trặc thì việc commit có thể bị dở dang, không đầy đủ.

- Với SVN, các commit có thể được roll-back lại trạng thái trước đó, trong khi CVS thì không thể undo.

- Ngoài ra SVN tiện lợi hơn CVS trong việc đổi tên và di chuyển các tập tin, thư mục Với SVN các tập tin được đổi tên hoặc loại bỏ vẫn mang theo đầy đủ history và meta data của nó trước đó, trong khi đó với CVS thì tập tin bị đổi tên hoặc di chuyển sẽ bị mất history trước đó CVS cũng không thể đẩy bất cứ những thay đổi mới đến repositories cha mà chỉ có thể đẩy lên repositories con của nó, trong khi một số công cụ SVN có khả năng này.

Trang 9

- Ngoài ra SVN tiện lợi hơn CVS trong việc đổi tên và di chuyển các tập tin, thư mục Với SVN các tập tin được đổi tên hoặc loại bỏ vẫn mang theo đầy đủ history và meta data của nó trước đó, trong khi đó với CVS thì tập tin bị đổi tên hoặc di chuyển sẽ bị mất history trước đó CVS cũng không thể đẩy bất cứ những thay đổi mới đến repositories cha mà chỉ có thể đẩy lên repositories con của nó, trong khi một số công cụ SVN có khả năng này.

Trang 10

CHƯƠNG 2: TRAO ĐỔI THÔNG TIN

Phần lớn các thao tác/hoạt động trong Git chỉ cần yêu cầu các tập tin hay tài nguyên cục bộ - thông thường nó sẽ không cần bất cứ thông tin từ máy tính nào khác trong mạng lưới của bạn Nếu như ta quen với việc sử dụng các hệ thống quản lý phiên bản tập trung nơi mà đa số hoạt động đều chịu sự ảnh hưởng bởi độ trễ của mạng, thì với Git đó lại là một thế mạnh Bởi vì toàn bộ dự án hoàn toàn nằm trên ổ cứng, các thao tác được thực hiện gần như ngay lập tức

Ví dụ, khi muốn xem lịch sử của dự án, Git không cần phải lấy thông tin đó từ một máy chủ khác để hiển thị, mà đơn giản nó được đọc trực tiếp từ chính cơ sở dữ liệu cục b Điều này có nghĩa là ta có thể xem được lịch sử thay đổi của dự án gần nhưngay lập tức Nếu như ta muốn so sánh sự thay đổi giữa phiên bản hiện tại của một tậptin với phiên bản của một tháng trước, Git có thể tìm kiếm tập tin cũ đó trên máy cục bộ rồi sau đó so sánh sự khác biệt cho bạn Thay vì việc phải truy vấn từ xa hoặc "kéovề" (pull) phiên bản cũ của tập tin đó từ máy chủ trung tâm rồi mới thực hiện so sánh cục bộ

Điều này còn đồng nghĩa với có rất ít việc mà ta không thể làm được khi không có kết nối Internet hoặc VPN bị ngắt Nếu ta muốn làm việc ngay cả khi ở trên máy bay hoặc trên tầu, ta vẫn có thể commit bình thường cho tới khi có kết nối Internet để đồng bộ hoá Nếu ta đang ở nhà mà VPN lại không thể kết nối được, ta cũng vẫn có thể làm việc bình thường Trong rất nhiều hệ thống khác, việc này gần như là không thể hoặc rất khó khăn Ví dụ trong Perforce, ta gần như không thể làm gì nếu như không kết nối được tới máy chủ; trong Subversion và CVS, ta có thể sửa tập tin nhưngkhông thể commit các thay đổi đó vào cơ sở dữ liệu (vì cơ sở dữ liệu không được kết nối)

Trang 11

CHƯƠNG 3: CƠ CHẾ ĐỊNH DANH

- Git có một mục object được lưu trữ dùng để chứa file gốc và tất cả những tin nhắn log, chủ nhân file, ngày tạo và thông tin khác cần để tạo nên một sửa đổi hay nhánh cho dự án Có 3 thành phần quan trọng của object cần chú ý: type, size, content

 Size: kích cỡ của nội dung

 Content: dựa vào type (loại) của đối tượng

Type: loại đối tượng được chứa trong đường dẫn git/objects, gồm 4 loại khác

nhau, bao gồm:

o Blob: dùng để lưu file dữ liệu – là tập tin nhị phân của mỗi phiên bản file, đây còn là nguyên nhân dẫn đến sự gia tăng dung lượng của kho chứa

o Tree: là một đường dẫn

o Commit: giữ metadata cho mỗi lần file thay đổi trong kho lưu trữ, bao gồm chủ sở hữu, người gửi, dữ liệu commit, thông điệp nhật ký

o Tag: gán một tên có ý nghĩa mà người dùng đọc được cho một đối tượng cụ thể khi sử dụng commit

- Có một khái niệm liên quan đến cơ chế snapshot của Git là loose object format (định danh đối tượng trong suốt của git) Để thấy được thư mục đối tượng, người quản trị tạp 3 file lần lượt là 0.txt, 1.txt, 2.txt và sử dụng các lệnh commit, trong folder sẽ xuất hiện file git

Trang 12

- Git tạo 3 thư mục đường dẫn git/objects lần lượt là 53, ab, e6.

- Trong mỗi thư mục sẽ có chứa file mã băm gồm 40 kí tự với 2 kí tự là tên gọi của thư

mục đường dẫn, 38 kí tự còn lại được dùng như tên file, người dùng gõ lệnh “git

cat-file [-option] [ten_file]”, option được chọn ở đây là [-t]

 Lưu ý: ten_file phải bao gồm đủ 40 kí tự, tức là bao gồm cả 2 kí tự tên thư mục đường dẫn

- Chỉnh sửa nội dung tập tin, Git sẽ tạo thêm 5 tập tin trên những tập tin cũ

Trang 13

- Thông qua lệnh git cat-file [-t], các thư mục băm với hai kí tự đầu sẽ được hiển thị rõ

ràng nội dung cũng như tính năng tương tự

- Bất cứ khi nào người dùng commit, git đều chụp lại vào ổ đĩa giữa phiên bản cũ và phiên bản mới trong cùng một file, kể cả ta chỉ thay đổi một kí tự nội dung file

Trang 14

CHƯƠNG 4: CƠ CHẾ ĐỒNG BỘ HÓA

- Git và Github không hoàn toàn giống nhau, nhưng chúng thường được sử dụng cùng nhau, cụ thể như sau:

 Git là hệ thống kiểm soát phiên bản, là một phần của phần mềm Người dùng có thể tải phần mềm để sử dụng trên máy tính của mình hoặc để đồng bộ hóa một thư mục với một máy chủ trên web Theo mặc định, người dùng sử dụng terminal để đưa ra hướng dẫn cho Git thông qua các dòng lệnh

 Bạn có thể sử dụng ứng dụng người dùng/giao diện Git để không phải gõ lệnh và thực hiện các hành động tương tự (ít nhất là đối với những hành động đơn giản, rất thường dùng)

 Nếu muốn lưu trữ thư mục của mình trong một host website để cùng làm việc với những người khác, người dùng có thể tạo một tài khoản tại Github, Gitlab,Bitbucket hoặc những nền tảng khác

- Vì vậy, người dùng có thể sử dụng ứng dụng/giao diện Github Desktop, sử

dụng Git trong nền để quản lý các tệp của bạn, cả cục bộ trên máy tính của bạn và từ

xa trên máy chủ Github

- Kho lưu trữ cục bộ và từ xa:

 Clone (Nhân bản) là tạo một bản sao của kho lưu trữ Git ở một nơi khác.Ví dụ: người dùng có thể clone một kho lưu trữ trực tuyến từ Github xuống máy tính của mình hoặc bắt đầu với một kho lưu trữ cục bộ (local repository) và clone nó trực tuyến lên Github

Khi người dùng đã clone một kho lưu trữ, các tệp dự án tồn tại ở hai nơi:

o Kho lưu trữ cục bộ (local) trên máy tính của mình Đây là nơi người dùng thực hiện các thay đổi thực tế đối với các tệp/code

o Kho lưu trữ từ xa (remote), kho lưu trữ trực tuyến: các phiên bản của tệp dự án trên kho lưu trữ Github (hoặc trên bất kỳ nền tảng nào khác)

 Để đồng bộ hóa các kho này, chúng ta sẽ sử dụng nhiều hàm hơn Thật vậy, không giống như Sharepoint, Dropbox hoặc các phần mềm đồng bộ hóa khác,

Ngày đăng: 17/01/2024, 11:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w