20

又到了写年终总结的时候了。每当这个时候思绪总是翻江倒海,因为太久没有反思和总结的缘故,一年才总结一次,确实是有点久,欠的账的太多,梳理起来有点费劲。这里依旧还是写跟点跟工作/技术相关的总结。

盘点

2017这一年自己从前到后主导了个小项目,技术体系使用的openresty + spring boot/cloud + postgres + statsd + graphite + grafana + sentry + elasticsearch + kafka + docker + kubernetes。这一年依旧是延续上面的技术架构进行深入:

  • docker & kubernetes(使用级别)
停留在使用阶段,考虑到云平台技术的成熟,假设自己出去创业,感觉也用不到自己去搭建kubernetes,直接用阿里云、腾讯云等的kubernetes的基础设置就可以了,于是就没有深入研究。
  • spring cloud(实践及扩展级别)
这一年算是深入实践了一把spring cloud,不过生产还停留在Camden.SR6的版本,现在的GA版已经是Edgware,pre版本已经到了Finchley M4。而且从Camden版本到以上版本迁移的话,貌似有一些不兼容或变动,有点疲于跟进,另外主要是生产已经稳定运行了,就没有力气再去折腾升级了,维稳为主。等做下一个项目的时候再考虑直接用最新版吧。不过随着service mesh的成熟,分布式的这一套更进一步固化到基础设置里头,感觉spring cloud后续可能优势就不那么明显了。而且随着go语言流行,以及相关生态的丰富,渐渐的也有很多高并发服务采用go来替代java了,后续如果不是业务特性强的应用,可能用java的优势就不那么大了。就像Java未来也许不再是电商的首选开发语言这篇文章说的。
  • spring security(使用及扩展级别)
这一年又去看看了spring security,还有spring security oauth2,感觉少点什么,缺乏将一整套技术实施去替代既有的权限控制体系,没有大规模去应用,总感觉没有深入理解。另外开始重视系统安全方面的知识,学习中。
  • kafka(使用及了解基本原理)
kafka版本太杂,公司有的用0.8,有的用0.9,有的用0.10,17年推出了0.11,紧接着1.0版本也出来了,对于初学者来说,感觉有点措手不及,一入技术深似海,真的是学海无涯啊,于是就只能挑着点看了。主要是研究了0.8版本的一些使用和实现细节,另外研究了0.9版本与0.8版本的一些区别,还有就是今年主推的kafka stream,后续可能基于1.0版本再去深入了解。
  • redis / postgres / mongo / elasticsearch(使用级别)
这些今年用的不多,也就用一用。

说说关系型数据库,一直对SQL不感兴趣,也没有深入研究,大底是面向对象看的太多了,另外看过了太多复杂业务需求写复杂SQL然后把系统搞挂的例子,总是觉得通过其他方式的实现是可以替代复杂SQL的,而且性能更优。NOSQL的出现,很多非事务性的查询,基本都可以通过将数据按查询需求结构化/冗余化同步到NOSQL里头来实现。

其他几个NOSQL,若要排行,估计redis得优先,毕竟使用太广了,明年估计得再深入学学redis;对mongo不是太有好感,像分片复制啥的,感觉都不如elasticsearch成熟,这里头要在排序,elasticsearch排在mongo前面;elasticsearch的话,以前有想过要深入学习的,不过版本变化太快了,以前还是1.x版本,如今都6.x版本了,欲哭无泪,特别是java api的使用,学的疲于奔命。还有就是mongo跟elasticsearch的查询语法学习成本太高了,elasticsearch还好一点,有ES SQL插件大部分场景可以用SQL来查询,还是比较爽歪歪的,mongo就没有SQL插件来查,于是就更不想学mongo了。

  • rabbitmq(基本使用)
对于消息队列,传统的mq当中,就属rabbitmq最耀眼了,不过随着kafka、rocketmq的出现,有点被淹没了。不过还是值得一学的,有待深入实践。重点看open-messaging规范,从这个入手。
  • openresty(稍微上手)
第一次写lua,感觉调试特别费劲,没有idea可以提示,总是不断来来回回重启,请求,看日志验证;后来写多了,稍微上手,感觉还可以,主要是nginx秒级重启,非常爽。有待深入研究。不过随着go的出现,后续go也有网关出来,比如janus,目测二者可以拼一拼。
  • arch / system design(入门级别)
系统架构方面,感觉还出处于入门级别,后续有待深入学习和提高,不仅仅是技术架构,还有业务架构。

评价

  • 收获

体验了一下从零到一的后端技术架构与实现,期望是初步具备了一个人出去创业拉起一整套后端技术架构与实现的能力

  • 不足

系统访问量太低,不容易暴露问题,部分技术实现在访问量在百万级、千万级、亿级是不同的,而且高并发场景会把一些技术实现的不是太好的问题给暴露出来,这点算是今年做的这个项目的硬伤的。

目标完成情况

  • 继续每天sg博客,继续提升sg声望(完成)
这个算是完成了,16年突破1000声望,17年突破6000声望
  • 多回答stackoverflow的问题(不达标)
这个完成的不大好,16年是255声望,17年是457声望,总体上升24052名,不过排行在98894
  • 每周末技术复盘(没完成)
这个几乎是没完成,是最致命的,18年要严抓这个
  • 夏天还是需要继续跑步,期望能学会游泳(完成)
游泳没学,但是跑步是有坚持的,除了下雨还有加班太累没有跑,其他基本是每周一跑,17年累计跑了80多公里,巅峰时期一次可以跑4km,但是持续不久,18年希望能多跑几次5km。
  • 少加班、多提升时间以及项目管理能力(不达标)
习惯性加班,感觉身体要被加班逐渐加班坏了,时间规划不大好,好几次研究问题研究好几个小时到一两点才睡,对身体损伤太大。

展望

2018年学习计划:

  • 重点学习
系统架构(CASE MOCK)、深入系统安全(OWASP)、深入分布式缓存(redis)、深入研究open-tracing(kafka)、深入研究nginx/openresty

非技术类,目标是研究金融投资相关以及跟技术的结合。

  • 前沿技术探索
service mesh,spring cloud可能风头正劲,但是也仅仅限于java领域,但是service mesh可是不限语言的,进一步将分布式架构固化在底层,目测又是一场技术变革。

AI这块,一直想学,但是没找到动力去开始,估计先从一些机器学习的理论开始,找实践点切入边学边实践。

具体指标

硬性指标
  • 继续每天sg,sg声望突破10000
  • stackoverflow声望突破1000
  • 每周技术复盘/CASE STUDY(完成let it crash系列)
  • 每周完成至少一篇投资类文章(逐步深入金融业务知识)
  • 年度跑步公里数达到100+公里
软性目标
  • 完成系统安全、分布式缓存、open-tracing、nginx/openresty的学习
  • service mesh研究与实践
  • 金融技术相关尝试
  • 高并发多找机会实践
  • 多研究优秀的开源项目架构/代码
  • 多写开源项目

文章导航

docker / kubernetes

http / tcp / network / io

nginx / openresty

tomcat

java / jvm

image / pdf

spring-boot

spring-cloud

security / spring security / oauth2

jdbc / redis / elasticsearch / mongo

kafka

监控

arch / design / data structure

mac /linux /app build

测试 / 部署

doc


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...


引用和评论

0 条评论