SOP

一个开放平台解决方案项目,基于Spring Cloud实现,目标让用户快速搭建自己的开放平台

tanghc/SOP - 码云 - 开源中国 (gitee.com)

一些运行手册在这里:

快速体验 (gitee.io)

这是我第一次接触 Java 微服务,so 什么样的服务才算微服务呢?

我觉得满足以上两点就可以认为典型的微服务。

SOP采用微服务架构实现,其核心是网关路由,网关启动成后会触发一个事件,这个事件会取拉取微服务中提供的路由信息,大致过程:

  1. 从nacos中获取微服务实例
  2. 拿到微服务信息,调用微服务提供的接口拉取路由数据,微服务找到被@Open注解的方法,然后封装成一个路由对象,放到List中,最后返回给网关。
  3. 网关拿到路由信息,经过处理,转化成网关路由配置

路由的存储方式是一个Map,key为路由id,即接口名+版本号。

/icons/chart-alternate_orange.svg
Nacos相关

还有不得不提的文档归纳系统,由于是开放平台,所以必须要能够提供接口的API 文档。但文档应该由各个微服务各自实现,难点是如何归纳各个微服务端提供的文档信息并统一展示。

下图是一个大致的原理图:

SOP的文档归纳思路如下:

由于注册中心的存在,可以很方便的获取每个微服务提供的接口,因此可以获取到swagger提供的文档信息。如此一来的好处是,各微服务不用关心文档该怎么展示,只需要写好swagger注解即可;文档信息展示统一交给另外一个工程来维护,各司其职。