译者 | 李睿
审校 | 孙淑娟
为了说明如何使用Kubernetes,建议考虑本文介绍的区块链案例,并探讨为加密货币市场开发的应用程序。这个应用程序使用的技术是实用的,也可以用于其他项目。换句话说,技术任务是一个非常通用的解决方案,主要针对Kubernetes进行了专门调整,也可以用于其他行业。
使用的技术
该项目是一个启动项目,预算有限。而开发人员将定期为投资者提供演示,并定期展示开发新功能的进展情况。因此决定使用以下技术:
- Node JS(NestJS 框架)
- Postgre SQL数据库
- Kafka JS
- Kubernetes(k8s)+Helm图表
- Flutter
- React
开发过程
对于第一阶段,开发人员的主要目的是将其应用程序拆分为微服务。在这一案例中,决定创建6个微服务。
(1)管理微服务
(2)核心微服务
(3)支付微服务
(4)邮件和通知服务
(5)Cron任务服务
(6)Webhooks微服务
值得一提的是,虽然技术堆栈是实用的,并且可以在各种情况下使用而无需更改,但上述微服务却不是,它们是专门为这一项目中所需的功能而创建的。因此可以使用相同的技术,但必须根据需要设计新的微服务。
以下了解如何在NestJS上制作这些微服务。需要为Kafka消息代理进行配置选项。因此,为所有微服务的常用模块和配置创建了一个共享资源文件夹。
微服务配置选项
import { ClientProviderOptions, Transport } from '@nestjs/microservices';
import CONFIG from '@application-config';
import { ConsumerGroups, ProjectMicroservices } from './microservices.enum';
const { BROKER_HOST, BROKER_PORT } = CONFIG.KAFKA;
export const PRODUCER_CONFIG = (name: ProjectMicroservices): ClientProviderOptions => ({
name,
transport: Transport.KAFKA,
options: {
client: {
brokers: [`${BROKER_HOST}:${BROKER_PORT}`],
},
}
});
export const CONSUMER_CONFIG = (groupId: ConsumerGroups) => ({
transport: Transport.KAFKA,
options: {
client: {
brokers: [`${BROKER_HOST}:${BROKER_PORT}`],
},
consumer: {
groupId
}
}
});