Skip to main content

Command Palette

Search for a command to run...

软件中间层魔法

Published
1 min read

计算机领域有句名言

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决

最近在工作中我就通过增加中间层来解决了看似需要换方案或推倒重来的问题。

监控告警

因为前司的监控告警方案是我拟定并实现的,用的是Prometheus生态那一套,基本上是以下思路

  • prometheus:数据收集
  • alertmanager:接收告警
  • webhook:告警通道分发
  • exporter:指标采集
  • grafana:可视化

想的很美好,遇到的第一个问题可把我愣住了:

  1. 公司近期做降本增效,这些服务的虚拟机申请不给批;
  2. 公司有人在用prometheus,但都是历史原因自已用,没专人维护
  3. 因为开源时序数据库性能不能满足需求,公司开发了独立的数据采集方案:tracer(不同于prometheus的exporter)
  4. 团队监控业务与公司数据采集服务不在同一网络

根据与运维部门的沟通,我得到的结果:

  1. 你不能自己玩prometheus那一套,我们不会给资源的
  2. 你可以用公司的数据采集方案,但是需要你自己将监控指标数据转成tracer的格式
  3. 你可以等待运维部门出兼容方案,因为人员有限,这一季度调研,下季度落地

此处必须引用老玩家C的一条微博

什么是工程思维?——永远以资源有限、条件不足为前提,去实现现实世界的目标。

这不正是资源有限,条件不足的现实场景吗?prometheus这一套体系我是熟悉的,必须接入公司的tracer,加一个中间层?

  1. prometheus配置remote write到数据转换服务S
  2. 服务S将prometheus数据转换成tracer格式,并上传到公司的数据采集服务
  3. 由于接入公司监控系统,所以很自然可以借力公司的告警系统,不必自己写webhook了

所以你看,通过使用中间层服务S,我使用了自己熟悉的技术,又可以借力公司现有的能力,其实问题并没有想像中那么难,不是吗?

网关配置

之前吐槽过目前我正在使用的网关:krakend,原因就在于它的配置复杂且繁琐,不支持正则,模板难用,以至于随着组内微服务规模的扩张,配置成了一个不小的负担,因为团队只有我懂,只有我会配。我想换网关,以解决配置繁琐的问题,但由于手头业务重,暂时也抽不出大量时间换其它网关,况且换也是有成本和风险的,痛定思痛,我整理了一下所谓的“痛点”问题:

  1. URI参数配置过长,且有顺序要求;
  2. URI的不同Method需要分别配置;

针对这两个问题,其实很容易想到简化配置的方案,在配置文件和网关真正载入配置中间加一个中间层,将简化的配置转化成网关的繁杂配置,于是问题就变成写正则了

  1. {param1}/{param2}写法统一成{param}/{param}{param}只是作为占位符
  2. Method支持多个同时配置,如POST,GET,PUT
  3. 支持连续参数的简化语法,如{param@num},num为3,则最后转换成{param1}/{param2}/{param3}的形式

而且兼容新老写法,于是配置不再是一个令人头疼的问题,而且我发现这种相对严格的配置方式其实挺好的,至少是明确的,如果使用正则,很容易会将内部不应暴露出的资源暴露出去。

这两件事情若放在以前,我大概率会使用推倒换方案的路数,但是现如今资源有限,要解决从0到1的问题,还要兼顾历史,我认为加中间层这个思路非常合适当下,既增加了灵活性,又保留了换方案的可能性,而且团队借力后,能更专注于核心业务,这或许就是成长吧。道理,都懂,只是,这一次从实践中第一次较为深刻的理解了,我相信,这对我之后的工作大有裨益。

More from this blog

2025: 祛魅 灰度 念头通达

今天是2025年的最后一天,当大家都在准备下班的时候,好巧不巧的,我刚好发现了一个不大不小的问题,大胆猜想,小心求证,向上反馈,暴露风险,作为2025年工作注解,实在是再有趣不过了。 今年的工作,从结果上看,还算平稳,至于过程,有太多不可言说的部分。厂里打镙丝的牛马,有工资可拿,理应知足了,至于其它的,与己无关,也没那么重要了。 祛魅 近距离观察大厂,才发现一些违背常识/直觉的事实:路人以为的高大

Feb 28, 20261 min read21

大厂祛魅:破碎的专注力

毁掉一个人最直接的方法,就是毁掉ta的专注力。 这句话的出处已然模糊,但放在大厂环境中,却显得格外深刻。 围城 大厂宛如一座围城。城外的人满怀憧憬,目之所及皆是光鲜;城内的人却如困笼之鸟,翅膀日渐退化,每日挣扎求生。 高大上 不可否认,大厂的硬件设施确实令人艳羡:宽敞的独立园区内,来往穿梭的人群中,几乎人人手握智能设备。这看似现代化的景象背后,却藏着一个无奈的事实:在工作时段,每台电脑都被严密监控,连听音乐都成奢望。于是,工作之余玩手机,成了许多人难得的解压方式。 大厂的品牌效应确实强大。外界对...

Jul 29, 20251 min read138

Black Swan

黑天鹅理论 是指极不可能发生,实际上却又发生的事件 来到大厂打工已经满一个月了,从一开始的手足无措,到逐渐度过不适期,也算是适应了吧。 不适应 刚入职时,不适应的地方还是挺多的。 第一次只使用台式机工作,这就限制了我一天中的绝大部分时间,都必须呆在自己的工位上,好在工位足够大。只是人与人的沟通少了很多,有问题只能在工位上通过 IM 呼对方,有种魔幻又现实的感觉 第一次只能用 Windows,也不能 WSL,这给我的工作效率带来了很大影响,不能用熟悉的软件,就连写代码用的 VSCode 的...

Jan 24, 20251 min read74

2024年: 逐渐平静

这个世界是一面镜子,会把你的感受反射给你 2024 开端: 相由心生 那时,还带着一着愤懑,因为拿到了低绩效,虽然内心知道这是公司经营困难,想让我离开的一种策略,但仍然感受到自己那可笑的自尊受到了践踏。自那之后,非必要不加班,只做份内事,尽可能地不去涉及份外之事。 2024 年中: 与人为善 组里的项目眼见不行了,我被迫去支援 AI 项目,久违地写起了 python,项目接近完成时,意外收到通知:我拿到大礼包了。在这之前,架构师因故裸辞。在我离开之后不到两周,我的 TL 也裸辞了,直到同事告诉...

Jan 9, 20251 min read92

企业软件之殇

殇 动词 未成年而死。 名词 战死者。 笔者经历了两家打着云原生旗号的企业软件/解决方案公司,都是中途加入,项目都以解(失)散(败)告终。 云原生解决方案 NB 公司:一个传统的 IDC 小厂,想着借云原生的热度,进军企业软件市场。 在加入这个项目之前,笔者考取了 CKAD 认证,彼时对 K8s 相当着迷。先简要介绍一下这个项目背景: 基于 Rancher (换皮肤)的二次开发项目,名字叫:HCaaS ,在笔者加入这个团队之前,项目已经开发近两年了,除了 TL 之外,其它人之前都...

Jul 1, 20241 min read103

just for fun

57 posts

I'm a Software Engineer