🎉 分布式接口文档聚合,Solon 是怎么做的?
1、分布式接口文档聚合,是什么?
如果你有 “22” 个不同的服务(比如微服务),每个服务都有自己的接口文档。每个服务的文档各自打开,估计你会觉得很麻烦的?
再如果,它们是用 openapi 规范的。现在,可以通过一个服务去聚合它们。就是,在一个地址里,打开 “22” 个服务的接口文档。
2、认识 Solon-Docs
solon-docs,是 solon 的接口文档解决方案。它通过 DocDocket 申明文档摘要。支持 swagger 注解,或者 javadoc 注释,或者别的(可适配)。
从文档网关的角度(此文讲聚合嘛),只需使用 groupName, basicAuth, upstream 三个配置项,就可以接入外部服务的接口文档:
@Configuration public class DocConfig { @Bean("appApi") public DocDocket appApi() { return new DocDocket() .groupName("app端接口") .version("2.0") //可选,默认是 2.0 .basicAuth("admin", "1234") //可选(添加 basic auth 验证) .upstream("http://demo.com.cn", "/demo", "swagger/v2?group=appApi"); } }
upstream
配置值,切不要连接自己(否则,可能会死循环),其属性有:
属性 | 说明 |
---|---|
service | 目标服务名 |
contextPath | 服务上下文路径(在网关处,方便识别是哪个服务的,进而调用) |
uri | 接口文档地址 |
solon-docs 也可以通过 solon.docs
配置,完成 DocDocket 自动构建。
3、了解 solon.docs
配置格式自动构建
使用 solon.docs
配置,可以替代 solon bean 的构建方式。格式如下
solon.docs: discover: uriPattern: "swagger/v2?group={service}" #目标服务的文档接口路径模式(要么带变量 {service},要么用统一固定值) syncStatus: false #同步目标服务上下线状态(如果下线,则文档不显示) basicAuth: #可选 admin: 1234 excluded: #排除目标服务名 - "xx" included: #包括目标服务名 - "yy" routes: name1: DocDocket name2: DocDocket
discover 配置项是专为聚合便利设计的,方便通过注册与发现服务聚合文档。格式说明:
配置名 | 说明 |
---|---|
discover | 用于配置分布式发现服务相关的(即,自动配置文档) |
discover.uriPattern | 目标服务的文档接口路径模式,支持{service} 占位符 |
discover.syncStatus | 同步目标服务上下线状态 |
discover.basicAuth | 添加 basic auth 验证(同时会传递给目标服务的文档摘要) |
discover.excluded | 排除目标服务名 |
discover.included | 包括目标服务名 |
routes | 是一个 Map<String, DocDocket> 结构,用于配置文档路由(即,手动配置文档) |
discover 配置,会自动生成服务相关的 DocDocket 及对应的 upstream,其中服务名会成为 upstream.service 和 upstream.contextPath,uriPattern 会生成 upstream.uri。
- discover,只会发现有请求到的服务(即,LoadBalance.get(name) 触发到的服务)
- 没有触发到的服务,可以通过 "included" 进行配置
4、聚合示例
(1)模块服务 app-api (当它是 22 个服务中的某个了)
solon.app: namespace: test group: demo name: app-api solon.cloud.nacos: server: "127.0.0.1:8848" #nacos服务地址 solon.docs: #配置本地文档接口服务 routes: default: #使用固定文档组名(更方便聚合) groupName: "app端接口" apis: - basePackage: "com.demo.controller.app"
(2)文档网关服务 doc-gateway (有两种配置方式)
使用发现服务配置(这个简单,可自动和批量)
solon.app: namespace: test group: demo name: doc-gateway solon.cloud.nacos: server: "127.0.0.1:8848" #nacos服务地址 solon.docs: discover: uriPattern: "swagger/v2?group=default" included: - "app-api" #具体的功能服务名
或者,手动本置(routes, discover 配置,也可以同时使用)
solon.app: namespace: test group: demo name: doc-gateway solon.cloud.nacos: server: "127.0.0.1:8848" #nacos服务地址 solon.docs: routes: appApi: # doc group-id groupName: "app端接口" # doc group-name upstream: service: "app-api" #使用具体地址,或使用服务名 contextPath: "/app-api" #可选(没有时,根据 service 自动生成) uri: "swagger/v2?group=default"
更多内容,可参考 Solon 官网。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
深植根基、蓬勃向上 | openKylin 2.0 正式发布!
2024年8月8日,openKylin 2.0版本正式发布!该版本默认搭载Linux 6.6 LTS内核,完成180+操作系统核心组件自主选型升级,深度融合AI技术,上线麒麟AI助手等实用AI功能,并为用户带来包括开明软件包格式、不可变系统、wlcom合成器等在内的多项创新特性及30+新需求,并累计修复bug 3000+,进一步提升系统整体稳定性和兼容性,为用户带来更好体验! openKylin 2.0作为社区共同努力的结晶,汇聚了超过6500+开发者的智慧与汗水,并得到了110+ SIG和520+企业的鼎力支持。各企业、高校和开发者贡献的特性也都合入到该版本中,欢迎大家下载体验! openKylin 2.0亮点特性 1.最新稳定内核驱动 openKylin 2.0版本搭载最新Linux 6.6 LTS内核,这一内核在性能上进行了深度优化,带来了更高的运行效率。同时,新内核还加强了系统的稳定性,让用户体验更加流畅。 增加对NPU的支持,筑牢AI PC基石 全新EEVDF调度器的加入,性能进一步提升 优化惠普、联想等笔记本最新驱动程序,设备兼容性再扩容 文件系统新优化,存储更高效,读取更...
- 下一篇
阿里云推出首个域名 AI 大模型应用
阿里云宣布域名产品服务完成AI化系列改造,推出首个基于通义大模型的域名AI应用,升级后的阿里云万网可通过输入品牌名称和所属行业大模型批量生成创意域名。 同时,大模型将会自动进行语义解析,输出域名含义,并通过多维评估与可用性筛查,提供可用选择。 阿里云还进一步扩充热门域名资源。此次阿里云上线40余个全新的域名后缀,包括“.ai”“.car”“.me”等,可注册的域名后缀达200多种,可交易的全球域名货源超2000万个。 数据显示,“.ai”域名的注册量较2023年同比增长72.96%,谷歌、脸书、微软等公司纷纷注册了带“.ai”后缀的网站,引流到AI产品页面。此次阿里云上新的域名后缀包括“.ai”“.car”“.me”等。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6