Xây Dựng Hệ Thống Với Spring Boot: Đồ Án Môn Học Công Nghệ Phần Mềm

Đồ án nghiên cứu 1 xây dựng hệ thống với spring boot, áp dụng công nghệ tiên tiến, tối ưu giải pháp kỹ thuật cho bài toán kỹ thuật.

Chuyên ngành

Công Nghệ Phần Mềm

Người đăng

Ẩn danh

Thể loại

đồ án

2023

109
18
0

Phí lưu trữ

35 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI

1.1. Động lực nghiên cứu

1.2. Mục tiêu và phạm vi nghiên cứu

1.3. Tóm tắt đồ án

1.4. Bố cục báo cáo

2. CHƯƠNG 2: THIẾT KẾ HỆ THỐNG

2.1. Tổng quan về thiết kế hệ thống

2.2. Các nguyên lý thiết kế hệ thống

2.2.1. Tính mở rộng – Scalability

2.2.2. Tính khả dụng – Availability

2.2.3. Tính tin cậy – Reliability

2.2.4. Tính bảo trì – Maintainability

2.2.5. Tính nhất quán – Consistency

2.2.6. Tính hồi phục – Fault Tolerance

3. CHƯƠNG 3: BỘ CÂN BẰNG TẢI

3.1. Khái niệm bộ cân bằng tải

3.2. Phân loại bộ cân bằng tải

3.3. Triển khai bộ cân bằng tải

3.3.1. Bộ cân bằng tải phần cứng

3.3.2. Bộ cân bằng tải phần mềm

3.3.3. Các loại mẫu triển khai

4. CHƯƠNG 4: CƠ SỞ DỮ LIỆU

4.1. Tổng quan về cơ sở dữ liệu

4.2. Các loại cơ sở dữ liệu

4.2.1. Cơ sở dữ liệu quan hệ

4.2.2. Cơ sở dữ liệu không quan hệ

4.2.3. Cơ sở dữ liệu “key-value”

4.2.4. Cơ sở dữ liệu “document”

4.2.5. Cơ sở dữ liệu “Graph”

4.2.6. Cơ sở dữ liệu cột “Columnar”

4.3. Cách chọn cơ sở dữ liệu phù hợp

5. CHƯƠNG 5: GIAO DỊCH PHÂN TÁN

5.1. Tổng quan về giao dịch

5.2. Xác nhận 2 pha “2-Phase Commit” (2PC)

5.3. Xử lý lỗi người tham gia

5.4. Tính chặn (Blocking) trong giao thức 2PC

5.5. Xác nhận 3 pha “3-Phase Commit”

5.6. Các vấn đề của 2PC

5.7. Giải quyết vấn đề 2PC bằng 3PC

5.8. Lợi ích của 3PC

5.9. Lỗi Phân mảnh mạng trong 3PC

5.10. So sánh Two-phase commit/Three-phase commit và Saga

6. CHƯƠNG 6: BỘ NHỚ ĐỆM

6.1. Tổng quản về bộ nhớ đệm

6.2. Chức năng Hash. Danh sách liên kết

6.3. Bộ nhớ đệm vô hiệu hóa

6.4. Các mẫu thiết kế bộ nhớ đệm

6.4.1. Bộ nhớ đệm “Read-aside”

6.4.2. Bộ nhớ đệm “Write-aside”

6.4.3. Bộ nhớ đệm “Read-through”

6.4.4. Bộ nhớ đệm “Write-through”

6.4.5. Bộ nhớ đệm “Write-back”

6.4.6. Bộ nhớ đệm “Write-around”

7. CHƯƠNG 7: SERVICE DISCOVERY & API GATEWAY

7.1. Tổng quan về Service Discovery

7.2. Phân loại Service Discovery

7.3. Client side Service Discovery

7.4. Server side Service Discovery

7.5. Phân loại hình thức đăng ký

7.6. Đăng ký bên thứ 3

7.7. Tổng quan về API Gateway

8. CHƯƠNG 8: CONSENSUS

8.1. Định nghĩa về vấn đề Consensus

8.2. Các use-case của sự thống nhất

8.3. Bầu chọn leader

8.4. Khóa phân phối

8.5. Truyền tải nguyên tử. Thuật toán Raft

8.5.1. Khái quát về Raft

8.5.2. Giao tiếp giữa các nút Raft

8.5.3. Cơ chế giao tiếp

8.5.4. Sự phân kỳ giữa các nút

8.5.5. Giải quyết sự phân kỳ

8.5.6. Ưu và nhược điểm của Raft

9. CHƯƠNG 9: DEPLOYMENT

9.1. Các vấn đề khi triển khai một hệ thống

9.2. Các mẫu triển khai

9.2.1. Multiple Service Instances per Host

9.2.2. Single Service Instance per Host

9.3. Tổng quan về Docker

9.4. Triển khai microservices với Docker

9.5. Tổng quan về Kubernetes

9.6. Tổng quan về Helm

10. CHƯƠNG 10: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG SPRING BOOT

10.1. Tổng quan về Spring

10.2. Tổng quan về Spring Boot

10.3. Các tính năng chính của Spring Boot

10.4. Kiến trúc của Spring Boot. Spring Boot starter

10.5. Spring Data JPA

10.6. Spring Config Server

10.7. Spring Boot với Eureka

10.8. Sping Cloud Gateway

10.9. Spring Boot Cache

10.10. Spring Boot Actuator

10.11. Spring Boot Security, OAuth2, JWT. Spring Boot Security

10.12. Spring Cloud Resilience4j

10.13. Spring Boot với Feign

10.14. Spring Boot với docker

11. CHƯƠNG 11: DEMO VÀ TỔNG KẾT

11.1. Hướng dẫn cài đặt và chạy ứng dụng

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Giới thiệu về Xây Dựng Hệ Thống Với Spring Boot

Xây dựng hệ thống với Spring Boot là một chủ đề quan trọng trong lĩnh vực công nghệ phần mềm. Spring Boot cung cấp một nền tảng mạnh mẽ cho việc phát triển ứng dụng web và dịch vụ RESTful API. Việc áp dụng Spring Boot giúp tối ưu hóa quy trình phát triển, giảm thiểu thời gian và công sức cho lập trình viên. Đồ án này sẽ khám phá các khía cạnh quan trọng của việc xây dựng hệ thống với Spring Boot, từ thiết kế đến triển khai.

1.1. Động lực nghiên cứu về Spring Boot

Nhu cầu phát triển ứng dụng ngày càng tăng đã thúc đẩy việc nghiên cứu và áp dụng Spring Boot. Nền tảng này không chỉ giúp xây dựng ứng dụng nhanh chóng mà còn đảm bảo tính mở rộng và khả năng bảo trì cao.

1.2. Mục tiêu và phạm vi nghiên cứu

Mục tiêu của đồ án là nắm rõ cấu trúc và các thành phần trong Spring Boot, đồng thời xây dựng ứng dụng áp dụng kiến trúc Microservice. Phạm vi nghiên cứu sẽ tập trung vào các thành phần chính của Spring Boot và cách tích hợp chúng.

II. Thách thức trong Xây Dựng Hệ Thống Với Spring Boot

Mặc dù Spring Boot mang lại nhiều lợi ích, nhưng việc xây dựng hệ thống cũng gặp phải nhiều thách thức. Các vấn đề như tính khả dụng, độ tin cậy và khả năng mở rộng là những yếu tố cần được xem xét kỹ lưỡng. Đồ án sẽ phân tích các thách thức này và đề xuất giải pháp phù hợp.

2.1. Vấn đề về tính khả dụng

Tính khả dụng là một yếu tố quan trọng trong bất kỳ hệ thống nào. Hệ thống cần đảm bảo hoạt động liên tục và đáp ứng yêu cầu của người dùng mà không gặp sự cố.

2.2. Độ tin cậy và khả năng mở rộng

Độ tin cậy của hệ thống ảnh hưởng trực tiếp đến trải nghiệm người dùng. Hệ thống cần có khả năng mở rộng để đáp ứng nhu cầu ngày càng tăng mà không làm giảm hiệu suất.

III. Phương Pháp Xây Dựng Hệ Thống Với Spring Boot

Để xây dựng hệ thống hiệu quả với Spring Boot, cần áp dụng các phương pháp và nguyên lý thiết kế hợp lý. Việc sử dụng kiến trúc Microservices và các công cụ hỗ trợ như Docker và Kubernetes sẽ giúp tối ưu hóa quy trình phát triển.

3.1. Kiến trúc Microservices

Kiến trúc Microservices cho phép phát triển ứng dụng theo từng dịch vụ nhỏ, giúp dễ dàng bảo trì và mở rộng. Spring Boot hỗ trợ tốt cho việc triển khai kiến trúc này.

3.2. Sử dụng Docker và Kubernetes

Docker và Kubernetes là những công cụ mạnh mẽ giúp triển khai và quản lý các dịch vụ trong hệ thống. Việc tích hợp chúng với Spring Boot sẽ nâng cao khả năng triển khai và quản lý ứng dụng.

IV. Ứng Dụng Thực Tiễn Của Spring Boot Trong Xây Dựng Hệ Thống

Việc áp dụng Spring Boot trong xây dựng hệ thống đã mang lại nhiều kết quả tích cực. Các ứng dụng thực tiễn cho thấy Spring Boot giúp cải thiện hiệu suất và khả năng bảo trì của hệ thống.

4.1. Các dự án thành công với Spring Boot

Nhiều công ty lớn đã áp dụng Spring Boot để phát triển các ứng dụng quy mô lớn, từ thương mại điện tử đến dịch vụ tài chính, cho thấy tính linh hoạt và hiệu quả của nền tảng này.

4.2. Kết quả nghiên cứu và phân tích

Các nghiên cứu cho thấy rằng việc sử dụng Spring Boot không chỉ giúp tiết kiệm thời gian phát triển mà còn nâng cao chất lượng sản phẩm cuối cùng.

V. Kết Luận và Tương Lai Của Xây Dựng Hệ Thống Với Spring Boot

Xây dựng hệ thống với Spring Boot là một xu hướng đang phát triển mạnh mẽ trong ngành công nghệ phần mềm. Tương lai của Spring Boot hứa hẹn sẽ mang lại nhiều cải tiến và tính năng mới, giúp lập trình viên dễ dàng hơn trong việc phát triển ứng dụng.

5.1. Xu hướng phát triển của Spring Boot

Với sự phát triển không ngừng của công nghệ, Spring Boot sẽ tiếp tục được cải tiến để đáp ứng nhu cầu ngày càng cao của thị trường.

5.2. Tầm quan trọng của việc nghiên cứu và áp dụng

Việc nghiên cứu và áp dụng Spring Boot không chỉ giúp nâng cao kỹ năng cá nhân mà còn đóng góp vào sự phát triển chung của ngành công nghệ thông tin.

10/07/2025

Trích đoạn nội dung tài liệu

Chương 1: GIỚI THIỆU ĐỀ TÀI 1. Động lực nghiên cứu Trong bối cảnh Internet ngày càng được nhiều người dùng trên toàn thế giới sử dụng, vì vậy các ứng dụng trên toàn thế giới phải phát triển và xây dựng thành nhiều mô hình hệ thống mới và có khả năng đáp ứng số lượng nhu cầu người dùng lớn. Spring Boot là sự lựa chọn phù hợp để xây dựng các mô hình hệ thống vì độ phổ biến rộng rãi trong cộng đồng phát triển phần mềm. Nền tảng mạnh mẽ và linh hoạt của Spring Boot giúp tối ưu hiệu suất, dễ dàng triển khai ứng dụng và cung cấp công cụ hỗ trợ đáng tin cậy.

Khả năng học hỏi liên tục từ cộng đồng và tiềm năng việc làm cao làm cho việc nghiên cứu và áp dụng Spring Boot mang lại lợi ích lớn, đặc biệt là khi cung cấp kiến thức và kỹ năng cần thiết cho ngành công nghiệp công nghệ thông tin ngày càng đòi hỏi. Mục tiêu và phạm vi nghiên cứu Mục tiêu: - Nắm rõ cấu trúc, kiến thức về các thành phần trong Spring Boot. - Xây dựng ứng dụng đơn giản áp dụng kiến trúc Microservice với Spring Boot. Phạm vi: - Tìm hiểu các thành phần trong Spring Boot.

- Tìm hiểu và phân tích các thành phần của kiến trúc Microservice. Tóm tắt đồ án Thiết kế hệ thống với các định nghĩa các thành phần và cách tích hợp chúng, các giao diện lập trình ứng dụng (APIs), và mô hình dữ liệu (data model) để xây dựng kiến trúc Microservice đáp ứng các yêu cầu về chức năng và phi chức năng. Xây dựng ứng dụng áp dụng kiến trúc Microservice có độ tin cậy (reliable), hiệu quả, và dễ bảo trì cùng với những đặc điểm khác. Bố cục báo cáo Phần còn lại của báo cáo được trình bày theo bố cục sau: Chương 2 – Thiết kế hệ thống Chương 3 – Bộ cân bằng tải Chương 4 – Cơ sở dữ liệu Chương 5 – Giao dịch phân tán 1 Chương 6 – Bộ nhớ đệm Chương 7 – Service Discovery & API Gateway Chương 8 – Consensus Chương 9 – Deployment Chương 10 – Thiết kế và xây dựng hệ thống với Spring Boot Chương 11 – Demo và tổng kết 2 Chương 2: THIẾT KẾ HỆ THỐNG 2.

Tổng quan về thiết kế hệ thống Thiết kế hệ thống sử dụng các khái niệm trong lĩnh vực mạng máy tính (Computer Networking), tính toán song song (Parallerl Computing) và hệ thống phân tán (Distributed systems) để xây dựng những hệ thống có khả năng mở rộng và hiệu suất cao.1: Thiết kế hệ thống Thiết kế hệ thống có mục đích xây dựng những hệ thống có độ tin cậy (reliable), hiệu quả, và dễ bảo trì cùng với những đặc điểm khác. - Hệ thống hiệu quả là hệ thống đáp ứng tất cả các nhu cầu của người dùng và yêu cầu kinh doanh. - Hệ thống đáng tin cậy là hệ thống có khả năng xử lý lỗi, sự cố và sai sót. - Hệ thống dễ bảo trì là hệ thống linh hoạt và dễ dàng mở rộng hoặc thu nhỏ.

Khả năng thêm tính năng mới cũng nằm trong phạm vi của tính dễ bảo trì. Các nguyên lý thiết kế hệ thống 2. Tính mở rộng – Scalability 3 Scalability là khả năng mở rộng của hệ thống quy trình hay mạng lưới với nhu cầu gia tăng về số lượng công việc tăng theo thời gian của mô hình kinh doanh. Mô hình kinh doanh có thể mở rộng quy mô vì nhiều lý do như: - Gia tăng khối lượng dữ liệu lưu trữ.

- Gia tăng về số lượng yêu cầu và khối lượng công việc. Ví dụ: số lượng truy cập hay đặt hàng của một hệ thống thương mại điện tử. Và yêu cầu của sự mở rộng phải đạt được nhu cầu này mà không làm giảm hiệu suất, nói chung Scalability là đáp ứng được sử mở rộng hay giảm theo kích thước của hệ thống theo thời gian. Có hai dạng scaling là mở rộng theo chiều ngang (vertical scaling) và mở rộng theo chiều dọc (horizontal scaling).

- Tính mở rộng theo chiều dọc (Vertical scaling/ Scaling Up): là cách mở rộng server hiện tại bằng cách nâng cấp độ mạnh (power) bằng cách nâng cấp CPU, Ram, Storage, v.v… Vertical-scaling cho phép chúng ta mở rộng năng xuất của phần cứng và phần mềm, nhưng thường bị giới hạn bởi giới hạn về cấu hình vật lý hiện đại hay độ trễ khi “chẳng may” Server bị downtime để nâng cấp hay triển khai hệ thống. Chi phí cho việc vertical scaling thường đắt đỏ. - Tính mở rộng theo chiều ngang (Horizontal Scalability/ Scaling Out): Horizontal scalability là một phương pháp mở rộng hệ thống bằng cách tăng số lượng máy chủ hoặc nodes trong mạng. Nó còn được gọi là "scaling out." Phương pháp này đối phó với việc gia tăng tải lên hệ thống bằng cách thêm nhiều máy chủ hoặc nodes khác nhau vào mạng.

Horizontal scalability tập trung vào việc mở rộng hệ thống mà không cần tăng cường cấu trúc của máy chủ hiện tại.2: Minh họa mở rộng theo chiều dọc và ngang Song, horizontal scaling cũng phức tạp hóa mô hình kiến trúc của hệ thống do phải điều phối hoạt động của nhiều server riêng biệt và vận hành như một bộ máy duy nhất. Kiến trúc này được biết đến với tên gọi Hệ thống phân tán (Distributed system) và là cơ sở cho ra đời một họ các mô hình kiến trúc sau này như Distributed monolith, Microservices,. cùng với đó là rất nhiều vấn đề cực kỳ phức tạp và khó giải quyết khác. Khi nhắc đến scalability, hầu hết ta luôn muốn nói đến khả năng horizontal scaling của hệ thống.

Tính khả dụng – Availability Tính khả dụng là một chỉ số đo lường phần trăm thời gian mà một dịch vụ hoặc một hệ thống nào đó có thể truy cập được bởi khách hàng và hoạt động trong điều kiện bình thường. Nó đo lường mức độ hoạt động và xử lý của hệ thống ở trạng thái bình thường trong suốt một khoảng thời gian nhất định. Chẳng hạn, nếu một dịch vụ có khả dụng 100%, điều đó có nghĩa rằng dịch vụ đó luôn sẵn sàng hoạt động, xử lý và phản hồi các yêu cầu. Cách tính toán tính khả dụng Trong toán học, tính khả dụng A được biểu thức dưới dạng tỉ lệ.

Tỉ lệ A càng cao càng tốt. Chúng ta cũng có thể biểu thức điều này bằng một công thức: 5 Chúng ta đo lường mức độ khả dụng (availability) bằng cách sử dụng số lượng "9" Cụ thể, số lượng "9" thể hiện mức độ chính xác của khả dụng và cho biết bao nhiêu thời gian ngừng hoạt động được phép trong khoảng thời gian nhất định. Dưới đây là một bảng thể hiện mức độ khả dụng tương ứng với số lượng "9" và thời gian ngừng hoạt động được phép: Hình 2.3: Bảng mức độ khả dụng 2. Tính tin cậy – Reliability Độ tin cậy đề cập đến khả năng của dịch vụ hoặc hệ thống thực hiện các chức năng của nó trong một khoảng thời gian cụ thể mà không gặp sự cố hoặc gián đoạn.

Điều này có nghĩa rằng độ tin cậy đo lường xem dịch vụ hoạt động đáng tin cậy như thế nào dưới các điều kiện hoạt động khác nhau. Chúng ta thường sử dụng MTBF và MTTR như một thông số để đo lường độ tin cậy.4: Công thức tính các thông số đo lường Một hệ thống có độ tin cậy cao khi có giá trị MTBF cao và MTTR thấp Độ tin cậy và tính sẵn sàng là hai chỉ số quan trọng để đo lường sự tuân thủ của dịch vụ dựa trên Service Level Objectives - SLO. Đo lường tính khả dụng (availability) dựa vào thời gian mất mát, trong khi tần suất và tác động của các sự cố dùng để đo lường tính đáng tin cậy (reliability). Cả tính sẵn sàng và tính đáng tin cậy đều quan trọng vì chúng cho phép các bên liên quan đánh giá tình trạng và khả năng hoạt động của dịch vụ.

Độ tin cậy (Reliability - R) và tính khả dụng (Availability - A) là hai khái niệm riêng biệt, nhưng chúng có mối quan hệ. Trong toán học, tính sẵn sàng (A) là một hàm số của độ tin cậy (R). Điều này có nghĩa rằng giá trị của R có thể thay đổi độc lập và giá trị của A phụ thuộc vào R. Do đó, có thể xảy ra tình huống mà: - A thấp, R thấp - A thấp, R cao - A cao, R thấp - A cao, R cao (mong muốn) 7 Hình 2.5: Biểu đồ phụ thuộc giữa tính khả dụng và tính tin tưởng 2.

Tính bảo trì – Maintainability Tính bảo trì (Maintainability), ký hiệu là M, là xác suất mà dịch vụ sẽ khôi phục lại các chức năng của nó trong một khoảng thời gian cụ thể sau khi xảy ra lỗi. M đo đo lường khả năng của dịch vụ làm cho mình trở lại tình trạng hoạt động bình thường một cách thuận tiện và nhanh chóng. Khả năng bảo trì mang lại cho chúng ta cái nhìn về khả năng của hệ thống để trải qua quá trình sửa chữa và chỉnh sửa trong khi nó đang hoạt động. Ví dụ, giả sử một thành phần có giá trị bảo trì được xác định là 95% trong vòng nửa giờ.

Trong trường hợp này, xác suất khôi phục thành phần về trạng thái hoạt động hoàn toàn trong nửa giờ là 0,95. Chúng ta sử dụng mean time to repair (MTTR) như là chỉ số để đo lường M.6: Công thức tính toán thời gian trung bình để sữa chửa Trong đó: - Mean Time To Repair: Thời gian trung bình để sửa chữa - Total Maintenance Time: Tổng thời gian bảo trì - Total Number of Repairs: Tổng số lượng sửa chữa Nói cách khác, MTTR là thời gian trung bình cần thiết để sửa chữa và khôi phục một thành phần bị lỗi. Mục tiêu của chúng ta là có giá trị MTTR thấp nhất có thể. Tính nhất quán – Consistency Tính nhất quán (Consistency) là một thuộc tính quan trọng trong hệ thống phân tán, đảm bảo rằng tất cả các máy chủ (server) trong cụm (cluster) luôn duy trì cùng một trạng thái và dữ liệu vào một thời điểm cố định, bất kể client nào đã thực hiện cập nhật dữ liệu.

Tính nhất quán cao có nghĩa là hệ thống phân tán sẽ đồng thuận đến một trạng thái duy nhất và cho phép client luôn đọc được dữ liệu mới nhất. Tính nhất quán của hệ thống phụ thuộc vào việc nó tuân theo định lý CAP – định lý nêu rằng một hệ thống phân tán (distributed system) không thể thỏa mãn cả ba yếu tố CAP: - Consistency: Tính nhất quán, các máy chủ trong một hệ thống phải có dữ liệu đồng nhất. - Availability: Khả năng sẵn sàng, hệ thống vẫn hoạt động được khi một số máy chủ bị chết hoặc không sẵn sàng.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ