微服务架构体系中让单体项目无缝接入和获能
2023-08-31 08:03:23 0 举报
微服务架构体系中让单体项目无缝接入和获能
作者其他创作
大纲/内容
单次请求时序图
platform: remote-feign: system-file: http://10.168.10.123:9200 system-message: http://gateway.dev.com/message-server
Request
应用授权校验
BI System(平台数据分析系统)
目标:1、定制化开放部分功能或模块;2、必须在平台授权的情况下才可以进行接入或调用;3、平台提供特定的SDK供第三方或其他单体项目依赖使用;4、改造的过程中不可以影响平台现有业务,且云调用和接入调用做到无感知;
Token
AuthSystem(平台权限系统)
背景:企业现存一整套完善的各类业务模块,且为微服务架构搭建。现由于业务开源或与第三方合作,需要开放部分功能或整个模块业务供其使用。希望以最小的变动,获得无缝接入的能力。
Success
以 SpringCloud + OpenFeign + Nacos 为例
远程Feign接口调用需要将登录凭证一并传入Feign,以便通过平台的网关校验
OpenApi(平台开放API)
登录凭证校验
平台改造过程(提出问题 & 加以解决):1、如何做到动态接入,只需接入者在自身项目里配置平台远程各服务地址即可获能,可按需配置解决:在平台公共模块增加配置属性类:RemoteFeignPropertiesapplication-dev.yaml2、云调用和接入调用如何做到无感知切换解决:改造Feign文件的注入方式,充分利用@FeignClient注解的执行机制,实现在请求过程中,如果发现不是单体调用将自动切换为云调用注:在项目启动时,url 属性将优先从配置文件中读取服务地址,如果地址不存在或者尚未配置,则该属性将被赋予默认空值,在远程调用时,如果该属性为空,则默认找name或value属性作为微服务请求前缀,即([服务地址 |网关地址] + 服务名,http://gateway.dev.com/message-server)3、如何在远程调用过程中将登录凭证和其他信息传递到Feign解决:实现请求拦截器,确保第三方或单体项目在远程调用时可以及时的将登录后的相关Header传递到此次Feign请求该拦截器应当在SDK中实现,以确保拦截所有请求
Token、AppKey、AppSecret
@Data@ConfigurationProperties(\"platform.remote-feign\")public class RemoteFeignProperties { /* 数据分析 */ private String systemBi; /* 文件系统 */ private String systemFile; /* 消息中心 */ private String systemMessage;}
AuthTokenFilter(SDK)
微服务架构体系中如何让单体项目无缝接入和获能
网关鉴权
Fail
@FeignClient(contextId = \"IMessageSenderFeign\
0 条评论
下一页