做话事人,不容易

Java3y

共 3940字,需浏览 8分钟

 · 2022-03-10

我是3y,一年CRUD经验用十年的markdown程序员👨🏻‍💻常年被誉为职业八股文选手

最近我基本把时间都放在了austin项目上,由于第一个austin群已经满了,所以开通了第二个austin群。

我在群里已经尽量回答我能回答的问题了,但自从人开始多了以后,经常在群里被问到几个重复性问题:

  • austin项目现在的进度怎么样啊?什么时候写完?我想等写完再看
  • austin项目依赖的中间件有哪些啊?我需要学完哪些中间件才能开始看austin
  • austin项目如何参与进来?
  • austin启动这是啥问题啊?能帮我看看吗
于是我想着要不统一解答下吧,就不多次回复相同的问题了(重复性的问题以文档的形式来固化解决,减少我的答疑工作量

austin统更新速度迅猛(代码是写了挺多的,可能文章偏落后些),要不再关注下austin里程碑

  • [x] Maven+SpringBoot项目搭建
  • [x] logback日志记录项目运行时信息,引入common/guava/Hutool/Lombok/fastjson/OkHttp工具包
  • [x] 接入腾讯云渠道发送一条短信
  • [x] 使用SpringData JPA将短信发送记录存储至MySQL
  • [x] 使用SpringBoot接入Kafka
  • [x] 利用责任链完成对接入层的请求进行封装(责任链模式)
  • [x] 消费层实现数据隔离(线程池:生产者与消费者模式)
  • [x] 通用去重消息功能(SpringBoot接入Redis并使用pipeline减少网络请求)
  • [x] 配置服务器和docker容器以及SpringBoot应用的监控(prometheus+Grafana+auctuator)
  • [x] 接入分布式配置中心完成 丢失消息、白名单以及账号配置(Apollo分布式配置中心)
  • [x] 邮件渠道接入
  • [x] 日志链路数据追踪 + 注解式打印日志(优雅打印日志以及数据埋点)
  • [x] 接入GrayLog分布式日志收集框架
  • [x] 引入前端低代码平台AMIS搭建后台管理页面
  • [x] 接入分布式定时任务框架定时发送任务(xxl-job定时任务框架),编写上传文件接口并使用LazyPending批处理人群文件数据
  • [x] 接入实时流计算平台(Flink),实时日志数据根据用户维度和消息模板维度清洗至Redis
  • [x] 通过AMIS低代码平台接入echarts图表展示实时聚合后的数据
  • [ ] 优化现有的代码:优雅停机、动态配置线程池等等(实现中)
  • [ ] 接入微信服务号渠道
  • [ ] 接入微信小程序渠道
  • [ ] 接入PUSH渠道
  • [ ] 持续提高消息推送系统的影响力,让更多的业务方了解其功能,进而挖掘更多拉新和唤醒用户的玩法,提高站内的次留率和转化率

01、项目什么时候写完

austin什么时候写完,这个问题也我不知道怎么回答。austin在我的理解里,它是一个核心功能单一系统,但在技术上它能玩出很多花样,好多时候跟群友们交流后也会碰撞出很多的想法。

它什么时候不再更新了,我也不知道,至少不在今年。或许有可能是2038年,因为我的数据库时间类型是int🐶

关注austin的群体应该有有以下:

  • 在校园还未毕业的小白,希望有项目经历写在简历上(大多数
  • 毕业后一两年都在CRUD,认为工作内容毫无成长(多数
  • 本身就是做消息推送平台,想看看我是怎么设计的(少数
  • 对消息推送感兴趣的,想知道在互联网里它的系统架构可能是怎么样的(极少数
  • 这个逼天天发文章,单纯想知道他的代码写得怎么样(大多数

至于问到“什么时候写完?我想等写完再看”,问这个问题大多是小白,其实我挺不理解的,为什么要等我写完才去看这个系统

我以前刚入职的时候,项目基本都是完成的状态,而我只是在上面修修补补。那时候觉得自己的代码量太少。我就羡慕坐我对面的鸡蛋,他是从零开始搭建一个项目,一直在迭代更新。

我喜欢这种从零到一的过程,我认为我会在写项目的这个过程中能遇到很多问题,同时我会解决掉很多问题,这些问题会帮助我成长。很多东西是真的实践了你才会理解得更深刻

1、有人在我新建了austin这个仓库以后,就点了star

2、有人等我搭建完环境了以后就提了pr给我提供通用的枚举类/ResultVo

3、有人看我的Git log记录发现我只有master分支的时候,问我能不能将每次的更新发在某分支上,方便查看这个过程

4、有人看我的微信服务号渠道还没更新,问我近几周有没有打算实现,如果没有的话,他能不能实现,提pull request给我

5、有人下个月找要实习了,是第一波把austin项目写在简历上的人

而有的人,大三快毕业了,还在等我完全更新完,想要花一两天就能掌握austin项目写在简历上。

当我接手一个系统的时候,自然就要去看项目的代码。我会揣摩这行代码这个方法作者当时的设计思路,为什么会这么写。如果假设作者就正在实现这个系统,而你作为code review 的角色,你就不会去立即地问他:你为啥要这样写啊,设计思路是啥

很多时候,同一个问题,作为作者的我,很有可能在代码热乎的时候才会详细地讨论为什么会这样写,想法是怎么样的(不过我绝大多数时候都会记录至文章里)

这种即时交换各自的代码设计/编程经验的时候,不是很有趣的过程吗,为什么要等我写完才去看这个系统

02、项目依赖的中间件

前面聊到了austin的关注群体,自然而然的,该系统更多面向地是小白。我在之前提及了,我希望austin是成为能够被绝大多数应届生写入简历的项目。

说实话,截止目前austin接入的中间件依赖确实有点多了。强依赖MySQL/Redis/Kafka/apollo弱依赖prometheus/graylog/flink/xxl-job

这意味着要在本地启动austin就必须安装完MySQL/Redis/Kafka/Apollo,如果想要有比较完整的体验,还得安装相关的弱依赖。

但安装各种环境我认为问题不大,INSTALL.READMD部署文档被我改过很多回了,有详细的安装教程。群里问我的安装问题,其实大多数在文档里都有。也请各位给我点时间,后面我也会出视频教程来演示下安装的过程(其实就是对着文档复制粘贴,一步一步走)

对于小白而言,他们更多的是想:Kafka我还没学,Apollo我也没学,等我把这些中间件学完我再做项目吧

这就是学习方法论的问题了,我谈下我的理解。我认为:项目驱动才是最好的学习方法

以前初学的时候,学习一项技术不知道用来干什么,学的时候知道有这么一个东西。但等学完了以后,过一段时间就忘了,因为压根就没实际用过,也没调试过程序。

每当我引入一个中间件或者相关的依赖,我应该都有提及我为什么要用它,它在项目里是做什么的,怎么安装它

austin项目里的绝大多数中间件依赖我都没在生产环境中用过或部署过,但这不妨碍我能把项目运行起来,不妨碍我去看官网他的设计架构是怎么样的,不妨碍我去看广大开发者是怎么评价它的,了解它有什么优点有什么缺点。

别想着等学完所有的中间件依赖的知识再来看项目了,没必要。一边看项目,一边学涉及到的中间件,你成长会更快

03、austin怎么参与进来

很多人小白嘴巴想着要参与进来austin,但当我让他提pull request的时候就直接""了?其他的开源项目可能pull request比较严苛,但austin不会,我非常欢迎大家提各种你认为值得优化或者目前存在的缺陷地方。

不要妄自菲薄,你有提pull request的念头才会更有参与感。

把项目部署起来,在本地DEBUG看看整块流程,总会有地方你认为写得不够好的,那就提pull request。我抓拿不定的,我会找我的朋友帮我一起看看代码思路,如果还抓拿不定,我也会考虑整理成文章让大伙们一起看看。

相互成长,相互成就

04、提高自身的动手能力

austin的文档我认为是很全的了,很多基础性的问题我都能在我写过的文章中找到答案,在README.MD就有austin的部署和启动文档。但好多人就没有看文档的习惯?我也挺奇怪的。

遇到问题,先看了文档和自己先尝试解决,有了自己的想法,把自己的想法说一遍然后再交流沟通,这点很重要。(换位思考

如果本地已经能起来了,可以DEBUG了,只要问题能复现,基本都能通过DEUBG解决,设计日志的时候我认为还算是记录得比较详细且易懂的了。

这块在工作的时候也一样的,我们不可能一遇到问题自己不思考不尝试解决就找同事帮忙。

05、总结

虽说如此,其实austin的总体架构和功能基本已经写完了,后面我打算录制几期视频来讲讲我的设计思路以及我觉得还不错的地方。

austin还在初步阶段的时候,就有人在Gitee下评论:

这个项目的难点是什么?最大的挑战是什么?你学会了什么?

遇到的最大困难是什么,你是怎么解决的?你为啥要采用这种方案,其他方案为啥不行?

这些问题我后面会专门写文章来讲述,如果你正在看austin,或者你也可以尝试着回答下这些问题。

之前我在交流群里看到有跟着做austin项目的同学把项目流程图给画出来了,我挺惊喜的。因为自己写的项目被人家去梳理,画了一个挺详细的流程图。这不就说明着我的每天下班和周末持续做的东西还是有被认可的嘛?

目前austin交流群还有些名额,如果想进群的小伙伴可以添加我的个人微信备注『项目』,我空的时候会统一拉进群。

阅读原文可跳转至Austin仓库

浏览 14
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报