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

Microservice Cho Doanh Nghiệp

50 6 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

Cấu trúc

  • 1 Tổng quan tài liệu

    • 1.1 Mục đích tài liệu

    • 1.2 Phạm vi tài liệu

    • 1.3 Thuật ngữ và viết tắt

  • 2 Mục Lục

    • 2.1 Công Nghệ Nền Tảng

      • 2.1.1 Triển khai đa nền tảng

      • 2.1.2 Tương thích với các thư viện backend hiện có của hệ sinh thái

      • 2.1.3 Yêu cầu về công nghệ và các thư viện - patterns áp dụng

    • 2.2 Chức Năng Kiến Trúc

      • 2.2.1 Mỗi service được cài đặt trên một máy chủ riêng biệt

      • 2.2.2 Áp dụng API Gateway điều hướng các service

    • 2.3 Triển Khai

      • 2.3.1 Triển Khai On -Primises (Triển khai máy chủ tại chỗ)

      • 2.3.2 Triển Khai Trên Cloud

    • 2.4 Quản Trị Microservice

      • 2.4.1 Thành phần trong microservice

      • 2.4.2 Công cụ quản lý Microservice

    • 2.5 Vận hành microservice

      • 2.5.1 Yêu cầu phần cứng

      • 2.5.2 Công cụ triển khai

      • 2.5.3 Yêu cầu nguồn lực

    • 2.6 Xử lý các sự cố trên microservie

      • 2.6.1 Phản hồi chậm

      • 2.6.2 Service ngừng hoạt động do quá tải hoặc timeout

      • 2.6.3 Lỗi đồng nhất dữ liệu trên các service

      • 2.6.4 Lỗi API Gateway

      • 2.6.5 Lỗi Connection refused

Nội dung

Tài liệu MICROSERVICE TÀI LIỆU MICROSERVICE Mục Lục 1 Tổng quan tài liệu 2 1 1 Mục đích tài liệu 2 1 2 Phạm vi tài liệu 2 1 3 Thuật ngữ và viết tắt 3 2 Mục Lục 3 2 1 Công Nghệ Nền Tảng 3 2 1 1 Triển k.

Tài liệu MICROSERVICE TÀI LIỆU MICROSERVICE Mục Lục Tổng quan tài liệu 1.1 Mục đích tài liệu 1.2 Phạm vi tài liệu 1.3 Thuật ngữ viết tắt Mục Lục 2.1 Công Nghệ Nền Tảng 2.1.1 Triển khai đa tảng 2.1.2 Tương thích với thư viện backend có hệ sinh thái 2.1.3 Yêu cầu công nghệ thư viện - patterns áp dụng 2.2 Chức Năng Kiến Trúc 2.2.1 Mỗi service cài đặt máy chủ riêng biệt 2.2.2 Áp dụng API Gateway điều hướng service 2.3 Triển Khai 29 2.3.1 Triển Khai On -Primises (Triển khai máy chủ chỗ) .29 2.3.2 Triển Khai Trên Cloud .31 2.4 Quản Trị Microservice 33 2.4.1 Thành phần microservice 33 Tài liệu MICROSERVICE 2.4.2 2.5 Vận hành microservice .43 2.5.1 Yêu cầu phần cứng .43 2.5.2 Công cụ triển khai 44 2.5.3 Yêu cầu nguồn lực .44 2.6 Công cụ quản lý Microservice 37 Xử lý cố microservie .45 2.6.1 Phản hồi chậm 45 2.6.2 Service ngừng hoạt động tải timeout 45 2.6.3 Lỗi đồng liệu service 46 2.6.4 Lỗi API Gateway 46 2.6.5 Lỗi Connection refused 47 TỔNG QUAN TÀI LIỆU 1.1 Mục đích tài liệu  Tài liệu nhằm đặc tả yêu cầu người sử dụng cho hệ thống microservice 1.2 Phạm vi tài liệu  Tài liệu dành cho Tech Lead, Dev, Devops,Software Architecture  Tài liệu tài liệu “Mô tả xây dựng hệ thống Microservice” với phần:  Công Nghệ Nền Tảng  Chức Năng Kiến Trúc Tài liệu MICROSERVICE  Triển Khai  Quản Trị  Vận Hành Kiến Trúc 1.3 Thuật ngữ viết tắt STT Thuật ngữ/ Viết tắt Ý nghĩa HA High Availability REDUN Redundancy(Dự phòng) RELIABILITY RELIABILITY (Độ tin cậy) CQRS Command and Query Responsibility Segregation FAO FAILOVER(Chuyển đổi dự phòng) REPLICATION REPLICATION(Sao chép) RESILIENCY RESILIENCY(Khả phục hồi) SCALABILITY SCALABILITY(Khả mở rộng) MICROSERVICE MIC 10 DDD DOMAIN-DRIVEN DESIGN MỤC LỤC 2.1 Công Nghệ Nền Tảng 2.1.1 Triển khai đa tảng  Microservice phù hợp triển khai tảng khác nhau,trên ngơn ngữ,database khác nhau,có thể triển khai windows lẫn linux,linh hoạt stack công nghệ Tài liệu MICROSERVICE 2.1.2 Tương thích với thư viện backend có hệ sinh thái  Các thư viện phiên Net 5.0 có khả tương thích với thư viện backend tại,1 số thư viện cũ cần điều chỉnh wrap lại upgrade lên version 2.1.3 Yêu cầu công nghệ thư viện - patterns áp dụng  Về u cầu cơng nghệ để triển khai,áp dụng mơ hình microservice cần tối thiểu ASP.NET Core API phiên >= 2.0 trở lên,ngồi cần có u cầu phần cứng,tối thiểu : Bộ xử lý : 64 bit - lõi, Ram : GB , Ổ cứng : 32 GB Theo khuyến nghị microsoft cộng đồng phát triển phiên Net 5.0 lựa chọn phù hợp cho việc nâng cấp phiên hợp NET Framework 4.8 NET Core 3.1 thành tảng cho tất loại ứng dụng gọi NET 5.0, NET phiên lớn NET 5.0 hỗ trợ lâu dài (LTS) nên phiên đánh giá hoạt động ổn định ,hỗ trợ hầu hết thư viện cũ từ phiên Net 3.0 Chúng ta sử dụng mẫu pattern mở rộng Domain-Driven Design CQRS để phát triển cho mơ hình microservice,lý chọn pattern : Domain-Driven Design CQRS xử lý toán phát triển phần mềm tập trung vào nghiệp vụ,mẫu pattern có 15 năm phát triển,có cộng đồng sử dụng rộng lớn nên ổn định,dễ triển khai mở rộng Chúng ta phát triển ứng dụng phục vụ theo nhu cầu khách hàng nên không hiểu yêu cầu hệ thống khách hàng Khi khách hàng giải thích hệ thống cho hiểu, họ giải thích domain Chính domain làm trọng tâm công việc Tài liệu MICROSERVICE xây dựng thành mơ hình tất người nắm vấn đề Do cần thiết kế cho khơng lập trình viên hiểu mà khách hàng, người khơng hiểu biết mặt kỹ thuật nhìn vào nắm trọng tâm vấn đề Về kiến trúc : CQRS sử mở rộng mô hình DDD Đặc trưng quan trọng CQRS việc tách hai phần logic đọc ghi liệu hai phần riêng biệt: Phần ghi liệu: thực qua việc send command tới handler thơng qua command bus Comand hanlder đóng vai trị tương tự domain service tương tác với model để thực nghiệp vụ thay đổi liệu Phần đọc liệu: thiết kế riêng không lệ thuộc vào model phần ghi liệu Do linh hoạt việc truy xuất database, sử dụng data source khác để tối ưu tốc độ truy xuất Tài liệu MICROSERVICE Tài liệu MICROSERVICE Với hệ thống lớn mơ hình CQRS giải tốt vấn đề:  Cho phép phát triển tối ưu phần đọc liệu riêng biệt với phần ghi liệu  Việc mô hình hố nghiệp vụ ghi liệu command cho phép che đậy tốt logic nghiệp vụ, giúp việc mở rộng dễ dàng  Tính sẵn sàng (high availability) tính qn mơ hình liệu  Cho phép xử lý nghiệp vụ logic phức tạp 2.2 Chức Năng Kiến Trúc 2.2.1 Mỗi service cài đặt máy chủ riêng biệt  Trong microservices, chức tách thành nhiều microservices sử dụng sở liệu trung tâm microservices khơng cịn độc lập Thay đổi liệu service làm hỏng services khác Do đó, microservice phải có sở liệu riêng Tài liệu MICROSERVICE  Mỗi service có CSDL riêng biệt để lưu trữ thơng tin cần thiết cho nghiệp vụ service  Một microservice truy xuất vào CSDL riêng mà khơng có quyền truy xuất vào CSDL microservices khác  Trong số hoàn cảnh, để hoàn thành tác vụ cần phải cập nhật nhiều CSDL Khi CSDL microservices khác nên cập nhật qua API dịch vụ (không trực tiếp thay đổi CSDL) Việc phân tách tách microservices cho phép lựa chọn công nghệ quản lý liệu khác (SQL hay NoSQL, nhiều CSDL khác cho microservices) Tuy nhiên, với giao dịch phức tạp liên quan đến nhiều microservices, giao dịch phải thực qua API 2.2.2 Áp dụng API Gateway điều hướng service  Điều hướng service domain : Điều cho phép che giấu thơng tin hệ thống với bên ngồi,giảm thiểu vấn đề bảo mật mà có nhiều services public internet Hơn vấn đề xác thực (authentication), phân quyền, SSL Tài liệu MICROSERVICE Khi backend mở rộng, client dễ nâng cấp cần truy cập đến route API Gateway thay trỏ đến services Từ ASP.NET Core API phiên 2.0 trở lên hỗ trợ thiết kế Microservices đặc biệt thiết kế API Gateway với Ocelot Azure  Cân tải giám sát hoạt động service: API Gateway kiêm vai trò load balancer hệ thống,requests không gửi trực tiếp đến backend nên giảm tối đa rủi ro hệ thống bị tải,ngăn công cách thêm lớp bảo vệ loại công ddos, slq injections,  Giám sát, cảnh báo, tình trạng service : Trong hệ thống microservice,yêu cầu vận hành cần đội ngũ Devops/Operator/System Admin có kinh nghiệm hệ thống Monitoring-Alert, hệ thống monitoring có nhiều cơng cụ open Tài liệu MICROSERVICE source để monitor Chẳng hạn Signoz, Prometheus, Grafana ,Pinpoint,Zabbix,ELK Stack v.v Có thể tham khảo số cơng cụ phía sau để áp dụng : Prometheus:  Mơ hình liệu đa chiều  Ngôn ngữ truy vấn linh hoạt  Hỗ trợ nhiều biểu đồ  Dễ dàng cấu hình cảnh báo  Chỉ cần máy chủ hoạt động  Hỗ trợ Push time-series thông qua gateway trung gian  Prometheus sử dụng Alert manager để lý gửi cảnh báo  Prometheus cung cấp giao diện đơn giản đề tạo truy vấn hiển thị biểu đồ  Kết hợp với Grafana để thị liệu dạng nhiều kiểu biểu đồ khác Tài liệu MICROSERVICE Service Discovery server: Thay theo dõi thủ cơng microservices triển khai máy chủ cổng nào, cần chức Service Discovery cho phép microservices tự đăng ký khởi động thông qua API Dynamic Routing and Load Balancer: Với chức service discovery, thành phần định tuyến sử dụng discovery API để tra cứu nơi mà microservice yêu cầu triển khai thành phần cân tải định định tuyến yêu cầu tới instance nhiều instance triển khai cho service yêu cầu Circuit Breaker: Để tránh chuỗi cố, cần phải áp dụng Circuit Breaker pattern Tài liệu MICROSERVICE Monitoring : Vì có circuit breakers, theo dõi trạng thái service,thu thập số liệu thống kê,thời gian chạy service để nắm tình trạng service hệ thống Centralized log analysis: Để theo dõi messages phát chúng bị kẹt (stuck), cần chức phân tích log tập trung có khả tiếp cận với máy chủ thu thập tệp log service tạo Chức phân tích log lưu trữ thông tin sở liệu trung tâm cung cấp khả tìm kiếm dashboard Lưu ý : Để tìm thấy messages liên quan, điều quan trọng tất microservices phải sử dụng id đồng log message Edge Server: Để đưa API services bên để ngăn chặn truy cập trái phép vào microservices nội bộ, cần edge server nơi Tài liệu MICROSERVICE tất request bên qua Một edge server tái sử dụng khả định tuyến động cân tải dựa service discovery mô tả Edge server hoạt động proxy ngược chủ động mà không cần cập nhật thủ công hệ thống nội thay đổi OAuth 2.0 protected API’s: Để bảo vệ API services expose bên ngồi, quy trình OAuth 2.0 sau: Tài liệu MICROSERVICE  Một component đóng vai trị Máy chủ ủy quyền (OAuth Authorization Server)  Các API services đóng vai trị Máy chủ tài nguyên (OAuth Resource Server)  Các Client bên gọi đến API services với tư cách OAuth Clients  Edge server làm việc OAuth Token Relay, có nghĩa là: o Nó hoạt động OAuth Resource Server o Nó chuyển OAuth Access Tokens có request bên ngồi đến API services 2.4.2 Công cụ quản lý Microservice  Quản lý APIs: Tài liệu MICROSERVICE - Tool : Kong API Gateway (1 open source API management platform) Sử dụng Kong API để quản lý APIs từ backend server  Quản lý service hoạt động: - Tool : Eureka – Colsul - HealthCheck Tài liệu MICROSERVICE Để tìm microservice hoạt động vị trí location chúng, cần đến chế service discovery,có loại chế service discovery : client-side discovery server-side discovery  Client-side discovery : Theo cách tiếp cận này, client API-gateway có vị trí service instance cách truy vấn service registry Tài liệu MICROSERVICE  Server-side discovery : Với phương pháp này, client/API gateway gửi request đến component (ví dụ load balancer) chạy location biết Component gọi đến service registry xác định vị trí location mà request cần đến  Giám sát lỗi service: Tool : Istio (1 service mesh độc lập, mã nguồn mở) Khi có lời gọi từ bên ngồi đến microservice, cấu hình component giám sát lỗi với lời gọi Component đếm số yêu cầu thành công thất bại, lỗi đạt giới hạn định component dừng hoạt động service (ngắt service) Giải pháp hữu dụng để tránh tiêu tốn tài nguyên không cần thiết, yêu cầu bị chậm timeout,giúp giám sát hệ thống tốt  Monitor cảnh báo – giám sát cố toàn hệ thống: Tài liệu MICROSERVICE Tool : Prometheus Là open-source sử dụng rộng rãi,phục vụ việc giám sát,đánh giá ổn định cảnh báo sớm hệ thống gặp cố  Quản lý Logs: Tool : Elk - Sentry Cả tools open-source sử dụng rộng rãi, Sentry cung cấp khả realtime tracking logging Sentry kiểm soát lỗi hiển thị khung nhìn trực quan có lỗi, lỗi xảy đâu, user gây lỗi Đặc biệt Sentry hỗ trợ nhiều ngôn ngữ framework có Ruby, Js, Java, Django, iOS, NET … Tài liệu MICROSERVICE  Quản lý REST full APIs : Tool : Swagger Swagger UI tool open source cho phép developer tương tác với tài nguyên API service Tool tự động generates API documents từ file config Swagger, với nhìn trực quan việc triển khai trở nên dễ dàng cho phía client  Quản lý Scheduled Background Job Service: Tài liệu MICROSERVICE Tool : Hangfire Thư viện mã nguồn mở, cho phép thực thi,quản lý background task ứng dụng microservice Hỗ trợ đa dạng loại Databases (MS SQL Server, Redis, PostgreSQL, MongoDB, C1 CMS, ) Tài liệu MICROSERVICE 2.5 Vận hành microservice 2.5.1 Yêu cầu phần cứng  Windows o Windows server 2019 o Bộ xử lý 64-bit 1.4 GHzWindows server 2019 o Tương thích với lệnh x64 o Hỗ trợ NX DEP o Hỗ trợ CMPXCHG16b, LAHF/SAHF, and PrefetchW o Hỗ trợ Second Level Address Translation (EPT NPT) o Ethernet: Adapter Gigabit Ethernet (10/100/1000 Base-T) o Tối thiểu GB RAM o Tối thiểu 50 GB HDD  Linux o Ubuntu 22.04 o Bộ xử lý 64-bit o Tối thiểu GB RAM o Tối thiểu 30 GB HDD 2.5.2 Công cụ triển khai  Docker Docker hỗ trợ Linux, Window Mac,chúng ta đóng gói service vào dockerfile, dockerfile lưu trữ máy Tài liệu MICROSERVICE chủ gitlab với mã nguồn, Sau ta build docker image từ dockerfile đẩy docker image lên dockerhub để lưu trữ Việc đảm bảo đồng dockerfile docker image giúp kiểm soát thành phần docker image, tránh việc cài đặt thiếu gói trùng lặp gói phần mềm, việc thiết lập môi trường sau xung đột với thiết lập trước  Triển khai CI/CD Cho phép tích hợp liên tục / triển khai liên tục service, code service commit build, test trước tích hợp vào repository gitlab,khi triển khai CI/CD cần đến devops cấu hình mơi trường IIS,Kestrel windows, nginx – apache linux, áp dụng CI/CD giúp trình vận hành service hồn tồn tự động,thay cho triển khai thủ công tay service lên server,tiết kiệm thời gian,công sức ,giảm thiểu rủi ro 2.5.3 Yêu cầu nguồn lực  Devops + Cấu hình mơi trường triển khai windows - linux + Thiết lập tham số sử dụng chung cho hệ thống + Chạy lệnh cài đặt gói thư viện,package + Lập trình script hỗ trợ can thiệp thủ cơng backup, khôi phục service hệ thống gặp cố + Tiếp nhận stack công nghệ từ technical lead từ developer chuẩn bị sẵn thư viện ,các package,các cấu hình cần thiết để service hoạt động ổn định Tài liệu MICROSERVICE 2.6 Xử lý cố microservie 2.6.1 Phản hồi chậm - Microservice chất ko giúp hệ thống nhanh hơn,nó phân chia hệ thống nhỏ để dễ quản lý,mở rộng, lúc xuất response time - service dẫn đến phản hồi chậm Giải pháp : giảm thời gian encode/decode mở đóng connection service (dùng gRPC) 2.6.2 Service ngừng hoạt động tải timeout - Giải pháp : Sử dụng Circuit Breaker Pattern Đây pattern dùng để ngắt trình xử lý hệ thống gặp cố, để đảm bảo số lượng message bị lỗi không tăng cao, làm cho việc khắc phục trở nên khó khăn, làm cho hệ thống bị sụp đổ hàng loạt ảnh hưởng lẫn Tư tưởng pattern giống automat, xảy chập điện,ngay automat ngắt mạch điện, khắc phục xong đóng lại mạch điện trở lại.Khi microservice bị lỗi,phát cố ngắt trình gửi/nhận message tới microservice bị lỗi thay phương pháp dự phịng để tránh tình trạng nghẽn mạch 2.6.3 Lỗi đồng liệu service Trong microservice liệu truy cập qua API, microservice quản lý sở liệu riêng,do việc đảm bảo giao dịch đồng với nhiều microservice khác vấn đề xảy thường xuyên Vd : Service khách hàng lưu trữ thông tin khách hàng, bao gồm số dư tài khoản, Service đặt hàng quản lý đơn hàng phải thực kiểm tra giá trị đơn hàng không vượt số dư tài khoản Đối với ứng dụng Tài liệu MICROSERVICE kiến trúc nguyên khối mono, phiên làm việc ứng dụng cần kiểm tra số dư thông qua giao dịch ACID đảm bảo tạo đơn hàng Với kiến trúc microservice table ORDER, CUSTOMER lại nằm DB khác Về nguyên tắc service truy cập DB service dẫn đến liệu không đồng Giải pháp : Sử dụng Message Broker để đồng data service 2.6.4 Lỗi API Gateway API gateway hoạt động khơng tốt lưu lượng truy cập bất thường từ client, điều quy định số request giây từ client Những request vượt cho phép không phản hồi Khi bị ngăn số lượng request, trải nghiệm người dùng không tốt Nếu không ngăn chặn, gateway bị chậm cho tất request dẫn đến lỗi toàn hệ thống Giải pháp : Sử dụng chế service discovery để xác định xem service bị request tải,qua thiết lập điều phối lại lượng request đến đảm bảo không bị nghẽn cổ chai API Gateway request qua 2.6.5 Lỗi Connection refused Lỗi Connection refused thường hay gặp triển khai ứng dụng môi trường linux sai đường dẫn trỏ đến file dll ứng dụng,do start service ln ln bị fail Tài liệu MICROSERVICE Giải pháp : Set cấu hình đường dẫn theo file hệ thống linux systemd service ... liệu MICROSERVICE Signoz:  Cung cấp giao diện người dùng tích hợp cho metric & traces  Chạy truy vấn dành riêng cho doanh nghiệp  Chạy aggregation tag tùy chỉnh  Cung cấp hỗ trợ gốc cho OpenTelemetry... khai microservice Cloud:  Applications  Data  Devops Tài liệu MICROSERVICE 2.4 Quản Trị Microservice 2.4.1 Thành phần microservice Để quản trị microservice cần nắm rõ thành phần sau hệ thống microservice: ... liệu MICROSERVICE thể giao tiếp trực tiếp Mỗi microservice expose REST API microservice cụ thể client bên ngồi gọi microservice khác thơng qua REST API  Giao tiếp qua API Gateway Tài liệu MICROSERVICE

Ngày đăng: 06/12/2022, 19:53

HÌNH ẢNH LIÊN QUAN

Để xử lý vấn đề này ta sẽ vận dụng mơ hình vách ngăn (Bulkhead Pattern). - Microservice Cho Doanh Nghiệp
x ử lý vấn đề này ta sẽ vận dụng mơ hình vách ngăn (Bulkhead Pattern) (Trang 18)
Với mơ hình Kubernetes cluster ứng dụng luôn sẵn sàng hoạt động 24/7 cho phép lập trình viên triển khai liên tục các phiên bản của ứng dụng nhiều  lần trong ngày - Microservice Cho Doanh Nghiệp
i mơ hình Kubernetes cluster ứng dụng luôn sẵn sàng hoạt động 24/7 cho phép lập trình viên triển khai liên tục các phiên bản của ứng dụng nhiều lần trong ngày (Trang 22)
Để giải quyết vấn đề này, ta cần thiết kế một mơ hình master-slave, theo đó master đóng vai trị là database chính - đóng vai trị thực hiện  xử lý câu lệnh insert, update, delete - Microservice Cho Doanh Nghiệp
gi ải quyết vấn đề này, ta cần thiết kế một mơ hình master-slave, theo đó master đóng vai trị là database chính - đóng vai trị thực hiện xử lý câu lệnh insert, update, delete (Trang 25)
Central Configuration server: Thay vì cấu hình cục bộ cho mỗi đơn vị - Microservice Cho Doanh Nghiệp
entral Configuration server: Thay vì cấu hình cục bộ cho mỗi đơn vị (Trang 35)

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

TÀI LIỆU LIÊN QUAN

w