|
|
2 years ago | |
|---|---|---|
| .idea | 2 years ago | |
| pkg | 2 years ago | |
| tool | 2 years ago | |
| Makefile | 2 years ago | |
| README.md | 2 years ago | |
| go.mod | 2 years ago | |
| go.sum | 2 years ago |
Go 的开发框架组件,目前集成logger,http-server,http-client,db,redis,nacos,kafka,skywaling,qconf 等框架
1、所有的配置项的key-value都是字符串格式!使用properties 格式
2、下列是各个配置属性,和例子
3、不允许在master分支上直接变更开发,需要merge
4、所有的API都不相互依赖,抽象出来
5、全部都需要走单元测试
6、提交完代码走一遍make 测试代码
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| application.env | 当前的环境配置,分为:`debug | test | release` | |
| application.project_name | 当前的应用名称 | go-template | 是 | |
| application.port | 当前应用的端口号 | 13058 | 是 |
远程配置项:
# app
application.env=debug
application.project_name = go-template
application.port = 13088
本地config/env.ini配置必须包含项,如果使用nacos的需要配置一下信息,需要根据nacos具体配置信息走
[conf]
# file|apollo|nacos,file直接读取文件
driver = nacos
[nacos-config]
host = 10.100.101.20:8848,10.100.103.130:8848,10.100.99.14:8848
log_path = /data/log/go-template
namespace_id = ed35034b-634e-4ed5-9266-d7366d389351
user_name = nacos
password = nacos
data_id = go-template
Apollo配置中心的话:
config/env.ini
[application]
# env : (debug|test|release) test测试环境
env = debug
[conf]
# file|apollo|nacos,file直接读取文件
driver = apollo
# apollo 定时拉取的刷新时间,单位s
remote_refresh_interval = 30
| key | default_value | desc | 是否必须 |
|---|---|---|---|
| mysql.dbname | 主库的数据库名称 | 是 | |
| mysql.host | 是 | ||
| mysql.port | 是 | ||
| mysql.user | 是 | ||
| mysql.password | 是 | ||
| mysql.charset | utf8 | 否 | |
| mysql.slave_dbname | 从库的数据库名称 | 是 | |
| mysql.slave_host | 是 | ||
| mysql.slave_port | 是 | ||
| mysql.slave_host | 是 | ||
| mysql.slave_user | 是 | ||
| mysql.slave_password | 是 | ||
| mysql.slave_charset | utf8 | 否 | |
| mysql.read_timeout | 5 | 读超时,单位s | 否 |
| mysql.write_timeout | 5 | 写超时,单位s | 否 |
| mysql.timeout | 10 | 最大超时时间,单位s | 否 |
| mysql.max_idle | 10 | 最大空闲连接数 | 否 |
| mysql.max_conn | 100 | 最大连接数 | 否 |
| mysql.conn_max_life_time | -1 | 连接的最大时间,默认是无限制的,单位s | 否 |
| mysql.log_level | 2 | 0:debug,1:info,2:warn,3:error,4:关闭打印,默认warn | 否 |
| mysql.log_file | 日志文件,不做日志切分 | 是 | |
| mysql.refresh_config_time | 30 | 热跟新时间,单位s | 否 |
mysql.host = 10.9.198.84
mysql.port = 3306
mysql.user = aaa
mysql.password = aaa@2014
mysql.dbname = aaa
mysql.slave_host = 10.9.198.84
mysql.slave_port = 3306
mysql.slave_user = aaa
mysql.slave_password = aaa@2014
mysql.slave_dbname = aaa
mysql.show_sql=true
mysql.log_file=/data/log/go-template/aaa.log
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| redis.host | host , debug环境直接连接,其他环境qconf获取地址 | 是 | ||
| redis.cache_prefix | cache 前缀 | 否 | ||
| redis.password | 密码,没有就不需要设置 | 否 | ||
| redis.database | 0 | 默认0 | 否 | |
| redis.max_conn | 10000 | 最大连接数量 | 否 | |
| redis.max_idle | 50 | 最大空闲连接数 | 否 | |
| redis.idle_timeout | 10 | 最大空闲连接时间,单位s | 否 | |
| redis.connect_time_out | 5 | 最大连接超时时间,单位s | 否 | |
| redis.read_time_out | 5 | 最大读超时时间,单位s | 否 | |
| redis.write_time_out | 5 | 最大写超时时间,单位s | 否 | |
| redis.is_direct | false | 由于test/release环境qconf连接,兼容非qconf连接,采用的这个字段,如果标记为ture 则直接连接,debug环境无须设置 |
redis.host = 10.9.188.145:6379
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| log.access_log | 访问日志,按日切割 | /data/log/go-template/access.log | 是 | |
| log.monitor_log | 监控日志,按日切割 | /data/log/go-template/monitor.log | 是 | |
| log.task_log | 任务日志,按日切割 | /data/log/go-template/task.log | 是 | |
| log.third_log | 调用第三方接口日志,按日切割 | /data/log/go-template/third.log | 是 | |
| log.project_log | 项目日志,按小时和异常类型切割 | /data/log/go-template/go-template.log | 是 |
log.access_log = /data/log/go-template/access.log
log.monitor_log = /data/log/go-template/monitor.log
log.task_log = /data/log/go-template/task.log
log.third_log = /data/log/go-template/third.log
log.third_log_switch = off #默认开启,可通过配置 off 关闭
log.project_log = /data/log/go-template/go-template.log
| key | default_value | desc | 是否有无 |
|---|---|---|---|
| qconf.qconfIdc | qconf 配置 | 是 |
qconf.qconfIdc = rd_codis_test
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| kafka.host | 多个host以英文,分割 | kafka01.dev.in.songguo7.com:9092,kafka02.dev.in.songguo7.com:9092 | 是 | |
| kafka.log_path | 日志路径 | /data/log/go-template/kafka.log | 是 |
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| kafka.topic | topic信息多个以,分开, {topic_name1},{topic_name2} | business_event,city_op_event | 是 | |
| kafka.group_name | 日志路径 | go-template_dev | 是 | |
| kafkaconsumer{topic_name}.topic | topic 名称 | business_event_dev | 是 | |
| kafkaconsumer{topic_name}.process_num | 1 | 消费数量 | 3 | 否 |
## kafka
kafka.host = kafka01.dev.in.songguo7.com:9092,kafka02.dev.in.songguo7.com:9092,kafka03.dev.in.songguo7.com:9092
kafka.log_path = /data/log/go-template/kafka.log
# 多个Topic可以配置多个
kafka.topic = business_event,city_op_event
kafka.group_name = go-template_dev
# kafka-topic business_event
kafka_consumer_business_event.topic = business_event_dev
kafka_consumer_business_event.process_num = 3
# kafka-topic city_op_event
kafka_consumer_city_op_event.topic = city-op-event-dev
kafka_consumer_city_op_event.process_num = 3
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| kafka.group_name | 消费组 | 否 |
问题:nacos 由于 logging属于全局变量,但是每次初始化都会init,导致初始化时间发生data race现象. #issues
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| nacos-server.server_name | ${application.project_name} | 当前服务名称 | go-template | 是 |
| nacos-server.server_port | ${application.port} | 当前服务暴露的对外端口 | 8080 | 是 |
| nacos-server.server_host | 默认本地网卡地址 | 当前服务地址,默认本地网卡地址 | 172.15.66.93 | 否 |
| nacos-server.group_name | DEFAULT_GROUP | 组名称 | DEFAULT_GROUP | 否 |
| nacos-server.cluster_name | DEFAULT | 集群名称 | DEFAULT | 否 |
| nacos-server.host | 多个host以英文,分割 | 127.0.0.1:80,127.0.0.1:443 | 是 | |
| nacos-server.log_path | 日志路径 | /data/log/nacos.log | 是 | |
| nacos-server.namespace_id | 空间名称,public空间不需要传递namespace_id | ed35034b-634e-4ed5-9266-d7366d3893 |
否 | |
| nacos-server.user_name | 用户名 | nacos | 否 | |
| nacos-server.password | 密码 | nacos | 否 | |
| nacos-server.timeout | 5000 | 连接超时时间,单位ms | 1000 | 否 |
| nacos-server.log_level | debug | 日志打印级别:debug,info,warn,error | 否 |
nacos-server.host=10.100.101.20:8848,10.100.103.230:8848,10.100.99.14:8848
nacos-server.log_path=/data/log/go-template
nacos-server.log_level=warn
nacos-server.namespace_id=84663e76-f64a-4331-a3a6-efd26ead7bf1
nacos-server.user_name=cityservice_dev_nacos
nacos-server.password=MrHu0qvmdK
nacos-server.timeout=5000
# 服务端口,如果为空取 application.port
nacos-server.server_port=8080
# 服务名称,如果为空取 application.project_name
nacos-server.server_name=go-template
# 默认为当前主机ipv4地址
nacos-server.server_host=127.0.0.1
# 组
nacos-server.group_name=DEFAULT_GROUP
# 集群(默认即可)
nacos-server.cluster_name=DEFAULT
每个服务都需要配置以下配置:
# 必须设置
ebike-factory-api.service_name = ebike-factory-api
# 默认值 DEFAULT_GROUP
ebike-factory-api.group_name = DEFAULT_GROUP
# 默认值 DEFAULT
ebike-factory-api.clusters = DEFAULT
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| nacos-config.data_id | 所属的Data Id | go-template | 是 | |
| nacos-config.group | DEFAULT_GROUP | 所属的Group | 默认就是:DEFAULT_GROUP | 否 |
| nacos-config.host | 多个host以英文,分割 | 127.0.0.1:80,127.0.0.1:443 | 是 | |
| nacos-config.log_path | 日志路径 | /data/log/nacos.log | 是 | |
| nacos-config.namespace_id | 空间名称,public不需要配置这一项 | ed35034b-634e-4ed5-9266-d7366d3893 |
否 | |
| nacos-config.user_name | 用户名 | nacos | 否 | |
| nacos-config.password | 密码 | nacos | 否 | |
| nacos-config.timeout | 5000 | 连接超时时间,单位ms | 1000 | 否 |
| nacos-config.log_level | debug | 日志打印级别:debug,info,warn,error | 否 |
[nacos-config]
host = 10.100.101.20:8848,10.100.99.14:8848
log_path = /data/log/go-template
namespace_id = ed35034b-634e-4ed5-9266-d7366d389351
user_name = nacos
password = nacos
data_id = go-template
group = DEFAULT_GROUP
log_level = error
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| elastic.host | IP | 127.0.0.1:10086 | 是 | |
| elastic.log_file | 日志文件地址 | /data/log/go-template/elastic.log | 是 |
| key | default_value | desc | eg | 是否必须 |
|---|---|---|---|---|
| rocket_mq.host | IP | 127.0.0.1:9871,127.0.0.1:9872 | 是 | |
| rocket_mq.consumer.group_name | 消费组 | go-common_consumer | 是 | |
| rocket_mq.producer.group_name | 生产组 | go-common_producer | 是 | |
| rocket_mq.access_key | access_key | 否(根据服务端是否配置有密码) | ||
| rocket_mq.secret_key | secret_key | 否(根据服务端是否配置有密码) | ||
| rocket_mq.security_token | security_token | 否(根据服务端是否配置有Token,目前业务不需要) | ||
| rocket_mq.log.filename | rocket-mq 日志,切割时间是1day,清理时间是30day | /data/log/go-template/rocket-mq.log | 否(如果没有设置则会走console打印) | |
| rocket_mq.log.level | info | debug|info|warn|error | 否 | |
| rocket_mq.trace.enable | true | 是否开启消息追踪(可以在RocketMQ-Console中查看),如果需要自定义配置trace 请设置为false | 否(默认开启) | |
| rocket_mq.skywalking.enable | true | 是否开启skywalking进行链路追踪 | 否(默认开启) |
eg:
rocket_mq.host = 127.0.0.1:9871,127.0.0.1:9872
rocket_mq.consumer.group_name = go_template_consumer
rocket_mq.producer.group_name = go_template_producer
rocket_mq.access_key = rmq_access_key
rocket_mq.secret_key = rmq_secret_key
rocket_mq.trace.enable = true
rocket_mq.skywalking.enable = true
rocket_mq.log.filename = /data/log/go-template/rocket-mq.log