新增中间件相关文档包括 RocketMQ、Nacos、PowerJob 的部署指南和故障分析文档,完善 Keepalived 和 MySQL 的文档内容。新增内部通讯技能模板和示例文件,包括 3P更新、公司通讯、FAQ回答等格式指南。优化服务文档结构,补充 FIX 引擎高可用架构说明。新增中间件综合指南,详细说明高可用部署方案和灾备转换原理。 新增 RocketMQ 5.3.2 集群部署文档,包含 Controller 模式详解和详细配置说明。新增 Nacos 和 PowerJob 部署文档,补充服务依赖和关键配置。更新 MySQL 故障分析文档,优化复制冲突解决流程。新增内部通讯技能模板文件,规范公司内部通讯格式。 docs: 补充服务文档和中间件 TODO 列表 新增 g3fo-exchange-fix-engine-service 服务文档,详细说明服务职责和关键配置。新增中间件 TODO 列表,跟踪待补充的文档内容。更新 Keepalived 部署文档,新增主库抢占前置检查脚本和配置说明。优化中间件文档结构,补充常见问题和性能优化建议。 style: 统一文档格式和代码块样式 统一所有文档的代码块格式和标题层级。优化表格显示样式,增强可读性。规范环境变量和配置项的显示方式。调整文档结构,确保逻辑清晰。修复部分拼写错误和格式问题。 chore: 新增 LICENSE 文件 新增内部通讯技能的 Apache 2.0 LICENSE 文件。补充文档版权信息。更新文件头部的元数据描述。规范文件命名和目录结构。
7.1 KiB
7.1 KiB
Nacos 部署配置
Nacos 用途说明
Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。在项目中,Nacos 主要用于以下场景:
1. 注册中心
- 服务注册:所有微服务实例启动时会自动向 Nacos 注册自己的信息,包括服务名称、IP 地址、端口号等
- 服务健康检查:Nacos 会定期检查注册的服务实例是否健康,自动剔除不健康的实例
- 高可用设计:通过集群部署确保注册中心的可用性,避免单点故障
2. 服务发现
- 服务消费者查找服务:服务消费者通过 Nacos 获取所需服务的可用实例列表
- 负载均衡:提供服务实例的负载均衡策略,支持权重配置
- 实时更新:服务实例变化时,Nacos 会实时通知消费者,确保服务列表的准确性
3. Dubbo 注册中心
- Dubbo 服务注册:Dubbo 服务提供者将服务注册到 Nacos
- Dubbo 服务发现:Dubbo 服务消费者从 Nacos 获取服务列表
- 元数据管理:Dubbo 服务的元数据信息(如接口定义、方法签名等)存储在 Nacos 中
4. 配置中心
- 集中式配置管理:所有服务的配置集中存储在 Nacos 中,避免配置分散在各个服务中
- 动态配置更新:支持配置的动态修改,无需重启服务即可生效
- 配置版本管理:记录配置的历史版本,支持回滚操作
- 配置分组与命名空间:支持按环境、应用等维度管理配置
Docker Compose 配置
nacos:
image: nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v3.1.1
container_name: nacos
restart: always
depends_on:
- mysql
deploy:
resources:
limits:
memory: 2G
replicas: 1
placement:
constraints:
- node.role == manager
ports:
- 8848:8848
- 8849:8080
- 9848:9848
- 9849:9849
- 7848:7848
- 6848:9080
volumes:
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /data/nacos/conf/application.properties:/home/nacos/conf/application.properties
- /data/nacos/conf/cluster.conf:/home/nacos/conf/cluster.conf
- /data/nacos/data:/home/nacos/data
- /data/nacos/logs:/home/nacos/logs
- /data/nacos/lib:/home/nacos/lib
environment:
- JAVA_OPT=-javaagent:/home/nacos/lib/jasypt-agent.jar
- TZ=Asia/Hong_Kong
- SPRING_DATASOURCE_PLATFORM=mysql
- MODE=cluster
- NACOS_AUTH_TOKEN=LldB9CGYrmmbhIQOIFlg3L3avFB1wbUw8s1E0lL6WZc=
- NACOS_AUTH_IDENTITY_KEY=G3SF
- NACOS_AUTH_IDENTITY_VALUE=afe123456
- NACOS_SERVERS=192.168.3.230:8848 192.168.3.200:8848 192.168.4.250:8848
集群配置文件 (/data/nacos/conf/cluster.conf)
#2025-12-29T09:21:31.265596226
192.168.3.200:8848
192.168.3.230:8848
192.168.4.250:8848
应用配置文件 (/data/nacos/conf/application.properties)
nacos.server.main.port=8848
nacos.inetutils.prefer-hostname-over-ip=false
### Specify local server's IP:
nacos.inetutils.ip-address=192.168.3.230
spring.sql.init.platform=mysql
### Count of DB:
db.num=1
db.url.0=jdbc:mysql://192.168.3.233:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=afe123456
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.config.push.maxRetryTime=50
nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000
nacos.ai.mcp.registry.port=9080
nacos.server.contextPath=/nacos
server.tomcat.accesslog.enabled=true
### accesslog automatic cleaning time
server.tomcat.accesslog.max-days=30
### The access log pattern:
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.basedir=file:.
#*************** API Related Configurations ***************#
### Include message field
server.error.include-message=ALWAYS
#*************** Nacos Console Related Configurations ***************#
### Nacos Console Main port
nacos.console.port=8080
### Nacos Server Web context path:
nacos.console.contextPath=
### Nacos Server context path, which link to nacos server `nacos.server.contextPath`, works when deployment type is `console`
nacos.console.remote.server.context-path=/nacos
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
### The auth system to use, default 'nacos' and 'ldap' is supported, other type should be implemented by yourself:
nacos.core.auth.system.type=nacos
### If turn on auth system:
# Whether open nacos server API auth system
nacos.core.auth.enabled=false
# Whether open nacos admin API auth system
nacos.core.auth.admin.enabled=false
# Whether open nacos console API auth system
nacos.core.auth.console.enabled=false
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=true
nacos.core.auth.server.identity.key=
nacos.core.auth.server.identity.value=
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
### The default token (Base64 string):
#nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
nacos.core.auth.plugin.nacos.token.secret.key=
nacos.istio.mcp.server.enabled=false
nacos.k8s.sync.enabled=false
nacos.deployment.type=merged
Spring Boot 配置连接集群
Spring Cloud 配置
spring:
cloud:
nacos:
# 注册中心
discovery:
enabled: true
server-addr: 192.168.3.200:8848,192.168.3.230:8848
service: ${app.service-name}-app
namespace: dev
group: app-server
Dubbo 配置
# Dubbo配置
dubbo:
registry:
address: nacos://192.168.3.230:8848,192.168.3.200:8848
metadata-report:
address: nacos://192.168.3.230:8848,192.168.3.200:8848
部署说明
-
当前部署情况:
- 实际部署了两台主机:
192.168.3.200和192.168.3.230 192.168.4.250是虚拟节点,用于解决集群节点显示问题
- 实际部署了两台主机:
-
集群显示问题:
- 配置3个节点(实际2个+1个虚拟)可以解决节点状态显示异常问题
- 当只配置2个实际节点时,会出现节点互相看不到的情况
- 添加虚拟节点后,实际节点可以正常显示在线状态
-
数据同步:
- 配置3个节点后,数据可以在实际节点间正常同步
- 在任一实际节点修改配置,其他实际节点可以获取到最新数据
-
注意事项:
- 确保MySQL数据库已正确配置并可访问
- 调整
nacos.inetutils.ip-address为当前服务器的实际IP - 根据实际部署环境调整 volumes 映射路径
- 监控Nacos集群状态,确保至少两个实际节点正常运行