客户痛点:
作为一家依赖在线平台运营的电子商务企业,优易电商每天都要处理大量由用户生成的数据,包括浏览行为、购物车活动、订单处理、以及客户反馈等。为了在竞争激烈的市场中保持领先地位,公司必须确保这些数据能够实时处理,并在适当的时间点进行深入分析,以优化库存管理,提升用户满意度,并支持数据驱动的战略决策。
ALB+Auto Scaling:通过ALB的目标组与Auto Scaling结合,实现流量自动分发到集群并且新增服务器自动加入集群以及缩减服务器时自动将服务移除集群的功能,同时通过Auto Scaling 中的指标对EC2实例进行监控,在服务器负载过高时自动自动进行横向扩展,以减小服务宕机的可能性,提高系统的可靠性以及扩展性。
Redshift:基于AWS托管的数据仓库,应用Redshift的弹性扩展功能实现数据库层的可靠性以及扩展性
数据导入与存储:
Kinesis Data Streams:用于实时处理和传输从Web日志等流数据源捕获的数据,适用于获取实时数据参与数据分析。
Kinesis Data Firehose:将通过Kinesis Data Streams收集的实时数据传输并存储到S3中,以备后续分析和持久化。
Glue ETL:使用AWS Glue进行数据的提取、转换和加载(ETL)操作,将存储在S3中的原始数据转换为分析所需的格式,并将处理后的数据存储在Redshift数据仓库中。
-
QuickSight:通过与Redshift集成,QuickSight提供快速、易用的商业智能(BI)服务,实现对数据进行可视化分析和报表生成。
为确保数据的长期存储和归档,架构中使用了以下组件:
S3 Glacier:将存储在S3中的数据备份到S3 Glacier进行长期归档存储,适用于不常访问但需要长期保存的数据。通过设置生命周期策略,数据在一段时间后自动转移到Glacier中以降低存储成本。

-
IAM:为了整体架构的安全,通过IAM最小权限策略对所有用户以及服务权限进行限制,确保用户或服务没有过大的权限,减小安全事件发生的风险 ACM:考虑到大部分用户通过HTTPS访问网站,选择使用ALB与Certificate Manager相结合,为网站实现SSL安全认证。
-
操作:通过Auto Scaling组监控EC2实例的负载情况,确保在流量高峰时,能够自动扩展实例数量,并通过ALB将流量均匀分发到所有活跃实例。 经验:这种动态扩展机制在流量突增时,显著提高了系统的稳定性和响应能力,避免了因负载过高而导致的服务中断。
2.数据处理流程的可靠性:
-
操作:使用Kinesis Data Streams进行实时数据处理,并通过Kinesis Firehose将数据可靠地传输并存储到S3中,随后通过Glue进行ETL处理并加载到Redshift中。 经验:这套数据处理流程在处理大规模数据时表现出色,能够确保数据从流输入到最终存储和分析的可靠性和一致性,适合大数据环境下的实时分析需求。
3.Redshift的性能优化:
-
操作:通过合理的节点配置和存储分配,在Redshift中部署数据仓库以支持大规模数据分析需求。 经验:Redshift的高性能计算能力在处理大量数据时表现良好,尤其是在配置了优化的ETL流程后,数据加载和查询的效率得到了显著提升,适合高吞吐量的分析场景。
1.资源过度配置导致成本浪费:
-
操作:为应对潜在的高负载,可能会配置过多的EC2实例或过高规格的Redshift节点。 教训:资源的过度配置可能导致大量的闲置资源,增加不必要的运营成本。建议在初期根据实际需求配置资源,并定期审查和调整资源分配,以保持最佳的性价比。
2.数据流处理中的延迟管理:
-
操作:使用Kinesis Data Streams处理实时数据,并通过Kinesis Firehose进行传输和存储。 -
教训:在高流量场景下,数据流处理链可能会出现延迟。应在部署前进行充分的容量规划,并在系统运行期间定期监控流处理的延迟情况,以确保实时性要求得到满足。
3.S3存储成本管理不足:
-
操作:将大量数据存储在S3中,以供后续分析和处理,未配置合理的生命周期,导致成本过高。 教训:在设置S3生命周期策略时,没有按照业务需求进行合理的生命周期设置,导致数据未能及时归档到更便宜的存储类别(如S3 Glacier),从而导致存储成本上升。建议仔细规划并定期审查生命周期策略,确保不常用的数据能够按照预期及时归档,最大程度地优化存储成本。


