Junedayday Blog

六月天天的个人博客

0%

Go-Framework

日志是一个框架的重要组成部分,那今天我们一起来看看这部分。

衡量日志库有多个指标,我们今天重点关注两点:简单易用高性能。简单易用是一个日志库能被广泛使用的必要条件,而高性能则是企业级的日志库非常重要的衡量点,也能在源码层面对我们有一定的启发。

阅读全文 »

Go-Framework

我们的基础RPC服务已经正常运行,我们再来看下一个特性:配置文件的加载。

首先,我们要正确地认识到配置文件的重要性:在程序交付后,变更代码的成本很大;相对而言,变更配置文件的成本就比较小。但有的同学又走了另一个极端,也就是将大量的逻辑放入到配置文件中,导致配置文件膨胀,本质上就是将部分本应在代码中维护的内容转移到了配置文件,导致配置文件也很难维护。

今天,我们先将重点放到加载配置文件库的技术选型,顺便分享一些常见的问题。

阅读全文 »

Go-Framework

大家好,我是六月天天。如题所述,从今天开始,我将和大家一起逐步完成一个微服务框架。

整个迭代过程会围绕着两个核心思想进行:

  1. 关注技术选型背后的思想。虽然最终某个技术选型的可能并不是你喜欢的方案(如RPC、日志、数据库等,你可以fork后自行调整),但我们更关注各个技术组件背后的原理与思想,选择的过程比结果更重要
  2. 聚焦于简单,关注可维护性。技术框架是项目的基础设施,也是排查复杂业务问题的根本,所以框架层的功能会尽量考虑简单易用,可以让我们花更多的心思在业务开发中。许多开源库提供了大量扩展功能,但我们使用时会尽量克制,减少学习和排查问题时的成本。

微服务框架系列重点介绍框架的搭建过程,期间对一些细节技术点的讲解,会在另一个系列Go语言技巧系列中展开。

阅读全文 »

Go-Study

编程语言对软件工程师的意义

有人常说,编程语言对软件工程师来说并不重要,更重要的是软件工程思想架构设计能力等更高层面的内容。

这个观点本身没有问题,但它更多的是针对有相当工作经验的程序员。对于绝大多数的人,编程语言依然是最重要、最核心的技能,也是通往更高层面的敲门砖。所以,精通一门编程语言,不仅仅要熟悉其语法与原理,更要了解其周边的生态,包括框架、开源库、中间件等,以及掌握它适用的业务场景

所以,作为一名将Go语言作为主要开发语言的工程师,如果你能合理地利用好这个敲门砖,你的职业发展必将更加通畅。下面,我会从几个常见问题谈起,分享我的经验与见解,希望能给各位带来启发。

阅读全文 »

Go-Study

阶段性的思考

通过前面几讲的分享,相信大家已经能清楚地看到一名普通软件工程师的发展路线:不断学习技能,提高研发效能,实现业务功能

如果我们尝试回头看,可能会对自己的定位存在疑问:这些日常CRUD的开发工作,很多不具备太高的技术难度,可以靠人力堆积来实现。那么,如何在研发团队里打造自己的技术壁垒、体现个人价值呢?

下面,我将分多个层面和大家聊聊,大家可以根据自己的发展目标和工作环境,选择性地发展几项。今天的内容会抛开编程语言之争,从更高的维度来看问题。

阅读全文 »

Go-Study

为什么要追求研发效能

入门篇基础篇之后,我选择做了这一讲提效篇。而在提效篇的推出之前,我也开启Go语言技巧系列的更新,着重分享一些具体的工程化实例,包括错误处理、Go Module等。

也许有读者会好奇为什么会把提效篇放在这里,在我看来,如果工程师已经度过了入门阶段,就应该重点关注研发效能

严格意义来说,基础篇的分层思想,就是一个很有效的提升研发效能的手段。

研发效能涉及的面很广,但这里我们聚焦于讨论软件编码阶段的工作,专注于提升工程师在开发阶段的效率。

提升了研发效能后,我不太建议大家去主动接手更多的开发工作,而是投入到不断地学习和提升自己,持续提高效率,实现正反馈循环。至于投入到哪些方面更有价值,则是我今天分享的重点。

阅读全文 »