# 第 3 章 服务治理,统一白名单控制

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、前言

什么是中间件的魅力?

重复逻辑的提炼、底层功能的封装、系统架构的升级,都是中间件所能触达到的场景。

在抛开 CRUD 推进到中间件的世界后,你会感受到用代码来写代码,用更底层的设计从根上解决更上层的问题。我们能深入到,动态代理、反射调用、Bean注册以及字节码插桩对方法增强,这些技术的运用既可以优化服务端开发过程,也可以在无声无息中采集和监控代码质量,还可以让低代码编程和可持续性交付上线得以实现。

终究,这些技术的使用都在为研发交付效率和交付质量做保障,而学会它们才能让自己的更有技术价值。

# 二、需求背景

在互联网这种多数面向C端用户场景下的产品功能研发完成交付后,通常并不会直接发布上线。尤其是在一个原有服务功能已经沉淀了大量用户时,不断的迭代开发新增需求下,更不会贸然发布上线。

虽然在测试环境、预发环境都有了相应功能的验证,但在真实的用户场景下可能还会存在其他隐患问题。那么为了更好的控制系统风险,通常需要研发人员在代码的接口层,提供白名单控制。上线初期先提供可配置的白名单用户进行访问验证,控制整体的交付风险程度。

白名单确实可以解决接口功能或者服务入口的访问范围风险,那么这里有一个技术方案实现问题。就是如果研发人员在所有的接口上都加这样的白名单功能,那么就会非常耗费精力,同时在功能不再需要时可能还需要将代码删除。在这个大量添加和修改重复功能的代码过程中,也在一定程度上造成了研发成本和操作风险。所以站在整体的系统建设角度来说,我们需要有一个通用的白名单服务系统,减少研发在这方面的重复开发。