Skip to content

关于服务调用方最小化改造方案的讨论 #1

@gudaoxuri

Description

@gudaoxuri

调用方需要修改的地方有:

  1. 添加AccountSecret的配置让TEval鉴别合法性
  2. 调用方启动时向TEval注册,TEval返回有效的Proxy地址,此操作会定时轮询
  3. 在调用服务时改写原Host到TEval的Proxy的Host,并加上必要的认证Header信息

最基础的做法是撰写SDK,在调用请求前先调用SDK的处理逻辑,返回Proxy的地址及要的Header。

但这样会有比较大的侵入,考虑使用以下方法改进:

  1. 提供统一的HTTP操作SDK

    问题在于请求未必都是简单的application/json,会有很多类型,封装SDK会比较繁琐,且需要使用者学习独立于Apache HttpClient或OkHttp的新的一套语法,不合适

  2. 判断调用者使用的HTTP Client框架,使用Javassist动态修改写各框架的代码,注入上述操作。

    问题是Javassist无法动态加载生效,需要重启服务,不合适

  3. 为各主流HTTP Client框架编写独立的jar包,此jar包含同包同名的修改后的代码,注入上述操作。

    无法保证加载优先级,不一定加载到修改后的class

  4. 使用Maven自定义插件,结合Javassist,在打包时动态生成各HTTP Client框架的修改代码并将生成的class文件放在项目classes中一并打包确定优先加载

    此方法比较可行,试验中

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions