System Design Landscape
静态资源加速
1,CDN(Content Delivery Network)
CDN 是分布式部署的,它将内容存储在多个地理位置的服务器上。当用户请求某个内容时,CDN 会根据用户的所在位置,将请求发送到距离用户最近的服务器。这样可以提高用户访问内容的速度和可靠性。
- CDN 服务商均由各云平台供应商提供。
- 应用于网站加速,流媒体加速等。
- 使用到路由,隧道,传输等网络技术,分布式存储等存储技术,以及各种调度算法,如基于距离的最短路径算法,基于负载的响应时间优先算法,以及基于成本或其它智能调度算法。
域名负载均衡
域名负载均衡是指通过域名解析技术,将域名解析到多个服务器上,从而实现用户请求的负载均衡。域名负载均衡可以提高网站或应用的访问速度、可用性和可扩展性。
实现技术包括:
- DNS 轮询:在 DNS 解析服务器上配置多个服务器的 IP 地址,按照一定的顺序将用户请求分发到这些服务器上。
- 权重轮询:在 DNS 解析服务器上配置多个服务器的 IP 地址和权重,按照权重的大小将用户请求分发到这些服务器上。
- 随机分发
- 哈希分发:在 DNS 解析服务器上配置多个服务器的 IP 地址,根据用户请求的某个属性(如 IP 地址或用户 ID)进行哈希计算,将用户请求分发到对应的服务器上。
1,硬件负载均衡
- F5 是一家提供负载均衡产品和服务的公司,其产品包括 BIG-IP 系列。BIG-IP 产品可以实现多种负载均衡功能,包括域名负载均衡。
- Citrix ADC,formerly known as Citrix NetScaler, is a line of products that are application delivery controllers (ADCs)
- Advanced Layer 4 (L4) load balancing
- Layer 7 (L7) traffic management
2,软件负载均衡
- Nginx
- HAProxy:一个免费的、开源的、高性能的、可靠的、易于使用的代理和负载均衡器。
- LVS:Linux 虚拟服务器(LVS)是一个开源的、高性能的负载均衡软件,它可以用于将用户请求分发到多个后端服务器上。LVS 工作在网络层(L3),可以实现高性能、高可用性的负载均衡。中文文档,参考资料
3,云负载均衡器
- AWS Elastic Load Balancing
- Azure Load Balancing
下述所有内容均需要罗列相应的技术选型方案
后端系统架构
微服务架构
服务网格
容器化
- 云原生
- Docker
- K8S
前端系统架构
SPA(Single Page Application)
MPA(Multi-Page Application)
技术选型
API 网关
负载均衡
限流和熔断
注册中心
配置中心
链路追踪
监控和告警
系统监控
日志系统
告警
鉴权
Basic Auth
OAuth
JWT
RBAC
服务间通信
HTTP
RPC
MQ
Websocket
数据存储
DB 类型
存储架构
- 主从
- 集群
事物和分布式事物
大数据
存储
检索
- 事物特性
- 分布式事物
性能和调优
性能测试
系统调优
缓存
高并发
批处理
锁和安全
分布式锁
TSL/SSL
安全检测
CI(Continuous Integration)
CI 是指开发人员在每次提交代码后,自动化地将代码构建、测试和部署到一个预定的环境中。CI 的目的是尽早发现代码中的错误,并确保代码的质量。
Package
代码风格检测
代码质量检测
Test
方法论
自动化测试
单元测试报告
Repository
CD(Continuous Delivery)
CD 是指将持续集成的结果自动化地部署到生产环境中。CD 的目的是让软件能够更频繁地、更可靠地交付给用户。
方法论
- 蓝绿部署
- 灰度部署
工具链
- Jenkins
- Ansible