No Description

yangmao 9216d809b0 . 2 years ago
.idea 9216d809b0 . 2 years ago
pkg 091e9be6de first 2 years ago
tool ec2fe958db first 2 years ago
Makefile 9216d809b0 . 2 years ago
README.md ec2fe958db first 2 years ago
go.mod 091e9be6de first 2 years ago
go.sum ec2fe958db first 2 years ago

README.md

gocommon

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

MySQL

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

Redis

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

Logger

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

Qconf

key default_value desc 是否有无
qconf.qconfIdc qconf 配置
qconf.qconfIdc = rd_codis_test

Kafka

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

​ 问题:nacos 由于 logging属于全局变量,但是每次初始化都会init,导致初始化时间发生data race现象. #issues

nacos-服务注册/服务发现中心

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

nacos-配置中心

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

Elastic

key default_value desc eg 是否必须
elastic.host IP 127.0.0.1:10086
elastic.log_file 日志文件地址 /data/log/go-template/elastic.log

Rocket-MQ

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