You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
3.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<h1><div style="text-align: center; color: cornflowerblue">百业代码规范及一些标准化过程示例 v0.1.1</div></h1>
## 0. 项目说明
对后端java代码进行一些标准化的过程说明,帮助整个技术团队提升自己的技术规范及水平
## 1. 项目内容说明
dev-protocol-test
- SpringBoot项目Test的编写规范及使用标准
- 参考: https://mp.weixin.qq.com/s/W5v8zOCHbc2_NvobMGaU8w
dev-protocol-log
- 分布式日志系统的设计及实现,主要涉及kafka Springboot ELK
### 1.1 基本命令(dev-protocol-log)
- Kafka
查看topic列表命令(连接其中一个就好了)
【旧版】kafka-topics.sh --zookeeper 172.16.26.183:2181 --list
【新版】kafka-topics.sh --bootstrap-server 172.16.26.183:9092 --list
zookeeper is not a recognized option主要原因是 Kafka 版本过高,命令不存在)
创建topic主题
kafka-topics.sh --bootstrap-server 172.16.26.183:9092 --create --topic topic1 --partitions 1 --replication-factor 3
--create 命令后 --topic 为创建topic 并指定 topic name
--partitions 为指定分区数量
--replication-factor 为指定副本集数量
向kafka集群发送数据
【无key型消息】kafka-console-producer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1
【有key型消息】 kafka-console-producer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1 --property parse.key=true
默认消息键与消息值间使用“Tab键”进行分隔切勿使用转义字符(\t)
kafka命令接受数据
kafka-console-consumer.sh --bootstrap-server 172.16.26.183:9092 --topic topic1 --from-beginning
kafka查看消费进度当我们需要查看一个消费者组的消费进度时则使用下面的命令(启动Consumer的时候才会真的生效)【这条命令对查询消费特别重要】
kafka-consumer-groups.sh --bootstrap-server 172.16.26.183:9092 --describe --group group1
### 1.2 注意事项(dev-protocol-log)
一致性确定
命令中的 --bootstrap-server 和配置文件中的要一致
# 允许外部端口连接
listeners=PLAINTEXT://0.0.0.0:9092
# 外部代理地址
advertised.listeners=PLAINTEXT://121.201.64.12:9092
https://blog.csdn.net/pbrlovejava/article/details/103451302
国内下载镜像加速
https://www.newbe.pro/
### 1.3 海量日志收集架构设计(dev-protocol-log)
- 海量日志收集架构示意图
![avatar](dev-protocol-log/pic/海量日志收集架构示意图.png)
---
- 标准架构(海量): Beats(日志收集) -> kafka(日志堆积) -> Logstash(日志过滤) -> ElasticSearch(日志查询) -> Kibana(效果展示)
- 简化收集方案1: 直接使用Log4j的插件和Logstash集成 -> ElasticSearch(日志查询) -> Kibana(效果展示)
- 简化收集方案2: 使用Log4j自己封装一个appender -> ElasticSearch(日志查询) -> Kibana(效果展示)
- 简化收集方案3: 直接使用kafka的appender(log4j提供的),直接实现 -> kafka(日志堆积) -> ElasticSearch(日志查询) -> Kibana(效果展示)
- 先进技术: SkyWalking 的 Netty或者Agent的方式,直接传到另外一个Agent端
---
- 实际落地架构图
![avatar](dev-protocol-log/pic/实际落地架构图.png)
---
- 全域日志收集架构落地图
![avatar](dev-protocol-log/pic/全域日志收集架构落地图.png)
### 1.4 日志输出设计
- 1. 使用 Log4j2 的相关技术进行日志定义
![avatar](dev-protocol-log/pic/日志输出功能详情.png)
- 2. 使用 filebeat 进行日志的收集
![avatar](dev-protocol-log/pic/FIleBeat日志收集.png)
启动前先进行检查 ./filebeat -c 配置文件.yml -configtest
启动顺序 kafka -> 自己的应用程序 -> filebeat
- 3.