此方法用于通过将大型结果集流式传输回客户端来优化大型结果集,从而增强服务响应能力和用户体验。
这种方法涉及将日志发送到无锁缓冲区并立即返回,而不是在每次调用时处理磁盘。日志会定期刷新到磁盘,从而显著减少 I/O 开销。
经常访问的数据可以存储在缓存中以加快检索速度。客户端在查询数据库之前检查缓存,Redis 等数据存储解决方案由于内存存储而提供更快的访问速度。
为了减少数据传输时间,可以压缩请求和响应(例如,使用 gzip),从而加快上传和下载过程。
此技术涉及使用打开连接池来管理数据库交互,从而减少每次需要加载数据时打开和关闭连接的开销。池管理连接的生命周期,以实现资源的高效使用。
在 API 设计方面,REST 和 GraphQL 各有优缺点。
使用 GET、POST、PUT、DELETE 等标准 HTTP 方法进行 CRUD作。
当您需要在单独的服务/应用程序之间建立简单、统一的接口时,效果很好。
缓存策略易于实现。
缺点是可能需要多次往返才能从单独的端点组装相关数据。
为客户端提供单一端点,以准确查询他们需要的数据。
客户端指定嵌套查询中所需的确切字段,服务器返回仅包含这些字段的优化有效负载。
支持用于修改数据的突变和用于实时通知的订阅。
非常适合聚合来自多个来源的数据,并且可以很好地满足快速发展的前端需求。
但是,它将复杂性转移到客户端,如果保护不当,可能会允许滥用查询
缓存策略可能比 REST 更复杂。
REST 和 GraphQL 之间的最佳选择取决于应用程序和开发团队的具体要求。GraphQL 非常适合复杂或频繁变化的前端需求,而 REST 则适合首选简单且一致的合约的应用程序。
令牌(例如 JWT)和 API 密钥都用于身份验证和授权,但它们的用途不同。让我们了解两者的简化流程。
静态网站托管在 S3 上,并通过 CloudFront 在全球范围内提供服务,以实现低延迟。支持前端开发的其他服务包括 Amplify、Cognito 和 Device Farm。
API Gateway 和 AppSync 公开了具有内置安全性和限制功能的 REST 和 GraphQL API。在该领域工作的其他服务包括 Lambda、ELB 和 CloudFront。
此层承载业务逻辑。此层中一些重要的服务包括 Fargate、EKS、Lambda、EventBridge、Step Functions、SNS 和 SQS。
上传到 S3,通过 Elastic Transcoder 进行转码,并使用 Rekognition 进行分析以进行审核。CloudFront 签名 URL 可确保将视频和文件安全地交付给经过身份验证的用户。
层的主要服务是 Aurora、DynamoDB、ElastiCache、Neptune 和 OpenSearch。
在堆栈的这一层中提供帮助的一些 AWS 服务包括 IAM、Cognito、WAF、KMS、Secrets Manager 和 CloudTrail。
监控日志、指标和警报。X-Ray 提供请求路径的跟踪。CloudTrail 捕获 API 调用。Config 确保合规性,GuardDuty 检测安全威胁。
该层使用的主要服务是 CodeCommit、CodeBuild、CodeDeploy、CodePipeline、CloudFormation、ECR 和 SSM。
Route 53 和 Global Accelerator 可确保快速 DNS 和全球路由。VPC 对网络进行分段,而 NAT 和 Transit Gateway 则处理安全流量。AWS Backup 提供跨区域的灾难恢复。
索引使用平衡的树结构,其中键和数据指针存在于内部节点和叶节点中。它们通过有序遍历支持高效的范围和点查询。
B+ 树索引将所有数据指针存储在叶节点中,而内部节点仅保存用于指导搜索的键。叶节点通过顺序访问链接以进行快速范围查询。
哈希索引将哈希函数应用于搜索键,以直接定位指向数据行的指针的存储桶。它们针对相等搜索进行了优化,但不针对范围查询进行了优化。
图索引使用每个可能值的位数组表示列值,从而允许通过按位运算进行快速筛选。它们非常适合低基数分类数据。
倒排索引将每个唯一术语映射到包含该术语的行 ID 列表,从而实现快速全文搜索。
https://blog.bytebytego.com/p/ep172-top-5-common-ways-to-improve