架构模式
Software Architecture & Engineering · 24 notes
- Architecture Patternshistorical
Monolithic, layered, event-driven, CQRS, microservice, and plug-in architecture patterns.
- Monolithic Architecturehistorical
What monolithic architecture is and its advantages and disadvantages.
- Layered Architecturehistorical
What layered architecture is and its evolution from one, two, and three tiers to DDD four-layer, hexagonal, and onion architectures.
- Read/Write Separation Architecturehistorical
What read/write separation is, why it is needed, where it applies, how to design it at the service and storage layers, and the materialized-view pattern.
- Event-Driven Architecturehistorical
What event-driven architecture is, why it is needed, its real-time trade-off, and publisher-subscriber and event-stream design patterns.
- Domain-Driven Designhistorical
What DDD is: domains, ubiquitous language and bounded contexts, entities and value objects, aggregates, domain events, repositories and factories, and a DDD design process.
- Microserviceshistorical
Historical notes on what microservice architecture is, its relationship with SOA, trade-offs, decomposition, project architecture, and the microservice technology stack.
- OpenID Connecthistorical
Historical notes on what OpenID Connect is and how its flow differs from OAuth by adding OpenID identity information and an ID Token.
- JWThistorical
Historical JWT notes covering what JWT is, why it is used, JWT versus sessions, token structure, and the basic request flow.
- 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.
- How to Design Authentication and Authorizationhistorical
Authentication, authorization, and credentials; common techniques; and how authentication and authorization are integrated into a microservice architecture.
- Service Meshhistorical
Historical notes on cloud native, cloud platforms, VPCs, and the evolution, purpose, and common implementations of Service Mesh.
- How to Design a Container Scheduling Systemhistorical
A short note on what container scheduling is, why it is needed, and Kubernetes as a scheduling component.
- How to Design a Pipeline Systemhistorical
A short note on CI/CD pipelines, their purpose, design, and Jenkins.