业务模块组合调用架构

业务模块组合调用架构

  • 业务模块组合调用
    • 架构图
    • 代理层
    • 注册中心
    • 路由层
    • 监听层

业务模块组合调用

为了使业务代码接口的复用性以及服务终端唯一性,设计了一套关于业务调用的架构。架构内容分别是:1、应用服务端 2、代理层 3、鉴权中心 4、注册中心 5、路由服务(分发、构链、过滤)6、服务应用 7、数据层 8、计算层

架构图

业务模块组合调用架构_第1张图片
以上图展示了关于整个架构应用的架构图,核心内容:

  1. 代理层 ,安全门,对一切请求的过滤与分发;
  2. 路由层,核心的中枢层,根据预先设定的流程进行组装分发;
  3. 鉴权中心 ,assesToken做授权处理;
  4. 注册中心 ,所有的服务会在上面注册(applicationName、serviceName or ip)
  5. 消息队列中心,点对点、点对面的发布 ;
  6. 监听服务,监听消息队列,对不同类型的消息进行分组排序,做处理分发;

代理层

现在代理服务器有很多,nginx、apache、jboss等。这边使用了zuul作为代理服务器。

当一个UI应用调用一个或更多的后端服务的时候,我们可以用Spring Cloud创建一个Zuul代理
减少开发是非常常见的例子。使用代理服务来避免必须的跨域资源共享(Cross-Origin
 Resource Sharing)和所有的后端需要分别认证的问题。

注册中心

使用了eureka服务管理以及对外开放的sidecar。

Eureka包含了服务器端和客户端组件。服务器端,也被称作是服务注册中心,用于提供服务的注册与发现。Eureka支持高可用的配置,当集群中有分片出现故障时,Eureka就会转入自动保护模式,它允许分片故障期间继续提供服务的发现和注册,当故障分片恢复正常时,集群中其他分片会把他们的状态再次同步回来。

路由层

路由层是业务分发的核心模块,类似遥控器,操控服务流程

主要功能:

  1. 查询(根据appid和流程编号)
  2. 构链(将服务请求组装成链)
  3. 分发
  4. 断路
  5. 异常
  6. 记录
  7. 返回结果

查询:根据用户的appid与流程编号去数据库查询,把对应的参与流程的服务搜索出来。
构链:将查询出来的服务去注册中心拉取地址(ribbon做负载均衡策略判断),拉取稳定的服务地址。
分发:根据用户请求带的json、xml数据洗涤后分装成请求数据格式,发送给业务服务。
断路:当服务发生崩溃或者宕机时,为了不让服务调用链时间过长,每个请求设置了对应的超时时间以及异常返回
业务模块组合调用架构_第2张图片
异常:将当前异常信息记录数据库或者发送队列,并且在数据库中做记录,标记下当前流程位置。

记录:将失败在数据库记录。

队列:将失败信息类型分装,发送到消息队列。

返回:最后将结果返回给调用者

监听层

  1. 监听
  2. 分组
  3. 重试(针对路由消息)
  4. 回滚

监听:监听消息队列,实时监听转发
分组:将订阅的消息进行洗涤过滤并分组
重试(分发给路由重试接口):根据编号取出数据库的流程步骤,然后进行次数尝试,如果还是失败进入回滚。
回滚:数据回滚,根据预先提供的业务回滚接口,进行调用回滚

你可能感兴趣的:(java)