Searching...
SoBrief
Tiếng Việt
EnglishEnglish
EspañolSpanish
简体中文Chinese
繁體中文Chinese (Traditional)
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Thiết kế ứng dụng sử dụng nhiều dữ liệu

Thiết kế ứng dụng sử dụng nhiều dữ liệu

Những ý tưởng lớn đằng sau các hệ thống đáng tin cậy, khả năng mở rộng dễ bảo trì
của Martin Kleppmann 2015 614 trang
4.70
10.000+ đánh giá
Nghe
Trải nghiệm toàn bộ trong 3 ngày
Mở khóa nghe & nhiều tính năng khác!
Tiếp tục

Những điểm chính

1. Hệ thống phân tán đối mặt với những thách thức đặc thù do mạng không ổn định

Nếu bạn chưa quen với hệ thống phân tán, những vấn đề này sẽ khiến bạn cảm thấy hoàn toàn bối rối.

Sự không chắc chắn của mạng. Hệ thống phân tán hoạt động trong môi trường mà các lỗi mạng, độ trễ và phân vùng mạng là chuyện thường gặp. Khác với hệ thống đơn lẻ, không có gì đảm bảo rằng một tin nhắn gửi đi sẽ được nhận hoặc khi nào nó đến nơi. Sự không chắc chắn này buộc hệ thống phân tán phải được thiết kế với khả năng chịu lỗi và độ bền vững cao.

Lỗi một phần. Trong hệ thống phân tán, một số thành phần có thể bị lỗi trong khi những thành phần khác vẫn hoạt động bình thường. Tình huống lỗi một phần này là đặc trưng của hệ thống phân tán và làm phức tạp đáng kể việc thiết kế và vận hành hệ thống. Các nhà phát triển phải tính đến các trường hợp như:

  • Các nút trở nên không thể truy cập do sự cố mạng
  • Tin nhắn bị mất hoặc bị trễ
  • Một số nút xử lý yêu cầu trong khi những nút khác bị ngưng hoạt động

Thách thức về tính nhất quán. Việc thiếu bộ nhớ chia sẻ và trạng thái toàn cục trong hệ thống phân tán khiến việc duy trì tính nhất quán giữa các nút trở nên khó khăn. Mỗi nút có cái nhìn cục bộ riêng về hệ thống, có thể bị lỗi thời hoặc không đồng bộ với các nút khác.

2. Đồng hồ và đồng bộ thời gian là vấn đề nan giải trong môi trường phân tán

Không tồn tại một thời gian toàn cục chính xác mà hệ thống phân tán có thể sử dụng.

Trôi đồng hồ. Đồng hồ vật lý trên các máy khác nhau không thể tránh khỏi việc lệch nhau theo thời gian. Dù có cố gắng đồng bộ thường xuyên, vẫn luôn tồn tại một mức độ không chắc chắn về thời gian chính xác trên toàn hệ thống phân tán. Sự lệch này có thể dẫn đến:

  • Vấn đề sắp xếp thứ tự trong các giao dịch phân tán
  • Dấu thời gian không nhất quán trên các sự kiện
  • Khó khăn trong việc xác định mối quan hệ nhân quả

Hạn chế của đồng bộ. Các giao thức như NTP (Network Time Protocol) cố gắng đồng bộ đồng hồ giữa các máy, nhưng chúng chịu ảnh hưởng của độ trễ mạng và không thể cung cấp sự đồng bộ hoàn hảo. Sự không chắc chắn trong đồng bộ đồng hồ có nghĩa là:

  • Dấu thời gian từ các máy khác nhau không thể so sánh trực tiếp
  • Các thao tác dựa trên thời gian (ví dụ: khóa phân tán) phải tính đến sự lệch đồng hồ
  • Các thuật toán dựa trên thời gian chính xác có thể thất bại một cách bất ngờ

Thời gian logic thay thế. Để giải quyết vấn đề này, hệ thống phân tán thường sử dụng đồng hồ logic hoặc cơ chế sắp xếp thứ tự từng phần thay vì dựa vào thời gian vật lý. Các phương pháp như dấu thời gian Lamport hay đồng hồ vector cung cấp cách sắp xếp sự kiện nhất quán trên toàn hệ thống mà không cần đồng bộ đồng hồ vật lý.

3. Đồng thuận là điều thiết yếu nhưng khó đạt được trong hệ thống phân tán

Những cuộc thảo luận về hệ thống này gần như mang tính triết học: Chúng ta biết điều gì là đúng hay sai trong hệ thống của mình?

Thách thức trong việc đồng thuận. Đạt được sự đồng thuận giữa các nút phân tán là vấn đề cốt lõi trong hệ thống phân tán. Điều này rất quan trọng cho các nhiệm vụ như:

  • Bầu chọn nút lãnh đạo
  • Đồng ý về thứ tự các thao tác
  • Đảm bảo trạng thái nhất quán giữa các bản sao

Tuy nhiên, việc đạt được đồng thuận bị phức tạp bởi độ trễ mạng, lỗi nút và khả năng thông tin mâu thuẫn.

Ý nghĩa của định lý CAP. Định lý CAP cho biết trong trường hợp phân vùng mạng, hệ thống phân tán phải lựa chọn giữa tính nhất quán và khả năng sẵn sàng. Sự đánh đổi cơ bản này định hình cách thiết kế các thuật toán đồng thuận và cơ sở dữ liệu phân tán. Hệ thống phải quyết định:

  • Ưu tiên tính nhất quán mạnh với chi phí giảm khả năng sẵn sàng
  • Ưu tiên khả năng sẵn sàng và chấp nhận sự không nhất quán tiềm ẩn

Thuật toán đồng thuận. Nhiều thuật toán đã được phát triển để giải quyết vấn đề đồng thuận, bao gồm:

  • Paxos
  • Raft
  • Zab (dùng trong ZooKeeper)
    Mỗi thuật toán có những đánh đổi riêng về độ phức tạp, hiệu năng và khả năng chịu lỗi.

4. Giao dịch phân tán đòi hỏi thiết kế cẩn trọng để duy trì tính nhất quán

Giao dịch ACID không phải là quy luật tự nhiên; chúng được tạo ra với mục đích đơn giản hóa mô hình lập trình cho các ứng dụng truy cập cơ sở dữ liệu.

Tính chất ACID. Giao dịch phân tán nhằm duy trì các tính chất ACID (Tính nguyên tử, Tính nhất quán, Tính cô lập, Tính bền vững) trên nhiều nút. Điều này rất khó khăn vì:

  • Tính nguyên tử đòi hỏi thực thi tất cả hoặc không gì cả trên các nút
  • Tính nhất quán phải được giữ dù có phân vùng mạng
  • Tính cô lập cần phối hợp để tránh xung đột thao tác
  • Tính bền vững phải được đảm bảo trên nhiều nút có thể bị lỗi

Giao thức hai pha cam kết. Giao thức hai pha cam kết (2PC) thường được dùng cho giao dịch phân tán, gồm:

  1. Pha chuẩn bị: Điều phối viên hỏi tất cả các bên tham gia xem có thể cam kết không
  2. Pha cam kết: Nếu tất cả đồng ý, điều phối viên ra lệnh cam kết; nếu không, tất cả hủy bỏ

Tuy nhiên, 2PC có hạn chế, ví dụ có thể bị khóa nếu điều phối viên bị lỗi.

Phương pháp thay thế. Để khắc phục hạn chế của giao dịch ACID nghiêm ngặt trong hệ thống phân tán, các mô hình khác đã xuất hiện:

  • Mẫu Saga cho giao dịch dài hạn
  • Mô hình BASE (Basically Available, Soft state, Eventually consistent)
  • Giao dịch bù trừ để xử lý lỗi

5. Chiến lược sao chép cân bằng giữa khả năng sẵn sàng và tính nhất quán dữ liệu

Có nhiều cách để xử lý sao chép, và mỗi cách đều có những đánh đổi quan trọng cần cân nhắc.

Mô hình sao chép. Hệ thống phân tán sử dụng nhiều chiến lược sao chép để cải thiện khả năng sẵn sàng và hiệu năng:

  • Sao chép một lãnh đạo
  • Sao chép đa lãnh đạo
  • Sao chép không lãnh đạo

Mỗi mô hình mang lại những đánh đổi khác nhau giữa tính nhất quán, khả năng sẵn sàng và độ trễ.

Cấp độ nhất quán. Sao chép tạo ra thách thức trong việc duy trì tính nhất quán giữa các bản sao. Hệ thống thường cung cấp nhiều cấp độ nhất quán:

  • Nhất quán mạnh: Tất cả bản sao luôn đồng bộ
  • Nhất quán cuối cùng: Các bản sao hội tụ theo thời gian
  • Nhất quán nhân quả: Bảo toàn mối quan hệ nhân quả giữa các thao tác

Giải quyết xung đột. Khi cho phép nhiều bản sao được cập nhật độc lập, xung đột có thể xảy ra. Các chiến lược giải quyết xung đột bao gồm:

  • Ghi cuối cùng thắng (dựa trên dấu thời gian)
  • Vector phiên bản để theo dõi lịch sử cập nhật
  • Hàm hợp nhất theo đặc thù ứng dụng

6. Phân vùng dữ liệu trên các nút giúp mở rộng quy mô nhưng làm tăng độ phức tạp

Lý do chính để phân vùng dữ liệu là để mở rộng quy mô.

Chiến lược phân vùng. Dữ liệu có thể được phân vùng trên các nút theo nhiều cách:

  • Phân vùng theo phạm vi: Chia dữ liệu dựa trên khoảng khóa
  • Phân vùng theo hàm băm: Dùng hàm băm để phân phối dữ liệu
  • Phân vùng theo thư mục: Dùng dịch vụ riêng để theo dõi vị trí dữ liệu

Mỗi chiến lược ảnh hưởng đến phân phối dữ liệu, hiệu năng truy vấn và tính linh hoạt của hệ thống.

Thách thức cân bằng lại. Khi hệ thống mở rộng hoặc thu nhỏ, dữ liệu cần được phân phối lại giữa các nút. Quá trình này, gọi là cân bằng lại, phải được thực hiện cẩn thận để:

  • Giảm thiểu di chuyển dữ liệu
  • Duy trì phân phối dữ liệu đều
  • Tránh làm gián đoạn các hoạt động đang diễn ra

Chỉ mục phụ. Phân vùng trở nên phức tạp hơn khi xử lý chỉ mục phụ. Các lựa chọn bao gồm:

  • Phân vùng chỉ mục phụ theo tài liệu
  • Phân vùng chỉ mục phụ theo từ khóa

Mỗi cách có những đánh đổi khác nhau về hiệu năng ghi và khả năng truy vấn đọc.

7. Khả năng chịu lỗi là điều thiết yếu nhưng đòi hỏi thiết kế hệ thống kỹ lưỡng

Làm việc với hệ thống phân tán khác biệt căn bản so với viết phần mềm trên một máy tính đơn lẻ — và sự khác biệt chính là có rất nhiều cách mới mẻ để mọi thứ có thể hỏng hóc.

Các kiểu lỗi. Hệ thống phân tán phải xử lý nhiều loại lỗi khác nhau:

  • Sập nút
  • Phân vùng mạng
  • Lỗi Byzantine (nút hoạt động sai hoặc có hành vi độc hại)

Thiết kế để chịu lỗi đòi hỏi phải dự đoán và giảm thiểu các tình huống lỗi này.

Dự phòng và sao chép. Các chiến lược chính để chịu lỗi bao gồm:

  • Sao chép dữ liệu trên nhiều nút
  • Sử dụng các thành phần dự phòng (ví dụ: nhiều đường mạng)
  • Triển khai cơ chế chuyển đổi dự phòng

Tuy nhiên, chỉ dự phòng thôi chưa đủ; hệ thống phải được thiết kế để phát hiện lỗi và phản ứng phù hợp.

Giảm suy giảm một cách nhẹ nhàng. Hệ thống phân tán được thiết kế tốt nên tiếp tục hoạt động, có thể với khả năng giảm, khi gặp lỗi một phần. Điều này bao gồm:

  • Cô lập lỗi để tránh lan rộng
  • Ưu tiên chức năng quan trọng
  • Cung cấp phản hồi rõ ràng cho người dùng về trạng thái hệ thống

8. Mô hình nhất quán mang lại sự đánh đổi giữa độ chính xác và hiệu năng

Linearizability là chủ đề lặp đi lặp lại trong hệ thống phân tán: đó là mô hình nhất quán rất mạnh.

Phổ nhất quán. Hệ thống phân tán cung cấp nhiều mô hình nhất quán, từ mạnh đến yếu:

  • Linearizability: Mạnh nhất, như thể tất cả thao tác xảy ra nguyên tử
  • Nhất quán tuần tự: Bảo toàn thứ tự thao tác trên mỗi khách hàng
  • Nhất quán nhân quả: Giữ mối quan hệ nhân quả giữa các thao tác
  • Nhất quán cuối cùng: Yếu nhất, đảm bảo hội tụ theo thời gian

Mô hình mạnh hơn mang lại hành vi trực quan hơn nhưng thường phải đánh đổi bằng độ trễ tăng và khả năng sẵn sàng giảm.

Ý nghĩa của định lý CAP. Lựa chọn mô hình nhất quán chịu ảnh hưởng bởi định lý CAP:

  • Mô hình nhất quán mạnh giới hạn khả năng sẵn sàng khi có phân vùng mạng
  • Mô hình yếu hơn cho phép khả năng sẵn sàng tốt hơn nhưng có thể gây ra không nhất quán

Cân nhắc ứng dụng. Mô hình nhất quán phù hợp phụ thuộc vào yêu cầu cụ thể của ứng dụng:

  • Hệ thống tài chính thường cần nhất quán mạnh
  • Ứng dụng mạng xã hội có thể chấp nhận nhất quán cuối cùng
  • Một số hệ thống sử dụng nhiều cấp độ nhất quán cho các thao tác khác nhau

9. Thiết kế hệ thống phân tán phải tính đến lỗi một phần

Trong hệ thống phân tán, chúng ta cố gắng xây dựng khả năng chịu lỗi một phần vào phần mềm, để hệ thống tổng thể có thể tiếp tục hoạt động ngay cả khi một số bộ phận bị hỏng.

Phát hiện lỗi. Việc xác định lỗi trong hệ thống phân tán rất khó do sự không chắc chắn của mạng. Các phương pháp phổ biến bao gồm:

  • Cơ chế heartbeat
  • Giao thức gossip
  • Bộ phát hiện lỗi phi-accrual

Tuy nhiên, thường không thể phân biệt rõ giữa nút bị lỗi và phân vùng mạng.

Xử lý lỗi. Khi phát hiện lỗi, hệ thống phải phản ứng phù hợp:

  • Bầu chọn lãnh đạo mới
  • Chuyển hướng yêu cầu
  • Khởi động quá trình phục hồi

Mục tiêu là duy trì khả năng sẵn sàng và tính nhất quán của hệ thống dù có lỗi một phần.

Nguyên tắc thiết kế. Các nguyên tắc quan trọng để xây dựng hệ thống phân tán bền vững bao gồm:

  • Giả định lỗi sẽ xảy ra và thiết kế cho phù hợp
  • Sử dụng timeout và thử lại, nhưng hiểu rõ giới hạn của chúng
  • Triển khai bộ ngắt mạch để ngăn lỗi lan rộng
  • Thiết kế để idempotent, xử lý an toàn các yêu cầu trùng lặp

Tóm lại, những điểm trên phác họa những thách thức và nguyên tắc cơ bản của hệ thống phân tán. Chúng nhấn mạnh những khó khăn đặc thù do mạng không ổn định, vấn đề đồng bộ thời gian và nhu cầu đồng thuận. Đồng thời, bài viết cũng trình bày các chiến lược duy trì tính nhất quán trong giao dịch phân tán, cân bằng giữa sao chép và phân vùng dữ liệu, cũng như thiết kế để chịu lỗi. Cuối cùng, nó làm rõ những đánh đổi trong việc lựa chọn mô hình nhất quán và tầm quan trọng của việc tính đến lỗi một phần trong thiết kế hệ thống. Qua đó, ta thấy rõ những cân nhắc vừa triết học vừa thực tiễn định hình kiến trúc và triển khai hệ thống phân tán.

Cập nhật lần cuối:

Report Issue

Tóm tắt đánh giá

4.70 trên 5
Trung bình từ 10.000+ đánh giá từ GoodreadsAmazon.

Cuốn sách Thiết Kế Ứng Dụng Xử Lý Dữ Liệu Lớn được đánh giá là tài liệu không thể thiếu dành cho các kỹ sư phần mềm và nhà phát triển. Độc giả trân trọng sự bao quát toàn diện về lưu trữ dữ liệu, hệ thống phân tán và các khái niệm cơ sở dữ liệu hiện đại mà cuốn sách mang lại. Tác phẩm được khen ngợi nhờ những giải thích rõ ràng, ví dụ thực tiễn và các sơ đồ minh họa sâu sắc. Nhiều người xem đây như một bách khoa toàn thư thu nhỏ về kỹ thuật dữ liệu, cung cấp kiến thức quý giá cho cả người mới bắt đầu lẫn những chuyên gia dày dạn kinh nghiệm. Dù có một số phần được cho là khó hiểu hoặc mang tính học thuật cao, phần lớn đều đồng thuận rằng cuốn sách tạo nền tảng vững chắc để hiểu về các hệ thống và kiến trúc dữ liệu phức tạp.

Your rating:
4.73
601 đánh giá
Want to read the full book?

Câu hỏi thường gặp

What's Designing Data-Intensive Applications about?

  • Focus on Data Systems: The book explores the principles and practices behind building reliable, scalable, and maintainable data-intensive applications. It covers various architectures, data models, and the trade-offs involved in designing these systems.
  • Enduring Principles: Despite rapid technological changes, the book emphasizes fundamental principles that remain constant across different systems, equipping readers to make informed decisions about data architecture.
  • Real-World Examples: Martin Kleppmann uses examples from successful data systems to illustrate key concepts, making complex ideas more accessible through practical applications.

Why should I read Designing Data-Intensive Applications?

  • Comprehensive Overview: The book provides a thorough examination of data systems, making it suitable for software engineers, architects, and technical managers. It covers a wide range of topics, from storage engines to distributed systems.
  • Improved Decision-Making: By understanding the trade-offs of various technologies, readers can make better architectural decisions for their applications, crucial for meeting performance and reliability requirements.
  • Curiosity and Insight: For those curious about how data systems work, the book offers deep insights into the internals of databases and data processing systems, encouraging critical thinking about application design.

What are the key takeaways of Designing Data-Intensive Applications?

  • Reliability, Scalability, Maintainability: The book emphasizes these three principles as essential for building robust data-intensive applications.
  • Understanding Trade-offs: It highlights the importance of understanding trade-offs in system design, such as the CAP theorem, which states that "you can only pick two out of consistency, availability, and partition tolerance."
  • Data Models and Replication: The choice of data model significantly impacts application performance, and the book discusses various replication strategies and their implications for consistency.

What are the best quotes from Designing Data-Intensive Applications and what do they mean?

  • "Technology is a powerful force in our society.": This quote underscores the dual nature of technology, serving as a reminder of the ethical responsibilities in building data systems.
  • "The truth is the log. The database is a cache of a subset of the log.": This encapsulates the idea of event sourcing, where the log of events is the authoritative source, and the database provides a read-optimized view.
  • "If you understand those principles, you’re in a position to see where each tool fits in.": Highlights the importance of grasping fundamental principles to effectively utilize various technologies.

How does Designing Data-Intensive Applications define reliability, scalability, and maintainability?

  • Reliability: Refers to the system's ability to function correctly even in the face of faults, involving design strategies to tolerate hardware failures, software bugs, and human errors.
  • Scalability: Concerns how well a system can handle increased load, requiring strategies like partitioning and replication to cope with growth in data volume, traffic, or complexity.
  • Maintainability: Focuses on how easily a system can be modified and updated over time, emphasizing simplicity, operability, and evolvability for productive team work.

What is the CAP theorem in Designing Data-Intensive Applications?

  • Consistency, Availability, Partition Tolerance: The CAP theorem states that in a distributed data store, it is impossible to simultaneously guarantee all three properties.
  • Trade-offs in Design: Emphasizes the trade-offs system designers must make, such as sacrificing availability during network failures to prioritize consistency and partition tolerance.
  • Historical Context: Introduced by Eric Brewer in 2000, the theorem has significantly influenced the design of distributed systems.

How does Designing Data-Intensive Applications explain data models and query languages?

  • Data Models: Compares various data models, including relational, document, and graph models, each with strengths and weaknesses, crucial for selecting the right one based on application needs.
  • Query Languages: Discusses different query languages like SQL for relational databases and those for NoSQL systems, essential for effectively interacting with data.
  • Use Cases: Emphasizes that different applications have different requirements, guiding informed decisions about data architecture.

What are the different replication methods in Designing Data-Intensive Applications?

  • Single-Leader Replication: Involves one node as the leader processing all writes and replicating changes to followers, common but can lead to bottlenecks.
  • Multi-Leader Replication: Allows multiple nodes to accept writes, improving flexibility and availability but introducing complexities in conflict resolution.
  • Leaderless Replication: Any node can accept writes, improving availability but requiring careful management of consistency.

How does Designing Data-Intensive Applications address schema evolution?

  • Schema Changes: Discusses the inevitability of application changes requiring corresponding data schema changes, emphasizing backward and forward compatibility.
  • Encoding Formats: Explores various encoding formats like JSON, XML, and binary formats, highlighting trade-offs associated with each for schema evolution.
  • Practical Strategies: Provides advice on handling schema changes in real-world applications, ensuring old and new data versions can coexist without issues.

What is the significance of event sourcing in Designing Data-Intensive Applications?

  • Immutable Event Log: Involves storing all changes as an immutable log of events, allowing easy reconstruction of the current state by replaying the log.
  • Separation of Concerns: Enables multiple views of data from the same log, allowing for easier application evolution over time.
  • Auditability and Recovery: Provides a clear audit trail of changes, simplifying recovery from errors by rebuilding the state from the event log.

How does Designing Data-Intensive Applications propose handling network partitions?

  • Network Faults: Explains that network partitions can lead to inconsistencies across replicas, complicating distributed system design.
  • Handling Partitions: Discusses strategies like the CAP theorem, which states a system can only guarantee two of three properties: Consistency, Availability, and Partition Tolerance.
  • Practical Implications: Emphasizes designing systems that tolerate network faults and continue operating effectively.

What are the ethical considerations in Designing Data-Intensive Applications?

  • Responsibility of Engineers: Stresses the ethical implications of data collection and usage, including awareness of potential biases and discrimination in algorithms.
  • Impact of Predictive Analytics: Discusses risks associated with predictive analytics, urging careful consideration of data-driven decisions and their consequences.
  • Surveillance Concerns: Raises concerns about surveillance capabilities, advocating for user privacy, transparency, and control over personal data.

Về tác giả

Martin Kleppmann là một chuyên gia hàng đầu về hệ thống phân tán và kỹ thuật dữ liệu. Ông được biết đến nhiều nhất qua những đóng góp quan trọng cho Apache Samza và hạ tầng dữ liệu của LinkedIn. Kiến thức sâu rộng của Kleppmann về cơ sở dữ liệu, hệ thống trung gian tin nhắn và xử lý dữ liệu được thể hiện rõ nét trong toàn bộ cuốn sách. Phong cách viết của ông được đánh giá cao nhờ sự rõ ràng và khả năng giải thích những khái niệm phức tạp một cách dễ hiểu. Với nền tảng vững chắc trong cả học thuật lẫn thực tiễn, Kleppmann đã kết nối thành công giữa lý thuyết và ứng dụng thực tế. Những công trình của ông đã tạo nên ảnh hưởng sâu rộng trong lĩnh vực các ứng dụng dữ liệu lớn và hệ thống phân tán.

Follow
Nghe
Now playing
Thiết kế ứng dụng sử dụng nhiều dữ liệu
0:00
-0:00
Now playing
Thiết kế ứng dụng sử dụng nhiều dữ liệu
0:00
-0:00
1x
Queue
Home
Swipe
Library
Get App
Try Full Access for 3 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
Read unlimited summaries. Free users get 3 per month
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 26,000+ books. That's 12,000+ hours of audio!
Day 2: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 3: Your subscription begins
You'll be charged on Jun 9,
cancel anytime before.
Consume 2.8× More Books
2.8× more books Listening Reading
Our users love us
600,000+ readers
Trustpilot Rating
TrustPilot
4.6 Excellent
This site is a total game-changer. I've been flying through book summaries like never before. Highly, highly recommend.
— Dave G
Worth my money and time, and really well made. I've never seen this quality of summaries on other websites. Very helpful!
— Em
Highly recommended!! Fantastic service. Perfect for those that want a little more than a teaser but not all the intricate details of a full audio book.
— Greg M
Save 62%
Yearly
$119.88 $44.99/year/yr
$3.75/mo
Monthly
$9.99/mo
Start a 3-Day Free Trial
3 days free, then $44.99/year. Cancel anytime.
Unlock a world of fiction & nonfiction books
26,000+ books for the price of 2 books
Read any book in 10 minutes
Discover new books like Tinder
Request any book if it's not summarized
Read more books than anyone you know
#1 app for book lovers
Lifelike & immersive summaries
30-day money-back guarantee
Download summaries in EPUBs or PDFs
Cancel anytime in a few clicks
Scanner
Find a barcode to scan

We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel
Settings
General
Widget
Loading...
We have a special gift for you
Open
38% OFF
DISCOUNT FOR YOU
$79.99
$49.99/year
only $4.16 per month
Continue
2 taps to start, super easy to cancel