服务的粒度是这门学科里最难的问题。我发现自己居然没法反驳。我把这个同步调用改成了消息,耦合小了很多。我把这条经验写进了团队 wiki

分布式之后,最难保证的是数据一致。我发现自己居然没法反驳。我把这个单体的核心模块先抽了出来,风险可控。复盘会上我们把它列成了案例

这个服务拆开之后,运维的复杂度翻了一倍。我默默打开了编辑器,准备一步步验证。我发现这个服务的日志里有一半是重复的。第二天这个方案就变成了团队标准做法

好的架构是让改动局限在一个地方。我想了想,觉得这话没法接。我发现这个接口被三个服务依赖,改动成本很高。世界瞬间清净了

分布式之后,最难保证的是数据一致。我笑了笑,决定不解释。我把这个服务的熔断阈值按实际流量重新算了。感动,然后我学到了新的一课

我把这条调用链画了出来,发现有一个环。我先给自己泡了杯茶,做好了打持久战的准备。我发现这个服务的依赖里有一个是循环的。连茶水间都安静了

我把这个接口的降级方案补上了,心里踏实些。我拉了个小群,把相关同学都叫了进来。我在架构文档里补了一节,标题叫"为什么不要这么做"。同事说这波操作可以写进新人培训教材

这个服务的边界和另一个服务有明显重叠。我愣了两秒,然后继续敲代码。我打开链路追踪平台,发现一次请求调了十一个下游。这大概就是程序员的人生吧

架构的演进通常是问题驱动而非设计驱动。我愣了两秒,然后继续敲代码。我把这个服务的接口数量收敛了,对外只留必要的。复盘会上我们把它列成了案例

服务的粒度是这门学科里最难的问题。我发现自己居然没法反驳。我把这个模块的职责重新定义了一遍。真香定律准时生效