计次服务 JCounter¶
简介¶
提供高可用、高性能的基础计次服务。
应用场景¶
基础计次服务¶
应用案例
聚合鉴权 RealMe 和汇信 Credit。
常见问题¶
接入文档¶
1.接入方式¶
应用系统文件定义
文件名
系统名_yyyymmdd
文件内容
键值 |
描述 |
---|---|
service_name |
系统名,即在 JMan 申请 SUser 时的用户名,如 jarvis_credit |
date |
日期,yyyymmdd |
seq_id |
流水号,应用系统的唯一交易标志 |
timestamp |
时间戳,Date.getTime() |
app_token |
商户的 app_token,由 JMan 分配 |
operator_id |
商户的操作员id,可以是 JAccount 的用户名,可空 |
function_id |
服务名,即计费单元,由应用系统确定,与 service_name 和 seq_id 一起,构成请求的唯一索引 |
is_success |
成功标志,0为失败,1为成功 |
return_code |
应用系统返回码,遵循 jarvis 错误码 |
示例
文件名:jarvis_credit_20170627 对于一次个人征信报告查询请求,含两个计费单元,记录为:
{"service_name":"jarvis_credit","date":"20170627","seq_id":"12345620170627195548398832","time_stamp":"1498564548797","app_token":"app-9836c3ba-24ff-4d30-9cbb-ee798d955462","operator_id":"test@chinapnr.com","function_id":"10001","is_success":"1","return_code":"90000","user_name":"jf_test"}
{"service_name":"jarvis_credit","date":"20170627","seq_id":"12345620170627195548398832","time_stamp":"1498564548797","app_token":"app-9836c3ba-24ff-4d30-9cbb-ee798d955462","operator_id":"test@chinapnr.com","function_id":"10006","is_success":"1","return_code":"90000","user_name":"jf_test"}
应用系统文件内容推送
应用系统使用 logstash 实时将文件内容推送至 kafka,由 JCounter 接收,logstash 的配置方式参考第2步。
应用系统文件日终上传
应用系统凌晨将前一日文件上传至 JFile,供 JCounter 对账。
应用系统环境说明
应用系统的云端应用与内网应用分别部署,云端对接 JCounter 云端,内网对接 JCounter 内网。
2.logstash 配置说明¶
logstash 安装环境
硬件准备:通用的硬件服务器; 操作系统准备:Linux 服务器; logstash 安装包:logstash-2.3.3.tar.gz; JDK版本:1.7.80;
修改 /etc/hosts 文件
增加 kafka 服务器 ip-hostname 映射,具体地址参考第3步。
安装 jdk1.7.80 及 logstash-2.3.3
解压缩 jdk 及 logstash 安装包到用户主目录下:
tar xzf jdk-7u80-linux-x64.tar.gz
tar xzf logstash-2.3.3.tar.gz
如果服务器没有 jdk7 配置,修改 logstash 配置文件:
vi ~/logstash-2.3.3/bin/logstash
在文件开头增加以下配置:
JAVA_HOME=~/jdk1.7.0_80
export JAVA_HOME
增加 logstash-kafka 推送配置
vi ~/logstash-2.3.3/conf/logstash-kafka.conf
input {
file {
path => ["/app/credit-service/proxy/logs/jarvis_credit_*"]
start_position => end
ignore_older => 0
codec => multiline {
pattern => "^\t"
what => "next"
}
}
}
filter {
}
output {
kafka {
codec => plain {
format => "%{message}"
}
acks => "0"
batch_size => 16384
block_on_buffer_full => false
bootstrap_servers => "192.168.3.101:9092"
compression_type => "gzip"
retries => 5
topic_id => "jcounter_record_test"
workers => 2
}
}
增加 logstash 启动脚本
vi ~/sbin/startLogstashKafka.sh
文件内写入:
nohup ~/logstash-2.3.3/bin/logstash -f ~/logstash-2.3.3/conf/logstash-kafka.conf > ~/log/logstashkafka 2>&1 &
启动 logstash 服务
./~sbin/startLogstashKafka.sh
3.相关配置项¶
环境 |
hosts |
kafka topic_id |
kafka bootstrap_servers |
---|---|---|---|
云端测试 |
jcounter_record_test |
10.23.97.144:9092, 10.23.130.82:9092, 10.23.186.72:9092, 10.23.15.34:9092, 10.23.140.31:9092 |
|
云端联调 |
– |
– |
– |
云端生产 |
jcounter_record |
10.23.97.144:9092, 10.23.130.82:9092, 10.23.186.72:9092, 10.23.15.34:9092, 10.23.140.31:9092 |
|
内网测试 |
192.168.3.101 p2p1-v2 |
jcounter_record_test |
192.168.3.101:9092 |
内网联调 |
– |
– |
– |
内网生产 |
– |
jcounter_record |
– |