1. Characteristics
    1. Decouples applications for independent scaling
    2. Delivery of messages at least once, at low latency
    3. Suitable for data arriving at high, unpredictable rates
    4. Natural pairing with Dataflow for analyzing streaming data
    5. Enables independent applications to send and receive messages
    6. Holds onto data for up to seven days
    7. Does not guarantee first in, first out
    8. Can be the single ingest for all data points
    9. Can dynamically rate limit, enabling users to throttle messages
    10. Provides end-to-end reliability
    11. Acknowledges at least one guaranteed delivery and receipt of each individual message
    12. There is a small chance some messages might be delivered more than once
    13. Messages are Published to a specific topic
    14. Messages do not have to be received synchronously
    15. Messages are completely encrypted
    16. Applications can publish messages and one or more subscribers receive them
    17. Decouples sender's transmission of the message from the receiver's receipt of the message
    18. Message arrives at the subscriber where it is consumed
    19. After a message is consumed, the publisher sends an acknowledgment to the subscription
    20. When all deliveries are complete, messages are removed from the queue
    21. No clusters to configure. Users simply pay for what they use
    22. Uses two levels of indirection between the publisher and the subscriber
    23. Offers on demand scalability to one million messages per second and beyond
    24. PubSub builds on the same technology Google uses internally
  2. Concepts
    1. A Message represents data in transit through a system
    2. A Message consists of a payload and optional attributes that describe the payload
    3. Data is transmitted to one or more subscriptions
    4. A Topic is a feed of data
    5. Subscribing Forwarder ensures data delivery
    6. Subscriptions expresses an interest in receiving messages
    7. Subscriptions register each delivery of data
    8. Subscription determines which subscribers are registered to receive a message and queues up the messages to be sent
    9. Subscribers receive messages by Pub/Sub, pushing them to the endpoint or by pulling them from the service
    10. Subscribers can be configured to receive messages on a push or pull basis
    11. Publishing Forwarder receives data from the publisher on behalf of the topic
    12. Pull subscribers use HTTPS requests to google APIs
    13. Push subscribers can accept post requests over HTTPS
    14. Push subscribers use webhook endpoints
    15. Pub is short for publishers
    16. Sub is short for subscribers
  3. Use cases
    1. Balancing workloads in network clusters
    2. Implementing asynchronous workflows
    3. Aggregating log data from multiple systems
    4. Refreshing distributed caches
    5. Distributing event notifications
    6. Data streaming from various processes or devices
    7. Reliability improvement
    8. Use case scenarios
      1. A large queue of tasks can be efficiently distributed among multiple workers
      2. An order processing application can place an order on a topic and processed by one or more workers
      3. A service that accepts user sign ups can send notifications whenever a new user registers
      4. An application can publish invalidation events to update the IDs of objects that have changed
      5. A Google Compute Engine instance can write logs to the monitoring system to a database for later querying
      6. A residential sensor can stream data to back-end services hosted in the cloud
      7. A single zone Compute Engine service can operate in additional zones by subscribing to a common topic to recover from failures in a zone or region