go-zero源码系列-开篇
这两年一直在关注golang这门语言,初次接触到go-zero是在B站看go夜读系列作者关于go夜读的分享,整体讲非常非常好真正做到了将服务端技术栈讲解的深入浅出娓娓道来,其中最吸引人的莫过于go-zero框架开发的设计准则:
- 保持简单,第一原则
- 弹性设计,面向故障编程
- 工具大于约定和文档
- 高可用
- 高并发
- 易扩展
- 对业务开发友好,封装复杂度
- 约束做一件事只有一种方式
有点Unix设计哲学KISS(Keep it Simple, Stupid)的味道。互联网信息有个特点:知识密度极高却又往往高度分散,每个人的想法都可以随时分享到互联网,思维的差异导致蹦出来新的概念、名词层出不穷,服务端领域也不例外。保持简单是一件很困难的事情,你必须对遇到的问题进行深入思考,看清问题的本质并找到最高效简洁的方法。
goctl是工具大于约定和文档思想的体现。单靠人肉来推行标准化是不靠谱的,但是工具可以做到。
很多人学习知识往往走马观花,各种高大上的概念都懂一点,却常常无法在项目落地(我是其中之一),导致的后果是知识体系无法由点及面,形成结构化的脉络。网上经常调侃PPT架构师不无道理。纸上谈兵,书生误国啊!
那么如何应该学习呢?我的答案是看源码!通过看源码你才能明白如何将书上的名词概念转化为代码,高大上的概念工程上如何落地,各种编码技巧,尤其关键的bad case处理。
研究源码过程实际上是在复盘作者的思考过程,与作者共鸣。
感觉看不懂?没关系硬着头皮接着看,我工作6年了一样看不懂,这属实是非常正常的一件事,这个世界没那么多天才,你我都是普通人。高质量开源项目作者也不是一次性完成的,往往是经过许多次深度思维迭代一步步优化的结果。代码是思维的现实映射,一定要边看边debug,当你感觉看懂了(感觉自己又行了😂)那可以尝试自己完整把对源码的思考过程通过代码实现出来。这个就跟数学老师讲题一样,你觉得你懂了那你做个题试试。。。
go-zero的源码质量非常高,core包提供了许多工程实用性非常强的基础组件,同时单元测试覆盖率80%+,对于看源码帮助非常大因为可以一边改一边debug实时验证猜想。
初心易得,始终难求。不要想一口吃成大胖子,我们由浅到深,循序渐进阅读源码,开始吧!文档