马哥云原生微服务治理课程
如何提高微服务性能
已入坑,使用不同的微服务会导致 EdTech 应用程序出现大量性能问题,因此我们想出了开发新报告微服务的想法。新的微服务不会试图调和冲突的技术,而是直接从不同的数据库中获取数据,通过消息传递和计算系统传输数据,然后将其存储在单独的数据库中。之后,微服务可以使用数据库中的数据来创建自定义报告。
由于需要开发两个相同的解决方案(自托管和 SaaS 版本),该任务变得更加复杂,因此该团队针对报告微服务的各个方面浏览了几种技术替代方案,以便为这两种部署模式提供最佳堆栈。
报告模块实现 6 步
Freshcode 团队将微服务开发过程分解为六个阶段。与往常一样,他们首先分析需求并选择最佳技术和解决方案。
1. 更改数据捕获
Oracle 是中央报告微服务数据库,因此我们使用 StreamSets Data Collector 作为具有内置 Oracle CDC 支持的可定制开源解决方案。Matillion 和 Apache NiFi 同样用户友好,深受开发人员喜爱,如果他们提供类似的 Oracle 支持,他们就会成功。
2. 消息系统
开发团队选择 Apache Kafka 作为持久、可扩展和容错的消息传递系统。虽然它需要专家 DevOps,但该解决方案拥有原生的流内计算和批处理模式。此外,与 AWS Kinesis 不同,Apache Kafka 可以在内部使用。
3. 流计算系统
尽管架构复杂,但 Apache Flink 凭借其容错性、可扩展性、低延迟和一次性状态一致性成为 EdTech 应用程序的最佳选择。AWS Kinesis Services 也是首选,但它们不能在本地使用,因此 Freshcode 不得不放弃 AWS 解决方案。
4. 数据湖
选择 AWS S3 来创建历史和当前数据的存储库。这是一种持久且经济高效的开源解决方案,易于与其他 AWS 产品集成。Freshcode 团队认为 Apache Hadoop 是一个有价值的替代方案,尽管在部署和管理方面它是一个更具挑战性的选择。
5. 报告数据库
报告微服务必须与其他应用程序模块配合使用,团队建议 AWS Aurora 作为最佳选择。对于 SQL 数据库来说,它非常快,同时具有高度的可扩展性和持久性。虽然最小可用实例太大,但可以用普通的 PostgreSQL 代替。团队考虑的其他选项包括 AWS Redshirt、Apache Druid 和 Kinetica。
6.报表微服务
微服务的核心功能包括存储数据对象及其关系,以及根据选定的数据对象生成自定义报告。
SAAS 和自托管解决方案的技术堆栈
Freshcode 开发人员选择 NodeJS 来为 SaaS EdTech 解决方案创建微服务。它主要依赖 AWS 产品,如 AWS S3、Aurora 和 ElasticCache,并辅以 StreamSets 和 Apache Kafka。这种技术堆栈是理想的,因为它可以很容易地被自托管的替代方案取代,而不会中断另一个部署模式的微服务的代码和逻辑。
内部报告微服务改用 Minio、PostgreSQL 和 Redis,因为它们的 API 完全兼容并提供无缝操作。
微服务中的自定义报告
报告微服务的成功实施以及 Freshcode 实现的其他改进使 EdTech 公司能够更新应用程序的设计和架构,并通过添加新的和增强的功能使其更好。此外,通过消除报告性能问题,该应用程序对于内部和 SaaS 部署变得更加灵活和可扩展。