Ngân hàng đề — Microsoft Azure Developer

Tìm thấy 409 câu.

Câu 121 Azure Storage

You are developing an application that requires the ability to store and retrieve large amounts of unstructured data in Azure Blob Storage. You need to implement a solution that allows users to upload files to a specific container in Blob Storage. Which of the following Azure SDK methods should you use to upload a file to a blob?

  1. A

    PutBlockBlobAsync()

  2. B

    UploadBlobAsync()

  3. C

    CreateBlobAsync()

  4. D

    UploadFromFileAsync()

Xem giải thích

Đáp án

D — UploadFromFileAsync()

Vì sao đúng theo khoá đáp án

Đây là phương thức tải trực tiếp từ đường dẫn tệp lên blob: SDK tự mở luồng, chia khối khi tệp lớn, và đóng luồng khi xong — nên bạn không phải tự quản lý FileStream.

Vì sao các phương án khác sai

  • A. PutBlockBlobAsync() và C. CreateBlobAsync() — không phải tên phương thức có thật trong SDK của Azure Storage.

Ghi chú về phiên bản SDK

UploadFromFileAsync thuộc thư viện thế hệ cũ (Microsoft.Azure.Storage.Blob, trên lớp CloudBlockBlob). Trong thư viện hiện hành Azure.Storage.Blobs, phương thức tương đương là BlobClient.UploadAsync(path), còn BlobContainerClient.UploadBlobAsync(name, stream) — tức phương án B — cũng là phương thức có thật. Khoá đáp án của nguồn phản ánh SDK cũ; khi viết mã mới thì dùng UploadAsync.

Câu 122 Cosmos DB

You are developing a web application that uses Azure Cosmos DB to store user data. You need to ensure that the application can handle high availability and low latency access to the data across multiple regions. Which of the following configurations should you choose when creating your Azure Cosmos DB account?

  1. A

    Create a multi-region account with read replicas in different regions.

  2. B

    Create a single-region account and enable multi-master replication.

  3. C

    Create a single-region account and configure it to use strong consistency.

  4. D

    Create a multi-region account with write regions in multiple locations.

Xem giải thích

Đáp án

A — Tạo tài khoản đa vùng với bản sao đọc ở nhiều khu vực

Vì sao đúng

Đề cần sẵn sàng cao và độ trễ thấp khi đọc cho người dùng ở nhiều nơi. Nhân bản sang nhiều khu vực giải cả hai: mỗi người đọc từ bản sao gần mình nhất nên độ trễ thấp, và mất một khu vực thì Cosmos DB tự chuyển sang khu vực khác.

Vì sao các phương án khác sai

  • B. Tài khoản một vùng rồi bật ghi đa chủ — mâu thuẫn nội tại: ghi đa chủ cần nhiều khu vực mới có nghĩa.
  • C. Một vùng với nhất quán Strong — nhất quán chặt không giúp gì cho tính sẵn sàng; ngược lại nó làm giảm tính sẵn sàng, và một khu vực duy nhất vẫn là điểm hỏng.
  • D. Đa vùng với ghi ở nhiều nơi — cũng là cấu hình hợp lệ và tốt, nhưng nó giải bài toán độ trễ ghi; đề nhấn vào truy cập đọc, nên bản sao đọc là câu trả lời sát hơn.
Câu 123 Web App Containers
Why should a developer choose to deploy a container to a Web App for Containers instead of Azure Kubernetes Service?
  1. A AKS is more for development and product demos, while Web App for Containers is an enterprise solution for containerized applications
  2. B Web App for Containers integrates seamlessly with your other AKS containers and can be controlled with the same commands
  3. C Web App for Containers is much easier to deploy and control than a Kubernetes cluster
  4. D Web App for Containers provide much more low-level control over the scaling and performance of the app
Xem giải thích

Đáp án

C — Web App for Containers DỄ triển khai và quản lý hơn nhiều so với một cụm Kubernetes.

Vì sao đúng

⚠ Đánh đổi giữa hai lựa chọn là ĐỘ PHỨC TẠP và MỨC KIỂM SOÁT: | Tiêu chí | Web App for Containers | AKS | |---|---|---| | ⚠ Độ phức tạp | ⚠ thấp — chỉ cần ảnh | ⚠ cao — cụm, node, YAML | | ⚠ Kiểm soát | ⚠ hạn chế | ⚠ toàn quyền | | ⚠ Kỹ năng cần có | ⚠ ít | ⚠ Kubernetes | | ⚠ Điều phối nhiều dịch vụ | ⚠ hạn chế | ⚠ mạnh | | ⚠ Vận hành | ⚠ Azure lo | ⚠ bạn lo node và nâng cấp |

⚠ Một container web đơn giản
        ↓
⚠ Web App for Containers là đủ
        ↓ ⚠ nhiều microservice, service mesh
⚠ Khi đó mới cần AKS

Vì sao các phương án khác sai

  • D (kiểm soát mức thấp nhiều hơn) — ⚠ NGƯỢC: ⚠ AKS mới cho kiểm soát sâu.

  • A (AKS chỉ để demo, Web App là giải pháp doanh nghiệp) — ⚠ SAI hoàn toàn: ⚠ AKS được dùng rộng rãi ở quy mô doanh nghiệp.

  • B (tích hợp liền mạch với container AKS, cùng lệnh điều khiển) — ⚠ SAI: ⚠ hai dịch vụ độc lập, không dùng chung kubectl.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ câu này ⚠ hoàn chỉnh bức tranh lựa chọn nơi chạy container.

Câu Hỏi gì Khoá
⚠ #21436 ⚠ dịch vụ nào lưu ảnh ⚠ ACR
⚠ #21521 ⚠ ACI thuộc loại điện toán nào ⚠ serverless
⚠ #21526 (câu này) ⚠ vì sao chọn Web App thay AKS ⚠ dễ hơn nhiều
⚠ Ba câu ⚠ lưu ảnh, chạy nhanh, chạy web app

⚠ Chọn nơi chạy container — bảng quyết định: | Nhu cầu | Chọn | |---|---| | ⚠ Tác vụ ngắn, chạy rồi thoát | ⚠ Container Instances | | ⚠ Một web app trong container | ⚠ Web App for Containers | | ⚠ Microservice, co giãn về 0, KEDA | ⚠ Container Apps | | ⚠ Cần toàn quyền Kubernetes | ⚠ AKS | | ⚠ Nguyên tắc | ⚠ chọn thứ ĐƠN GIẢN NHẤT đáp ứng được yêu cầu |

Từ khoá nhận diện:

"dễ triển khai, ít vận hành" → ⚠ Web App for Containers "toàn quyền, service mesh, operator" → ⚠ AKS "microservice không muốn quản cụm" → ⚠ Container Apps "chạy một lần rồi thoát" → ⚠ ACI

⚠ Chi phí ẩn của AKS Chi phí
⚠ Đội phải BIẾT Kubernetes
⚠ Nâng cấp cụm định kỳ
⚠ Quản lý node pool và vá lỗi
⚠ Cấu hình mạng và bảo mật phức tạp hơn
⚠ Đây là ⚠ chi phí lớn nhất, và không nằm trên hoá đơn Azure
⚠ Xu hướng: Container Apps Nội dung
⚠ Xây trên Kubernetes nhưng GIẤU đi
⚠ Có KEDA để co giãn theo sự kiện
⚠ Co giãn về 0
⚠ Có Dapr cho microservice
⚠ Lấp khoảng trống giữa ⚠ Web App đơn giản và AKS phức tạp

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Đội có kỹ năng Kubernetes không | ⚠ yếu tố quyết định thực tế nhất | | Có bao nhiêu dịch vụ cần điều phối | | | Có tính năng nào chỉ Kubernetes mới có mà bạn cần không | |

Và nguyên tắc chọn nền tảng container ít gây hối tiếc nhất: chọn thứ đơn giản nhất đáp ứng được yêu cầu hiện tại. Chuyển từ Web App lên AKS về sau dễ hơn nhiều so với việc vận hành một cụm mà đội chưa sẵn sàng.

Câu 124 Cosmos DB
Which types of database changes does the CosmosDB change feed track?
  1. A Updates only
  2. B Inserts only
  3. C Inserts, updates and deletes
  4. D Inserts and updates
Xem giải thích

Đáp án

D — Insert và Update.

Vì sao đúng

⚠ Change feed của Cosmos DB KHÔNG theo dõi thao tác XOÁ:

⚠ Insert một item
        ↓ ⚠ xuất hiện trong change feed
⚠ Update item
        ↓ ⚠ xuất hiện trong change feed
⚠ Delete item
        ↓
⚠ KHÔNG xuất hiện
Đặc điểm change feed Nội dung
⚠ Theo THỨ TỰ trong mỗi partition
⚠ Bền vững, đọc lại được
⚠ Chỉ giữ phiên bản MỚI NHẤT của mỗi item ⚠ không phải mọi lần thay đổi
⚠ Không có delete ⚠ đề này

Vì sao các phương án khác sai

  • C (insert, update và delete) — ⚠ bẫy chính: ⚠ nghe hợp lý nhất nhưng ⚠ delete KHÔNG có.

  • A (chỉ update) và B (chỉ insert) — ⚠ thiếu một nửa.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ đây là chi tiết ⚠ rất hay bị hiểu sai trong thực tế.

⚠ Cách xử lý việc xoá với change feed — mẫu SOFT DELETE: | Bước | Nội dung | |---|---| | ⚠ KHÔNG xoá thật | | | ⚠ Đặt cờ deleted = true và UPDATE item | | | ⚠ Update đó XUẤT HIỆN trong change feed | | | ⚠ Consumer thấy cờ và xử lý như xoá | | | ⚠ Đặt TTL để item tự biến mất sau đó | | | ⚠ Đây là | ⚠ mẫu chuẩn được Microsoft khuyến nghị |

⚠ Ứng dụng của change feed: | Ứng dụng | Nội dung | |---|---| | ⚠ Đồng bộ sang kho khác | ⚠ tìm kiếm, kho phân tích | | ⚠ Cập nhật cache | | | ⚠ Kích hoạt Azure Function | | | ⚠ Kiểm toán và ghi nhật ký | | | ⚠ Materialized view | | | ⚠ Xử lý sự kiện thời gian thực | |

Từ khoá nhận diện:

"insert và update" → ⚠ change feed "delete" → ⚠ KHÔNG có — dùng soft delete "theo dõi thay đổi CSDL quan hệ" → ⚠ Change Data Capture "kích hoạt hàm khi dữ liệu đổi" → ⚠ Cosmos DB trigger của Functions

⚠ Chi tiết quan trọng khác Chi tiết
⚠ Chỉ giữ PHIÊN BẢN MỚI NHẤT ⚠ update ba lần liên tiếp có thể chỉ thấy một lần
⚠ Đọc theo thứ tự TRONG mỗi partition ⚠ không bảo đảm thứ tự toàn cục
⚠ Có chế độ all-versions-and-deletes ⚠ bản mới, đang phát triển
⚠ Với chế độ mặc định ⚠ phải chấp nhận hai giới hạn trên
⚠ Cách tiêu thụ change feed Cách
⚠ Azure Functions trigger ⚠ đơn giản nhất
⚠ Change feed processor library ⚠ kiểm soát nhiều hơn
⚠ Đọc trực tiếp qua SDK ⚠ phức tạp nhất
⚠ Với đa số ⚠ Functions trigger là đủ

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Có cần theo dõi việc xoá không | ⚠ thì phải dùng soft delete | | Có phụ thuộc vào việc thấy MỌI lần update không | | | Thứ tự toàn cục có quan trọng không | |

Và giới hạn của change feed gây bất ngờ nhiều nhất khi triển khai thật: nó không báo cho bạn biết item nào đã bị xoá. Mẫu soft delete kết hợp TTL là cách xử lý chuẩn cho vấn đề đó.

Câu 125 Azure Functions
Which library allows you to develop and test Azure Functions locally before deploying into Azure?
  1. A Azure SDK library
  2. B Azure Functions compile natively to an EXE and can be run from the command line
  3. C Core Tools, cross-platform on Windows, macOS and Linux
  4. D Azure Functions are cloud only, and cannot be tested locally
Xem giải thích

Đáp án

C — Core Tools, chạy đa nền tảng trên Windows, macOS và Linux.

Vì sao đúng

⚠ Azure Functions Core Tools là bộ công cụ phát triển cục bộ chính thức:

⚠ func init MyProject --dotnet
⚠ func new --template "HttpTrigger" --name MyFunction
⚠ func start          ← chạy cục bộ
⚠ func azure functionapp publish MyApp
Core Tools làm được Nội dung
⚠ Tạo dự án và hàm mới từ mẫu
⚠ Chạy runtime Functions ngay trên máy
⚠ Gỡ lỗi bằng IDE
⚠ Triển khai lên Azure
⚠ Quản lý cấu hình cục bộ

Vì sao các phương án khác sai

  • D (Functions chỉ chạy trên đám mây, không kiểm thử cục bộ được) — ⚠ SAI hoàn toàn: ⚠ phát triển cục bộ là quy trình chuẩn.

  • B (Functions biên dịch thành EXE chạy từ dòng lệnh) — ⚠ SAI: ⚠ chúng cần runtime host.

  • A (Azure SDK library) — ⚠ thư viện gọi API Azure, không phải công cụ chạy Functions.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ câu này ⚠ là mảnh ghép cuối trong chùm về Azure Functions.

Câu Hỏi gì Khoá
⚠ #21440 ⚠ ngôn ngữ không hỗ trợ sẵn ⚠ Custom Handlers
⚠ #21477 ⚠ hàm gọi hàm ⚠ Durable Functions
⚠ #21518 ⚠ nhược điểm Consumption ⚠ cold start
⚠ #21528 (câu này) ⚠ phát triển cục bộ ⚠ Core Tools
⚠ Bốn câu ⚠ và mỗi câu đều có các phương án kia làm nhiễu

⚠ Ba khái niệm hay bị trộn làm nhiễu: | Khái niệm | Loại | |---|---| | ⚠ Custom Handlers | ⚠ tính năng runtime | | ⚠ Durable Functions | ⚠ thư viện lập trình | | ⚠ Core Tools | ⚠ công cụ phát triển | | ⚠ Consumption / Premium | ⚠ gói lưu trữ | | ⚠ Đề thường trộn | ⚠ bốn loại này vào cùng danh sách phương án |

Từ khoá nhận diện:

"phát triển và kiểm thử cục bộ" → ⚠ Core Tools "ngôn ngữ lạ" → ⚠ Custom Handlers "quy trình có trạng thái" → ⚠ Durable Functions "cold start" → ⚠ gói lưu trữ

⚠ local.settings.json — nhắc lại cảnh báo Cảnh báo
⚠ Chứa chuỗi kết nối khi chạy cục bộ
⚠ KHÔNG BAO GIỜ commit vào Git
⚠ Mặc định nằm trong .gitignore
⚠ Khi triển khai ⚠ giá trị thật lấy từ Application Settings trên Azure
⚠ Azurite — bổ trợ cho phát triển cục bộ Nội dung
⚠ Giả lập Azure Storage trên máy
⚠ Functions cần một storage account để hoạt động
⚠ Dùng Azurite thì không cần tài khoản thật khi dev
⚠ Kết hợp ⚠ Core Tools + Azurite = phát triển hoàn toàn ngoại tuyến

Ba việc kiểm chứng: | Việc | Cách | |---|---| | local.settings.json có bị commit không | | | Có dùng Azurite để dev ngoại tuyến không | | | Phiên bản Core Tools có khớp runtime không | |

Và bộ đôi cho phép phát triển Azure Functions hoàn toàn ngoại tuyến, không cần kết nối tới Azure: Core Tools cộng với Azurite. Rất hữu ích khi cần lặp nhanh hoặc làm việc ở nơi mạng kém.

Câu 126 ARM Templates

You are deploying an Azure Resource Manager (ARM) template that includes a virtual network (VNet) and several subnets. You want to ensure that the subnets are created only if the VNet is successfully deployed. Which of the following ARM template features should you use to achieve this dependency?

  1. A

    reference()

  2. B

    dependsOn

  3. C

    copy

  4. D

    conditions

Xem giải thích

Đáp án

B — dependsOn

Vì sao đúng

dependsOn khai quan hệ phụ thuộc giữa các tài nguyên trong ARM template: subnet chỉ được tạo sau khi virtual network đã tồn tại. Không có nó, Resource Manager triển khai song song để cho nhanh, và subnet sẽ thất bại vì mạng chứa nó chưa có.

Vì sao các phương án khác sai

  • D. "conditions" — từ khoá thật là condition (số ít), và nó dùng để quyết định tài nguyên có được triển khai hay không dựa trên một biểu thức đúng/sai — khác với việc khai thứ tự. Đây là phương án nhiễu gần nhất vì chữ "chỉ khi" trong đề dễ khiến người ta nghĩ tới nó.
  • C. copy — tạo nhiều bản của cùng một tài nguyên trong một vòng lặp.
  • A. reference() — hàm lấy thuộc tính của tài nguyên khác lúc chạy; nó tạo ra phụ thuộc ngầm, nhưng không phải cơ chế khai tường minh mà câu hỏi hỏi tới.
Câu 127 Azure App Service
What is the REST API command for uploading a ZIP file into an Azure App Service using the Kudu SCM endpoint?
  1. A POST /deploy
  2. B PUT /api/deployments/{id}
  3. C POST /api/scm/{path}/
  4. D PUT /api/zip/{path}/
Xem giải thích

Đáp án

D — PUT /api/zip/{path}/

Vì sao đúng

⚠ Kudu cung cấp REST API để thao tác với hệ tệp của App Service:

⚠ PUT https://myapp.scm.azurewebsites.net/api/zip/site/wwwroot/
   ⚠ Content-Type: application/zip
   ⚠ Body: nội dung tệp ZIP
        ↓
⚠ Kudu GIẢI NÉN vào đường dẫn chỉ định
Vài endpoint của Kudu API Việc
⚠ PUT /api/zip/{path}/ ⚠ tải và giải nén ZIP
⚠ GET /api/zip/{path}/ ⚠ tải thư mục về dạng ZIP
⚠ POST /api/zipdeploy ⚠ triển khai ZIP như một bản deploy
⚠ GET /api/vfs/{path} ⚠ đọc tệp
⚠ GET /api/deployments ⚠ lịch sử triển khai
⚠ POST /api/command ⚠ chạy lệnh

Vì sao các phương án khác sai

  • A (POST /deploy), B (PUT /api/deployments/{id}), C (POST /api/scm/{path}/) — ⚠ không phải endpoint hợp lệ của Kudu API.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ câu này ⚠ là cặp với #21501 và #21531 về Kudu.

Câu Hỏi gì Khoá
⚠ #21501 ⚠ URL của Kudu ⚠ scm.azurewebsites.net
⚠ #21530 (câu này) ⚠ REST API tải ZIP ⚠ PUT /api/zip/{path}/
⚠ #21531 ⚠ engine đằng sau triển khai ⚠ Kudu
⚠ Ba câu ⚠ vẽ trọn vai trò của Kudu

⚠ Phân biệt hai endpoint ZIP: | Endpoint | Việc | |---|---| | ⚠ /api/zip/{path}/ | ⚠ giải nén vào đường dẫn — như thao tác tệp | | ⚠ /api/zipdeploy | ⚠ TRIỂN KHAI đầy đủ, có ghi lịch sử deploy | | ⚠ Với triển khai ứng dụng | ⚠ nên dùng zipdeploy | | ⚠ Vì | ⚠ nó chạy các bước build và ghi vào lịch sử triển khai |

Từ khoá nhận diện:

"tải ZIP qua Kudu" → ⚠ PUT /api/zip/{path}/ "triển khai ZIP đầy đủ" → ⚠ POST /api/zipdeploy "az webapp deploy" → ⚠ CLI gọi vào chính API này "scm.azurewebsites.net" → ⚠ địa chỉ Kudu

⚠ Các cách triển khai App Service Cách
⚠ ZIP deploy ⚠ phổ biến và đơn giản
⚠ Git deployment ⚠ push lên là build và deploy
⚠ GitHub Actions hoặc Azure DevOps ⚠ khuyến nghị cho đội
⚠ Container deploy
⚠ FTP ⚠ cũ, nên tránh
⚠ TẤT CẢ ⚠ đều đi qua Kudu bên dưới
⚠ Xác thực với Kudu API Cách
⚠ Publish profile credentials ⚠ basic auth — nên TẮT
⚠ Token Entra ID ⚠ khuyến nghị
⚠ Với pipeline ⚠ dùng service principal hoặc federated credential

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Đang dùng zip deploy hay zipdeploy | ⚠ khác nhau về lịch sử triển khai | | Xác thực bằng basic auth hay Entra ID | | | Có xem lịch sử triển khai khi lỗi không | |

Và điểm chung của mọi phương thức triển khai lên App Service, đáng biết vì nó chỉ ra nơi cần nhìn khi có sự cố: tất cả đều đi qua Kudu. Log triển khai luôn nằm ở đó.

Câu 128 Azure App Service
What is the engine behind Azure App Service source control based deployment, and other deployment methods like ZIP file upload?
  1. A Azure Portal
  2. B REST API
  3. C Migration Assistant
  4. D Kudu
Xem giải thích

Đáp án

D — Kudu.

Vì sao đúng

⚠ Kudu là engine triển khai nằm sau MỌI phương thức của App Service:

⚠ Git push
⚠ ZIP deploy
⚠ GitHub Actions
⚠ Azure DevOps
⚠ FTP
        ↓ ⚠ TẤT CẢ đều đi qua
⚠ KUDU
        ↓
⚠ Nhận tệp, chạy build, khởi động lại app
Kudu làm gì trong quá trình triển khai Việc
⚠ Nhận nội dung triển khai
⚠ Chạy build nếu cần ⚠ npm install, dotnet publish
⚠ Sao chép vào wwwroot
⚠ Khởi động lại ứng dụng
⚠ Ghi LỊCH SỬ triển khai

Vì sao các phương án khác sai

  • B (REST API) — ⚠ là GIAO DIỆN, không phải engine; ⚠ và chính REST API đó là của Kudu.

  • A (Azure Portal) — ⚠ là giao diện quản trị.

  • C (Migration Assistant) — ⚠ công cụ đánh giá và di chuyển ứng dụng lên Azure.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ câu này ⚠ hoàn chỉnh bộ ba về Kudu.

Câu Hỏi gì Khoá
⚠ #21501 ⚠ URL của Kudu ⚠ scm.azurewebsites.net
⚠ #21530 ⚠ REST API tải ZIP ⚠ PUT /api/zip/{path}/
⚠ #21531 (câu này) ⚠ engine đằng sau triển khai ⚠ Kudu
⚠ Ba câu ⚠ địa chỉ, API, và vai trò

⚠ Vì sao biết Kudu lại quan trọng trong thực tế: | Lý do | Nội dung | |---|---| | ⚠ Triển khai lỗi thì log nằm ở Kudu | | | ⚠ Xem được tệp thật sự đã lên máy chủ chưa | | | ⚠ Kiểm tra biến môi trường đang có giá trị gì | | | ⚠ Chạy lệnh để chẩn đoán | | | ⚠ Khi mọi thứ có vẻ đúng mà app vẫn lỗi | ⚠ Kudu là nơi tìm ra sự thật |

Từ khoá nhận diện:

"engine triển khai" → ⚠ Kudu "scm.azurewebsites.net" → ⚠ Kudu "Advanced Tools" → ⚠ lối vào Kudu "đánh giá ứng dụng trước khi lên đám mây" → ⚠ Migration Assistant

⚠ Build tại nguồn hay tại đích Hai chế độ
⚠ SCM_DO_BUILD_DURING_DEPLOYMENT=true ⚠ Kudu BUILD trên máy chủ
⚠ false ⚠ triển khai gói đã build sẵn
⚠ Build sẵn rồi deploy ⚠ nhanh hơn, dự đoán được hơn
⚠ Build trên Kudu ⚠ tiện nhưng chậm và phụ thuộc mạng
⚠ Với pipeline CI/CD ⚠ nên build ở pipeline rồi mới deploy
⚠ Run From Package — chế độ đáng biết Nội dung
⚠ WEBSITE_RUN_FROM_PACKAGE=1
⚠ App chạy TRỰC TIẾP từ gói ZIP, không giải nén
⚠ Triển khai NGUYÊN TỬ — không có trạng thái nửa vời
⚠ Khởi động nhanh hơn
⚠ Hệ tệp CHỈ ĐỌC
⚠ Đây là ⚠ cách triển khai được khuyến nghị cho Functions

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Build ở pipeline hay trên Kudu | | | Có dùng Run From Package không | | | Khi triển khai lỗi có xem log Kudu không | |

Và nơi cần mở đầu tiên khi một bản triển khai lên App Service thất bại mà không rõ lý do: log triển khai trong Kudu. Nó cho biết chính xác bước nào hỏng, thay vì phải đoán.

Câu 129 Function Apps

You are developing an Azure Function that processes messages from an Azure Service Bus queue. The function should handle messages in batches to improve efficiency and reduce the number of executions. Which of the following configurations should you apply to the Service Bus Queue Trigger binding to achieve this?

  1. A

    Set maxConcurrentCalls to a value greater than 1

  2. B

    Set autoComplete to false

  3. C

    Set maxMessageCount to a value greater than 1

  4. D

    Set prefetchCount to a value greater than 1

Xem giải thích

Đáp án

C — Đặt maxMessageCount lớn hơn 1

Vì sao đúng

Để hàm nhận một lô thông điệp thay vì từng cái một, cần hai thứ: khai tham số hàm là mảng, và đặt maxMessageCount trong host.json để khai kích thước lô tối đa. Đây là thiết lập trực tiếp quyết định số thông điệp được giao cho mỗi lần gọi hàm.

Vì sao các phương án khác sai

  • A. maxConcurrentCalls — quyết định bao nhiêu lời gọi hàm chạy song song, mỗi lời gọi vẫn nhận một thông điệp. Đó là xử lý đồng thời, không phải xử lý theo lô. Đây là cặp khái niệm hay bị lẫn nhất.
  • D. prefetchCount — cho SDK tải trước thông điệp về bộ nhớ để giảm số lần đi lại mạng; nó cải thiện thông lượng nhưng không đổi cách hàm nhận thông điệp.
  • B. autoComplete = false — chuyển sang tự tay xác nhận thông điệp; liên quan tới cách xử lý lỗi, không liên quan tới lô.
Câu 130 Non-relational deployment
Which of the following metrics affect how much an Azure Redis Cache instance costs?
  1. A Region, Consumed storage, pricing tier
  2. B Region, pricing tier, hours
  3. C Per transaction
  4. D Region, Pricing tier
Xem giải thích

Đáp án

B — Vùng (region), bậc giá (pricing tier) và số giờ.

Vì sao đúng

⚠ Redis tính tiền như một tài nguyên được CẤP PHÁT: | Yếu tố | Nội dung | |---|---| | ⚠ Vùng | ⚠ giá khác nhau giữa các vùng | | ⚠ Bậc giá | ⚠ Basic, Standard, Premium + kích thước bộ nhớ | | ⚠ Số giờ | ⚠ tính theo thời gian instance TỒN TẠI |

⚠ Instance đang chạy
        ↓
⚠ Tính tiền theo GIỜ
        ↓
⚠ Không có request nào cũng vẫn tính

Vì sao các phương án khác sai

  • C (theo từng giao dịch) — ⚠ SAI: ⚠ Redis không tính theo số lệnh.

  • A (vùng, dung lượng ĐÃ DÙNG, bậc giá) — ⚠ SAI ở "dung lượng đã dùng": ⚠ bạn trả cho dung lượng ⚠ theo bậc, dùng hết hay không cũng vậy.

  • D (chỉ vùng và bậc giá) — ⚠ thiếu yếu tố THỜI GIAN.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ câu này ⚠ TRÙNG với #19504 ở lô 165, thứ tự phương án ⚠ bị xáo.

Câu Chứng chỉ Vị trí đáp án
⚠ #19504 ⚠ Data Fundamentals ⚠ A
⚠ #21533 (câu này) ⚠ Azure Developer ⚠ B
⚠ Đề bài ⚠ giống nhau từng chữ
⚠ Đây là câu trùng thứ TƯ ⚠ trong năm câu trùng của lô
⚠ Cùng chủ đề Redis ⚠ #21434, #21437, #21453, #21492
⚠ Tổng cộng ⚠ SÁU câu về Redis qua ba lô

⚠ Ba mô hình tính tiền trên Azure — nhắc lại: | Mô hình | Dịch vụ | |---|---| | ⚠ Theo tài nguyên CẤP PHÁT | ⚠ Redis, VM, App Service Plan, Cosmos provisioned | | ⚠ Theo lượng DÙNG THẬT | ⚠ Storage, Functions Consumption | | ⚠ Theo BẬC cố định | ⚠ một số dịch vụ SaaS | | ⚠ Câu hỏi phân biệt | ⚠ không dùng thì có mất tiền không |

Từ khoá nhận diện:

"vùng, bậc, giờ" → ⚠ Redis, VM, App Service Plan "dung lượng đã dùng" → ⚠ Storage Account "số lần thực thi" → ⚠ Functions Consumption "RU cấp phát" → ⚠ Cosmos DB

⚠ Cách tiết kiệm chi phí Redis Cách
⚠ Chọn bậc vừa đủ, không dư bộ nhớ
⚠ Dùng Basic cho dev, KHÔNG dùng cho production
⚠ Xoá instance dev khi không dùng
⚠ Reserved capacity nếu chạy dài hạn
⚠ Với dữ liệu rất lớn ⚠ cân nhắc Enterprise Flash rẻ hơn theo GB
⚠ Nhắc lại: Basic không có SLA Nhắc lại
⚠ Một node duy nhất
⚠ Bảo trì hoặc lỗi là mất toàn bộ cache
⚠ Cache trống dồn tải xuống CSDL
⚠ Production ⚠ tối thiểu Standard

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Instance dev có đang chạy 24/7 không | | | Bậc hiện tại có SLA không | | | Có nhầm chữ cái từ lần gặp trước không | |

Và điều sáu câu về Redis qua ba lô cùng chỉ ra: Redis tính tiền theo thời gian tồn tại, không theo mức sử dụng. Một instance dev bật từ tháng trước và không ai dùng vẫn tính đủ từng giờ.