Software Architecture & Engineering
82 notes
Some notes are currently available only in Chinese. English translations are shown when available.
- OAuthhistorical
Historical OAuth 2.0 notes covering why OAuth is needed, the authorization flow, grant modes, token refresh, and scopes.
- How to Design a Configuration Centerhistorical
What a configuration center is, why it is needed, storage, client notification, service discovery, caching, canary release, and an example configuration-center database design.
- How to Design a Load-Balancing Componenthistorical
What load balancing is, why it is needed, common algorithms, hardware/software/DNS choices, L2/L3/L7 approaches, and client-side versus server-side load balancing.
- How to Design a Service Registryhistorical
What a service registry is, why it is needed, server-side and client-side design, service discovery and routing, registry components, and ZooKeeper versus Eureka.
- How to Design an API Gatewayhistorical
What an API gateway is, why it is needed, request forwarding and filtering, I/O models, common gateway components, BFF, and gateway aggregation.
- How to Design a Monitoring Systemhistorical
What monitoring is, why microservices need it, and the three parts: logs, metrics, and tracing.
- How to Design Distributed Tracinghistorical
What tracing is, why it is needed, Span/Trace/Annotation data, sampling, collection approaches, storage, display, and common tracing components.
- How to Design a Fault-Tolerance Componenthistorical
What fault tolerance is, service avalanche, and common techniques including timeouts, retries, rate limiting, circuit breaking, isolation, and degradation.
- How to Design Log Monitoringhistorical
What log monitoring is, why it is needed, logging strategy, collection, aggregation, indexing and storage, analysis, and ELK.
- How to Design Metrics Monitoringhistorical
What metrics monitoring is, why it is needed, what to monitor, how to collect and store metrics, alerting, and common metrics components.