微服务架构体系中让单体项目无缝接入和获能
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 条评论
 下一页
 为你推荐
 查看更多
    
   
   
   
   
   
  
  
  
  
  
  
  
  
 