首页 文章 精选 留言 我的

精选列表

搜索[gateway],共2677篇文章
优秀的个人博客,低调大师

如何扩展Fizz Gateway应用网关聚合功能

Fizz聚合模块 Fizz能够支持扩展聚合编辑器的功能。在现阶段原生官方支持的聚合类型中仅有的REQUEST,Dubbo,gRPC三种RPC请求方式。但Fizz能够支持的包含但不仅限于RPC,虽然聚合模块设计的时候我们更多考虑RPC请求聚合以避免过多的业务逻辑进入聚合模块影响性能,但如果想要支持更多数据聚合类型,Fizz现阶段也提供对应的解决方案。 扩展方法 Fizz聚合编辑器配置之后的陪hi文件的分发流程为:编辑器——》管理端存储——》缓存——》节点,编辑器负责配置文件的编辑,中间管理端负责配置文件的存储和节点分发,最终节点负责识别解析配置文件。所以我们需要修改包含两部分: 1、增加后台编辑器中聚合类型的支持; 2、增加节点中聚合代码对于新增类型的支持; 编辑器支持 前端开发步骤 1、安装支持 yarn add vue-module-creator 1、进入目录module,生成vue项目 cd module; vmc create; // 输入项目名称,创建项目 yarn add vue-module-loader --save 2、添加项目入口文件module.js import MysqlItem from './components/aggregate/mysql-item.vue' import routes from './router/routes' import storeModule from './store/store-module' export default function(Vue) { Vue.config.productionTip = false this.$router.addRoutes(routes) this.$store.registerModule('mysql', storeModule) this.$dynamicComponent.create(MysqlItem) } 3、编写组件mysql-item.vue <template> <div> <el-form-item label="连接地址" prop="URL" key="URL"> <el-input v-model="requestForm.URL" clearable></el-input> <span class="key-tips">数据库链接地址,如:r2dbcs:mysql://root:password@localhost:3306/archer?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true</span> </el-form-item> <el-form-item label="查询数据SQL" prop="sql" key="sql"> <el-input type="textarea" v-model="requestForm.sql" clearable></el-input> <span class="key-tips">示例:Select dd* from users 请勿以分号结尾</span> </el-form-item> <el-form-item label="绑定参数" prop="binds" key="binds"> <el-input v-model="requestForm.binds" clearable></el-input> <span class="key-tips">输入使用JSON{"id":"1"}</span> </el-form-item> </div> </template> <script> export default { name: 'mysqlItem', props: { requestForm: { // 名字已经固定,请勿修改 default() { return {}; } } } } </script> 4、编译组件 在package.json中scripts中添加 "scripts": { "serve": "concurrently \"vue-cli-service serve -mode development\" \"vue-cli-service build --target lib src/module.js --dest public --watch\"", "build:app": "vue-cli-service build -mode production", "build:module": "vue-cli-service build --target lib src/module.js --dest public", "publish": "vue-cli-service build --target lib src/module.js --dest ../../public/module/mysql" }, 5、使用命令编译 yarn run build:module 6、编译之后的文件为:mysql.umd.js 7、配置Fizz管理后台 接下来需要让Fizz管理后台能够加载该组件,找到Fizz后台中public文件夹中constant.js,配置如下: var Constant = (function(){ return { aggregate:{ plugins:{ mysql:{ "entry":NODE_ENV === 'development' ? "//localhost:8080/mysql.umd.js":"/public/module/mysql/mysql.umd.js", "component":"mysqlItem" // 该字段需要与mysql-item.vue中name字段对应 } } } } })(); 说明 调试模式可以启动serve,Fizz管理后台能够根据配置加载对应路径的Web Component 节点支持 节点开发步骤 1、在合适的位置注册Input InputFactory.registerInput(MySQLInput.TYPE, MySQLInput.class); 2、编写MySQLInput.java public class MySQLInput extends Input implements IInput { static public InputType TYPE = new InputType("MYSQL"); public static Class inputConfigClass (){ return MySQLInputConfig.class; } public void beforeRun(InputContext context){ } public Mono<Map> run(){ // items 是根据数据库读取之后的结果处理 Map<String, Object> result = new HashMap<String, Object>(); result.put("data", items); result.put("request", this); return Mono.just(result); } } 3、编写配置MySQLInputConfig.java public class MySQLInputConfig extends InputConfig { public MySQLInputConfig(Map configBody) { super(configBody); } // 在这里解析前端传递过来的配置 public void parse(){ } } 重要说明 Fizz该功能现阶段仅对商业用户开放。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册