PixWave是一种可扩展的高性能数字钱包微服务,旨在使用多网关架构通过PIX处理实时支付。该系统集成了多个支付网关,包括Mercado Pago和Gerencianet ,确保可靠性和无缝回退功能。通过在任何给定时刻动态选择最可用的网关,PixWave 最大限度地减少停机时间并确保连续的支付处理。
该架构具有弹性、模块化和可扩展性,使用Docker进行容器化,使用Kubernetes进行编排,使用Redis进行缓存,使用SNS进行异步消息传递,使用ELK 堆栈(Logstash、Elasticsearch、Kibana)进行集中日志记录和实时监控系统性能。
PixWave 遵循基于微服务的架构,其中关键组件(例如支付处理、用户管理和交易监控)被解耦为独立的服务。这种设计可以独立扩展各个服务并对其进行维护,而不会影响整个系统。
PixWave的核心是其支付处理模块,旨在处理具有高可用性和容错性的实时PIX交易。该系统集成了两个主要支付网关: Mercado Pago和Gerencianet ,并采用智能网关选择机制。
PixWave 中的作业系统对于处理付款处理和重试等任务至关重要。通过异步分派支付请求作业,PixWave 为用户提供非阻塞体验并提高整体系统响应能力。
PixWave 使用Redis进行缓存,以增强性能并减少主数据库的负载。
Logstash和Elasticsearch用于管理集中式日志记录,提供对系统事件、错误和性能指标的实时洞察。
PixWave 使用SNS(简单通知服务)在微服务之间进行消息传递以及向外部系统发送通知。
首先,将 PixWave 存储库克隆到本地计算机:
git clone https://github.com/your-repository/pixwave.git
cd pixwave
将.env.example
文件复制到.env
并配置环境变量。这些变量包括数据库凭据、支付网关凭据(Mercado Pago 和 Gerencianet)以及其他服务的 API 密钥:
cp .env.example .env
更新.env
文件中的以下值:
DB_HOST
、 DB_PORT
、 DB_DATABASE
、 DB_USERNAME
、 DB_PASSWORD
– MySQL 数据库设置。MERCADOPAGO_ACCESS_TOKEN
– Mercado Pago 访问令牌。GERENCIANET_CLIENT_ID
、 GERENCIANET_CLIENT_SECRET
、 GERENCIANET_PIX_KEY
– Gerencianet API 凭据。SNS_API_KEY
– 用于通知的 SNS API 密钥。LOGSTASH_HOST
– Logstash 服务的主机(用于集中式日志记录)。运行以下命令来安装所有必需的依赖项:
composer install
确保您的计算机上安装了Docker 。然后,使用Docker Compose构建并运行必要的容器:
docker-compose up --build
该命令将启动以下服务:
容器启动并运行后,执行迁移以设置数据库架构并播种一些初始数据:
docker exec -it laravel_app php artisan migrate --seed
生成应用程序加密密钥,Laravel 使用该密钥进行安全加密:
docker exec -it laravel_app php artisan key:generate
一切设置完毕后,您现在可以访问该应用程序。默认情况下,该应用程序将在http://localhost
上可用:
docker-compose up
在浏览器中访问http://localhost
即可与 PixWave 系统交互。
PixWave 包含一个全面的测试套件。要运行测试,请确保您位于 Docker 容器内或已设置本地环境。运行以下命令:
docker exec -it laravel_app php artisan test
这将执行单元和功能测试,以确保支付系统的功能,包括作业处理、网关回退和交易历史管理。
端口冲突:如果遇到端口冲突(例如,系统上已运行 Redis 或 MySQL),请更新docker-compose.yml
文件以更改默认端口映射。
权限错误:如果尝试写入日志或存储时出现权限问题,请通过运行以下命令确保storage/
和bootstrap/cache/
目录可写:
sudo chmod -R 775 storage
sudo chmod -R 775 bootstrap/cache
容器重新启动:如果容器重新启动或无法运行,请检查日志以获取详细的错误消息:
docker-compose logs