目前博客站点功能正常! 其他站点之间将会陆续进行微服务重构,若出现访问页面异常请人才们谅解! 欢迎访问我的B站、CSDN、GitHub、Gitee等平台,内容会不定期同步,相关页面地址可点击本站上方【友情链接】。thanks 人才们 ~

项目整理

2015年,大一刚入学的我正式学习计算机科学与技术专业,从哪个9月开始,懵懵懂懂的我便开始了编程之旅,做过一些大大小小的项目,现进行简单梳理,GitHub提交记录如下:
github提交记录

注:刚开始使用的是码云

远古时期

​ 时间节点:2015.09~2019.04

部分代码遗失,代码主要围绕Java Web展开,结合基础JQuery、Layout、Bootstrap等UI框架开发的简单应用,后续将会陆续进行更新,提供有效的线上Demo演示地址

参加工作

​ 时间节点:2019.04~至今

Oauth2授权中心

角色开始时间结束时间备注
主导2019年11月初2020年3月上线测试版个人项目

直接看线上测试版效果吧,

图片直播

角色开始时间结束时间备注
主导者2019年7月1日2019年8月中下旬实习mini项目
  • 涉及技术:
    1. 前端:Element(PC端)+Vant(客户端)、Vue
    2. 后端:Eggjs框架
    3. 数据库:MySQL(数据存储)+Redis(缓存)
    4. 其他:Socket.IO(消息通信)+GM(图片裁剪)+OSS(对象存储)+AC自动机(违禁词过滤)
  • 负责功能:
    1. 提供MySQ数据库中关于活动信息、图片信息等数据的基础增删改查接口,结合Eggjs中间件进行接口权限管理,优化redis查询缓存;
    2. 完成图片批量、分片上传、图片下载接口;
    3. 图片断点续传、失败重传,提供前端Vue Demo;
    4. 利用AC自动机对用户的图片直播线上弹幕内容进行违禁词过滤;
    5. 使用OSS对象存储接口,对已上传到图片进行存储优化,结合前端懒加载,提高图片访问、原图下载速度;
  • 部署方式:
    1. 测试服:linux基础环境部署
    2. 正式服:MySQL(linux)+GM(linux)+Docker

反垃圾后台~

角色开始时间结束时间备注
参与者2019年9月初2019年11月基本开发完成工作项目
  • 涉及技术:

    • 前端:ElementUI 、Vue

    • 后端:Express框架

    • 数据库:MySQL(数据存储)+Redis(缓存)

    • 其他:Apollo(配置管理)+Consul(服务发现)

  • 负责功能:

    • 开发针对Mysql数据的基础接口,优化redis查询缓存

    • 接入Consul平台,实现项目服务注册、发现,管理Key/Value,监控服务健康状况(一般会单独提供健康检测接口);

    • Express项目配置全局抽离,区分不同部署环境配置文件,接入Apollo中统一管理,进行灰度发布、热部署;

    • 其他功能细节略

  • 部署方式:

    1. 测试服:docker
    2. 正式服:docker+Jenkins(持续集成)+云效平台(交付)

规则监控平台

角色开始时间结束时间备注
主导2019年11月初2019年12底接口完成工作项目
  • 涉及技术:

    • 前端:ElementUI 、Vue、Vcharts图表

    • 后端:Eggjs框架

    • 数据库:MySQL(数据存储)+Redis(缓存)+RabbitMQ(消息队列)

    • 其他:GRPC(远程服务调用)+ Apollo(配置管理)+Consul(服务发现)

  • 负责功能:

    • 建立RabbitMQ消费客户端,以定时任务的方式消费队列信息,缓存到redis,并数据进行分析统计,于流量低峰写入MySQL,进行数据持久化;

    • Egg项目配置全局抽离,区分不同部署环境配置文件,接入Apollo中统一管理,进行灰度发布、热部署;

    • 开发Eggjs框架下的gRPC远程调用插件,实现自动读取Proto文件,绑定Service方法,建立gRPC客户端、服务端,实现相关项目之间的微服务调用(目前插件已开源)

    • 其他功能细节略

  • 部署方式

    1. 测试服:docker
    2. 正式服:docker+Jenkins(持续集成)+云效平台(交付)

ELk日志平台

角色开始时间结束时间备注
参与2020年2月至今预研项目,公共支持
  • 涉及技术:
    • ElasticSearch 数据存储
    • Logstash 日志过滤
    • Kibana 日志显示,后续考虑用Grafana进行数据展示【利用官方模板】
    • 各种beat 获取日志beat,目前支持Express、Egg、.Netcore、Nginx等日志解析获取;
    • 监控技术【官方监控 > Prometheus 】
  • 解决问题:
    • 统一的项目日志管理平台,可接入Express、Egg、.Netcore、Nginx等日志解析获取;
    • 对接入的项目日志进行logstash过滤,提取日志level为Error级别的日志错误信息,通过消息推送【自定义消息推送中间件】的方式进行消息告警、报障提醒;·
    • 支持ElasticSearch全文搜索,对例如邮件、代码、消息日志等业务场景提供支持;目前所在项目组业务已有部分接入
  • 部署方式:
    • 测试:docker-compose集群部署
    • 正式:docker-compose 搭建ELK集群,配置监控

MySQL高可用架构

角色开始时间结束时间备注
主导者2020年4月2020年5月底项目重构,组内MySQL架构
  • 涉及技术:

    • 主从复制

      • 传统binlog方式

        架构单一,主从同步方式简单的依靠日志进行,当主从连接挂掉后,需要手动寻找position,重启slave,对数据同步、数据一致性要求较高的业务不合适【组内业务对数据一致要求高】,亦不利于后期维护;

      • GTID事务方式

        目前选用 采用该方式搭建双主多从多备的MySQL高可用集群,且双主服务器间构建主主复制关系

      • MGR集群

        具有集群中从服务器选举荣升,主从自动切换的特性,但尚新,业内可参考的有效方案不多,仍属于主备方案未来趋

    • Mycat集群

    • Zookeeper配置动态管理

    • 监控告警

      • prometheus

        官方提供很多exporter来监控对应的业务,例如node-export监控linux,mysqld-exporter监控mysql等..现采用mysqld-exporter监控MySQL集群中各服健康状况,收集各维度的性能数据信息;

      • grafana

        可视化的显示exporter收集到的性能数据信息,官方也提供各类可视化模板,进行显示。配合prometheus使用;

      • altermanager hooks

        主要用来处理监控报警,通过指定监控报警规则,对监控信息进行多维度分析,设定报警阀值,当prometheus通过exporter获取信息时进行分析,若出现异常告警规则失效,可以通过hooks来推送告警、报障消息,支持钉钉机器人、微信机器人、自定义接口等多种方式。 现采用自定义接口【消息中间件】推送报警消息;

  • 解决问题:

    • 提供MySQL高可用、读写分离、分库分表等功能;
    • MySQL集群故障自动切换、异常报警、消息推送;
    • 可视化性能监控,多维度数据显示;
    • MyCat配置zookeeper动态管理,解决配置更新服务需手动重启瓶颈;
  • 部署方式:

    • 测试:docker-compose集群部署
    • 正式:docker单节点

Redis高可用架构

角色开始时间结束时间备注
主导者2020年6月至今项目重构,组内Redis规则优化
  • 涉及技术:
    • Redis-cluster集群部署
    • 槽位分配算法
    • 击穿、穿透、雪崩解决方案
    • prometheus+Grafana+hooks的监控报警
  • 解决问题:
    • 提供常见缓存击穿、穿透、雪崩问题解决方案【布隆过滤器】
    • Redis缓存查询高可用,槽位Slave支持瞬间扩容,单节点主备支持10w/s QPS性能;【压测数据】
    • 提供集群性能监控可视化【todo】
    • 减轻MySQL集群压力,提高查询速度,架构调优;
  • 部署方式:
    • 测试:docker-compose集群部署
    • 正式:docker单节点

注:带删除线的均为工作中项目,不便说明;

开源插件

这部分可以先看GitHub,后续补上

egg-sequelize-plus

egg-axios-plus

egg-grpc-plus

开源项目

博客文章同步

角色开始时间结束时间备注
主导者2020年6月至今博客文章同步仓库,不定期更新

链接

JavaScript学习笔记

角色开始时间结束时间备注
主导者2020年5月至今长期学习任务,会不定期更新

图片分片Demo

​ 耗时:2~3天

提供图片批量分片上传、断点续传、原图下载、OSS存储优化功能,旨在总结图片直播项目主要功能点。

真假分页Demo

耗时:1天

链接

Bilibili数据爬虫Demo

耗时:一周左右

链接

突然兴趣,爬取B站用户的个人信息、粉丝信息、关注信息、点赞量等数据,采用egg定时任务的方式,结合广度优先搜索的思路,设定爬取时间间隔及代理ip池绕过B站网关熔断机制【实际存在部分拦截,ip池不够】,于流量低峰时爬取;存入MySQL集群中;

评论


加好友,记得备注哦~

Powered by Halo
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×