找回密码
 立即注册
查看: 480|回复: 0

2021年年终技术方面回顾

[复制链接]
发表于 2021-11-16 22:03 | 显示全部楼层 |阅读模式
从2021年初到现在,发生的事情太多了,有种都过了好几年的错觉。上个东家因为某些原因,导致公司无以为继。被迫另谋中间找工作,又因为时间错不开,导致错过了两个offer,但是总体来说,今年过的还是挺有价值的。
年初


上半年起的项目是一个客服系统(sass版),技术架构为go-zero、casbin、TiDB、MinIO、Nginx、Redis、ImageProxy、websocket等。
    tidb负责数据库存储,建表的时候,注意列格式,不同列类型之间可能无法成功转换。go-zero,纯国产,安装goctl工具,根据编写的api、rpc文件,自动生成代码;集成了服务负载均衡、服务发现;支持middleware,接口参数约束;使用protobuf做grpc解析及压缩;支持swagger集成;自定义代码模版、命名风格等等;内部自带sql和model(我是直接替换成gorm来操作数据库)生成;缓存如果使用集成的cache,那么redis只能选择db0,容器部署的话,没有问题,如果想选择数据库,需要自行声明redis及初始化;功能挺完善的,更多功能请参考官方。casbin,来做用户访问权限控制。Minio,开源的对象存储服务软件,我们曾经拿来部署对象存储业务,所以顺手就用这个了,支持桶的过期策略,文件下载地址签名。Nginx,这个就不用说了,挂在前边扛把子的。Redis,一些不需要入库的信息,就缓存redis里了。imageProxy,这个高级的很,go编写的,可以对请求的图片进行动态尺寸压缩,然后配置好cache目录,挂在nginx后边和minio的前边,美滋滋的,省去了处理缩略图的问题,想要多大size,就传相应的宽高。websocket,主要是用来和客服端进行消息通信。etcd,这个是go-zero项目集群能够跑起来的基础,所有的服务发现都是从这里获取到的,这是一个高可用的分布式键值(key-value)数据库,内部是raft协议作为一致性算法,如果部署集群的话,注意奇数个etcd服务;想实时看数据内容的话,推荐使用etcd-keeper。

这个项目用到的东西还是挺多的,数据库设计,项目模块划分,组件调研,全程参与,学到了很多东西。后来项目因为前端拖的太严重,没办法如期交付,虽然当时在公司确实被“惊”到了,虽然加班很辛苦,但是现在看来,真的是,“不负韶华,只争朝夕”,感谢老东家给的机会。
年中


年初的公司项目结束了,又开始寻觅新工作,找来找去,既不想离家太远(尝试坐地铁去上了几天班,来回3小时浪费在路上,感觉很难接受),也不想到手的米太少,找了一个离家不太远的公司上班,骑自行车20分钟,时速8-9公里的样子。

这项目已经搞了一年多了吧(个人猜测),来了之后,主要是做一些功能优化、迭代之类的,这里用的websocket做通信的。
    websocket主要是通过http(s)来进行数据传输,主要遇到的问题,就是个别情况下,客户端发送数据,服务端收不到,经过多方努力、验证,发现是tcp非常规断开的情况下,客户端和服务端都是收不到的断开的信号的,所以唯一的办法就是启用心跳,心跳间隔短一点,如果心跳丢失,主动给他下线,但是因为某些原因,心跳功能还是没加进去。学了学vue,做了个简单的网页展示数据的,感觉上手虽然简单,做起来还是很复杂,而且用的vue2,router上还要指定低版本,不然路由有bug,axios组件需要开一个devProxy代理,不然请求会被cors策略干掉;开发的话,还是建议chrome做开发,safari各种无响应;chrome还有一个启动参数来屏蔽掉安全策略,这个值得赞扬。echarts组件多组线条的话,如果有0值线条,有bug,看官方也是这样的,所以顺手提了个bug,我改为单线条显示了。消息组件nats,订阅、发布、数据持久化等gorm/gen,一个基于gorm的model、query代码生成工具,支持多表,相比于xorm的工具,感觉在导出model这块,差不多,sql操作这块,gen对于query查询支持更友好,查询条件这块可以避免sql拼接,来防止注入。

感慨,go的项目,代码组织结构总是各种各样,没有一个统一的风格。目前觉得还是cobra来初始化项目,辅以一些普遍的项目代码结构风格,这样比较通用易懂。标准库感觉用起来还是差点意思,没有脚本语言的用起来舒服,易用性还是差点,还需要自己包装一下。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 10:37 , Processed in 0.088084 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表