这是一个关于gitee接口的封装可视化,app模块是对接口的封装,app-ui是可视化界面
目前完成进度
1.实现gitee分支、路径、代码块的获取展现(代码块的显示目前是统一java,稍后更改为后缀判断)
当然你可以自己打包然后部署,以下仅代表本项目的打包和部署方式
- jenkins
- docker
- 看这里docker常用命令
- docker部署脚本
- jar文件夹下的sh脚本和Dockerfile
- jenkins部署脚本
- sh文件夹下的sh脚本(拷贝jar包并执行docker脚本)
- (如果更改docker运行方式需要找到Workspace的路径并修改sh文件夹下的sh脚本))
cabin
├── jar
│ ├── admin
│ │ ├── admin-0.0.1-SNAPSHOT.jar
│ │ ├── CabinAdminBuild.sh
│ │ └── Dockerfile
│ ├── app
│ │ ├── app-0.0.1-SNAPSHOT.jar
│ │ ├── appBuild.sh
│ │ └── Dockerfile
│ ├── appIM
│ │ ├── cabin-IM-0.0.1-SNAPSHOT.jar
│ │ ├── CabinIMBuild.sh
│ │ └── Dockerfile
│ └── appOauth2
│ ├── cabin-oauth2-0.0.1-SNAPSHOT.jar
│ ├── CabinOauth2.sh
│ └── Dockerfile
├── sh
│ ├── copyjar.sh
│ ├── jenkins.sh
│ └── removejar.sh
└── vue
├── dist
├── Dockerfile
├── nginx.conf
└── vueBuild.sh
- app
- 8080
- cabin-IM
- 8081
- admin
- 9091
- cabin-oauth2
- 9092
- cabin-monitor
- 9093
框架 | 版本 |
---|---|
springboot | 3.1.0 |
vue | 3.2.13 |
vue-router | 4.2.1 |
vuetify | 3.3.0 |
axios | 1.4.0 |
组件 | 版本 |
---|---|
mysql | 8.0.31 |
Redis | 3.2.12 |
RabbitMQ | 3.10.0 |
Erlang | 23.3.4 |
- vue3
- vuerity3
- springboot3
- 版本
3.0.2- 3.1.0(2023.6.4)
- spring-boot-starter-websocket
- 协议
- STOMP
- spring-authorization-server
- 协议
- oauth2.1
https://gitee.com/xuxiaowei-cloud/xuxiaowei-cloud
<spring-boot.version>3.0.2</spring-boot.version> <java.version>17</java.version>
https://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2
https://blog.csdn.net/weixin_47255175/article/details/122279964
https://www.bilibili.com/video/BV1FL411h7es/?spm_id_from=333.851.b_7265636f6d6d656e64.5&vd_source=918234aac303a01ae2d14d0251c58d61
https://blog.csdn.net/hjg719/article/details/128302584
Java自带的生成一串唯一随机36位字符串(32个字符串+4个“-”)的算法。它可以保证唯一性,且据说够用N亿年,但是其业务可读性差,无法有序递增。
今天的主角雪花算法,它是Twitter开源的由64位整数组成分布式ID,性能较高,并且在单机上递增。
https://github.com/twitter-archive/snowflake
UidGenerator是百度开源的分布式ID生成器,其基于雪花算法实现。
https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md
Leaf是美团开源的分布式ID生成器,能保证全局唯一,趋势递增,但需要依赖关系数据库、Zookeeper等中间件。
https://tech.meituan.com/MT_Leaf.html
行级注释 //[^\n]* 块级注释 /*([^\*^\/]|[*^/]|[^\**\/])**/
private\s+(\S+)\s+(\S+)\s*; private $1 $2;\n
private\s+(\S+)\s+(\S+)\s*; @JsonProperty("$2")\nprivate $1 $2;
@Column(name\s*=\s*"(\w+)"\s*)\s*(private|public)\s+(\S+)\s+(\w+)\s*; @Column(name = "$1")\n@JsonProperty("$1")\nprivate $3 $4;
- gitee分支、路径、代码块的获取
- gitee仓库的获取
- 前端渲染代码块
- 分布式锁实现方式
- 数据库
- redis
- jenkins未集成
- 聊天室websocket可以连接,后端可实现ws和http的连接,但是vue无法连接
- 解决vue.config.js第二个代理无法使用的问题
- 数据量过大,页面无响应,可以考虑分页gitee API有分页参数per_page和page
- 目前就差vue分页传参,后端已解决
- 修正:目录树是不能分页的
- 添加admin监控和rocketmq的监控
- gitee有各种限制,并且之前丢数据了,我的代码仓库需要机器验证,转战gitlab(而且gitlab的workhoob有push后jenkins构建)
- dubbo
- 短链接
- 后端(重定向有问题)
- UI
- 目前还未完工
- jenkins构建接口
- gitlab的拉取解压等api
- 建议私服
- 聊天室的websocket连接
- 由于授权服务器1.1.0需要springboot3.1.0
- 所以将springboot升级为3.1.0(其实之前也想了,毕竟3.1.0是第一个稳定的正式版
- 整合sonar到github检查github代码
- 整合jenkins去打包github的代码
- cabin实现脚本一键部署更新版本
- springboot admin 监控docker里的应用,调用的是容器id并且监控失败 ![[Pasted image 20230619102707.png]]
- springboot执行shell脚本
- jenkins构建
- docker的相关命令
- 排包,ffmpeg引入导致打包一个G,700多M都是他
- starter实现
- 第三方登陆后,如何获取服务器的响应
- 之前写错了,重定向url不仅仅是后端,也可以是前端地址,然后获取参数去请求后端
- 第一种:先说缺点,还是之前的重定向url是后端,导致与前端没关联,前端获取不到token
- 第二种:重定向url是前端,然后vue去监控参数,一旦获取到就请求后端接口,同时设置状态值,用来结束轮询
- 了解spring状态机
- 了解tomcat的Catalina
- 账户注册和登录功能、UI
- 飞书登录和绑定账户
- gitee第三方登录
- 使用vue3的格式重写登录、绑定、注册UI
- 主要是data、method都写到setup()里,同时注册组件为全局
- 绑定表需要加状态,用户可能解绑
- 创建一个请求记录表,记录url,ip,请求参数
- 使用注解和aop去实现
- 使用钉钉通知
- 自定义注解限制ip访问接口次数
- 使用aop会导致有延迟好像,导致限流失败
- 最终使用拦截器
- 实现github的第三方登录和绑定
- 服务器登录时很慢,可能需要服务器挂代理
- 本地部署时加速,发现可以正常访问,无法判断是客户端还是服务端问题
- 服务器部署后发现请求很慢,客户端加速还是不行,初步判断是服务器需要代理
- 遇到的问题:Java在请求某些不受信任的https网站时会报:PKIX path building failed
- 这个绑定感觉有个问题(还未测试)
- 正常情况是一个第三方登录,然后保存id,但是如果有两个页面同时登录两个第三方,浏览器会不会出现两个id,然后判断时----------改成每个绑定都是if了,不使用else if,但是他会都判断一遍,虽然三方登录设置的不多,但是感觉还是不妥
- 全局异常,钉钉报警--------2023.6.26完成
- 实现gitee的第三方登录功能和UI
- 发现时序数据库IoTDB
- 有java的api,可试一下
- 间隙锁的单行的查改增
- 发现bug,gitee分支获取的前端每输入一下,就请求,应该增加判断是否离开输入框
- 把钉钉通知通过消息队列去实现异步
- 发现报警是正常的,但是监控接口信息出现消息莫名丢失情况
- 是被另一个项目的消费了(绑定信息重复了),一定要注意该队列是否在其他项目被监听
- 发现报警是正常的,但是监控接口信息出现消息莫名丢失情况
- 整合ffmpeg实现视频下载和音频提取
- 实现email报警通知
- 发现bug
- 报警显示08:45:42 AM----说明是应用获取docker里时间有问题
- docker容器里是04:47:01 PM是正常的
- 服务器也是正常时间
- 本地部署也是正常时间
- 报警显示08:45:42 AM----说明是应用获取docker里时间有问题
- 需要点击gitee的路由才会加载菜单栏图标
- 优化git的接口内部,把一些臃肿的代码格式下
- 提取出ReflectUtils和JacksonUtils工具类来对json和object进行处理
- 前端把方法绑定在选择分支上,更加流畅
- 实现jenkins的maven部署和流水线,
- 使用docker部署的,遇到问题如下,都解决了
- 容器内文件权限
- maven和jdk克隆到容器内
- 使用docker部署的,遇到问题如下,都解决了
- 整合jenkins的接口获取首页信息成功,之后增加UI和更多接口
- 动态路由
- 后续可以同时设置路由授权
- 后端就是表加字段,然后接口条件筛选
- 前端需要限制路由
- 实现低代码的思路
- jenkins+github的webhook实现push后自动构建
- 整合Jenkins的部分接口
- 打包指定的git仓库
- 下载指定的jar包
- 执行指定的shell脚本
- 动态规划应用场景
- 监控cpu
- linux--sensors
- 虚拟机好像无法获取
- 最终使用cat /proc下的参数
- 监控获得的数据可以放入时序数据库
- 第一次是接口直接调cat方法,qps大会影响系统可能,可以是定时任务1s一次去放到时序数据库,然后去查询数据库,但是可能有延迟,对时序数据库还不是很了解
- 先用influxdb
- 实现一个stater来注入项目里,可重复使用
- influxBD的query和insert方法的封装
- influxDB的服用,创建连接池
- 目前是在封装的查询和新增里默认断开
- 思路:使用队列去存放连接,然后把client封装,加状态,需要保证原子性,并发安全,同时添加超时自动断开功能,可以手动设置连接池大小
- 定时任务把数据存入时序数据库
- influx有删除measurement的方法,而且不建议修改数据,新增数据会根据time去覆盖原数据
- influx的查询封装数据有问题,record.getValues()获取的不是字段的数据
- 时序数据库技术体系(一):时序数据存储模型设计 - 知乎 (zhihu.com)
- 看时序数据库的数据分类,KV数据库,擅长比较某一
- 自己拉代码到本地修改后install了,目前能获取到了,同时也懂了时序数据库数据传输的格式
- 最终,拆分查询,然后各自通过setProperty方法去封装
- 前端每5s获取数据正常,1s时每隔一次都会出现null
- 已解决---忘记原因了,目前是从时许数据库读取
- 类型转换,获取的map是<String,Object>需要value.toString()获取string,然后去转换vo的各种参数类型,如果value直接(String)
强转会报错
- class java.lang.Long cannot be cast to class java.lang.String (java.lang.Long and java.lang.String are in module java.base of loader 'bootstrap')
- 定时任务基本完成,然后读取是上一秒的监控
- 解决sdk里查询后封装对象的问题,修改SDK的变量赋值
- 但是考虑其他,还是决定使用setProperties读取每个value去手动赋值了,反正最后SDK返回的也是每个value一行数据,还需要封装
- 遇到bug,写入数据时,processor的个别值会默认加i,是在point后才发生变化
- 已解决,之前是每个创建的MEASUREMENTS都设置nowtime属性了,注释了就可以了
- 根据linux获取的数据去计算利用率,然后设置阈值,高于阈值,钉钉和邮件报警
- 迁移到定时任务,阈值可通过yaml配置(添加默认值),或者接口去修改
- 邮件通知
- 定时任务获取一直报错,第一次可以获取到数据,第二次就是全部为null,可能是时间点问题,因为读取cpustat的定时任务是1s,这查询可能不存在,
- 顺便把时间调整回来了,用DateUtil.getNowInstant()的方法是增加8小时的
- 测试时,短信发送又崩了,可能频率太快了
- 感受不能一秒一检查,要么设置报警后的特殊策略,比如停止应用,或者停止监控,并且要即使看消息队列的消息,当邮件通知崩了,消息会堆积在那里,要即使手动ack,否则重启邮件通知,依旧会崩---------设置的3秒一次,然后报警后停止监控,这里到时候自己添加对应的策略
- bug:idea的springboot的测试,我的启动类环境变量的email密码有问题,但是测试没报错,但是也可能是缓存问题
- 尝试接入Claude,一个安全的类似gpt的机器人,在slack接入后,调用slack的接口(网络问题在slack都无法调用,但是接入了)
- 规范短链接的返回格式--调用短链接接口后设置响应头的Location为原链,响应码为302
- 整合gateway------只是前端统一访问gateway,然后转发,后端服务还是要自己拦截验证
- 先测试gateway是否能正常访问转发
- 然后设置cookie验证
- 然后用jmeter测试
- 然后把oauth2和登录系统作为前端的拦截
- 完善cookie和gateway的验证---目前还是主要通过redis
- 修复了点击gitee路由,icon才会加载的问题
- 在html添加了link
- 完善jenkins的构建功能、查询最新日志、查询日志列表接口
- 保存jenkins的构建持久化到mysql,同时把构建的服务器、创建时间、执行时间作为记录的属性
- 先实现在已有jenkins流水线任务的前提下,进行流水线配置编写,然后进行构建