{"id":13525140,"url":"https://github.com/zhudyos/duic","last_synced_at":"2025-04-01T04:31:12.562Z","repository":{"id":27748443,"uuid":"112063190","full_name":"zhudyos/duic","owner":"zhudyos","description":"分布式配置中心，集中化配置管理，应用配置权限管理，配置实时更新等功能","archived":true,"fork":false,"pushed_at":"2021-12-06T01:53:39.000Z","size":8827,"stargazers_count":288,"open_issues_count":17,"forks_count":66,"subscribers_count":31,"default_branch":"master","last_synced_at":"2024-11-02T09:33:36.617Z","etag":null,"topics":["configuration","configuration-management","distributed-configuration","kotlin","spring-boot","spring-webflux"],"latest_commit_sha":null,"homepage":"https://duic.zhudy.io/index.html","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhudyos.png","metadata":{"files":{"readme":"README.adoc","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-26T07:10:46.000Z","updated_at":"2024-10-27T02:38:54.000Z","dependencies_parsed_at":"2022-08-07T13:01:07.305Z","dependency_job_id":null,"html_url":"https://github.com/zhudyos/duic","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhudyos%2Fduic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhudyos%2Fduic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhudyos%2Fduic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhudyos%2Fduic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhudyos","download_url":"https://codeload.github.com/zhudyos/duic/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246586080,"owners_count":20801024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configuration","configuration-management","distributed-configuration","kotlin","spring-boot","spring-webflux"],"created_at":"2024-08-01T06:01:16.281Z","updated_at":"2025-04-01T04:31:12.106Z","avatar_url":"https://github.com/zhudyos.png","language":"Kotlin","funding_links":[],"categories":["开源","Projects Using Vue.js","Awesome Vue.js [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg) ★101652](https://github.com/sindresorhus/awesome)","Awesome Vue.js [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)","Open Source [🔝](#readme)"],"sub_categories":["Open Source"],"readme":":email: kevinz@weghst.com\n\nimage:https://img.shields.io/travis/zhudyos/duic.svg[\"Travis\",link=\"https://travis-ci.org/zhudyos/duic\"]\nimage:https://img.shields.io/docker/pulls/zhudyos/duic.svg[\"Docker Pulls\",link=\"https://hub.docker.com/r/zhudyos/duic/\"]\nimage:https://img.shields.io/github/license/zhudyos/duic.svg[\"GitHub license\",link=\"https://github.com/zhudyos/duic/blob/master/LICENSE\"]\n\n```\n ______              _    ______\n|_   _ `.           (_) .' ___  |\n  | | `. \\ __   _   __ / .'   \\_|\n  | |  | |[  | | | [  || |\n _| |_.' / | \\_/ |, | |\\ `.___.'\\\n|______.'  '.__.'_/[___]`.____ .'\n\n```\n= duic 配置中心\n\nduic 是采用 kotlin 与 spring-webflux 开发的配置中心。通过 HTTP 的方式获取配置信息，可管理任何语言、应用的配置。设计目标是统一不同应用的配置管理方式，打造更人性化的配置编辑方式，提供更灵活的配置获取方式。\n\n* 支持 mongodb, mysql, postgresql 存储配置信息\n* 支持多配置合并\n* 支持按需获取配置\n* 支持用户权限控制\n* 支持 ip/token 访问限制\n* 支持分布式集群配置管理\n* 支持 docker\n\n== 特性\n* **集中配置管理, 多应用多环境配置**\n+\n在 web 控制台中你可以创建多个配置，相同应用不同环境的配置可以使用(**profile**)区分，同一个应用下多个(**profile**)配置可以合并 https://duic.zhudy.io/index.html[https://duic.zhudy.io/index.html]\n* **配置数据类型/数据格式**\n+\nduic 采用 yaml 文件格式管理配置，天生支持数据类型及数据格式\n* **HTTP 方式拉取配置**\n+\nduic 采用 HTTP 的方式拉取配置，所以你可以在任何应用中使用 duic 配置管理\n* **配置状态检查**\n+\n支持配置状态检查，如果配置发生变动该状态也会相应变化，使用方可根据状态的变化重载配置\n+\n`GET {base_uri}/apps/states/{name}/{profiles}`\n* **多配置合并**\n+\n相同应用(**name**)下的多个配置(**profile**)可以合并配置，相同 **key** 的配置将以深度合并的方式返回\n+\n`GET {base_uri}/apps/{name}/{profile},{profile2},{profile3}`\n+\n合并方式按照请求 **URL** 中 **profile** 顺序，后者覆盖前者\n* **按需获取配置**\n+\n你有时可能需要获取某个 **key** 的配置而不是整个 **profile** 的配置\n+\n`GET {base_uri}/apps/{name}/{profile}/{key}`\n+\n**key** 支持按 `.` 分隔, **父 `key` 可以获取子项的所有配置**\n+\n[IMPORTANT]\n====\n* **获取 `k1` 项的配置**\n+\nrequest::\n`$ curl https://duic.zhudy.io/api/v1/apps/sample/first/k1`\nresponse::\n+\n```\n{\n  \"string\":\"samples first k1 string\",\n  \"int\":11,\n  \"array\":[\n    1,\n    2,\n    3\n  ],\n  \"multiple_lines\":\"sample\\nfirst\\nmultiple\\nlines\"\n}\n```\n* **获取 `k1.string` 项的配置**\n+\nrequest::\n`$ curl https://duic.zhudy.io/api/v1/apps/sample/first/k1.string`\nresponse::\n+\n```\n{\n  \"value\":\"samples first k1 string\"\n}\n```\n====\n* **完美支持 spring-boot**\n+\nduic 不仅可以管理你的业务配置，同时还可以管理 spring-boot 自身的任何配置，你可以像在 `application.yaml` 文件中编辑配置一样的编辑它，\n同时我们还提供了 https://github.com/zhudyos/duic-spring-cloud-config-client[duic-spring-cloud-config-client]，该库支持 `@ConfigurationProperties` `@Value`\n注解，同时还支持配置热加载\n* **配置权限管理**\n+\n支持配置权限管理，用户只可以修改自身拥有权限的配置\n* **配置支持 IP 访问限制**\n+\n每个 **profile** 的配置都可以设置 IP 访问控制，不在访问限制内的 IP 将无法获取配置信息\n* **配置支持 TOKEN 校验**\n+\n访问有 TOKEN 校验的配置必须在请求中带上 TOKEN，TOKEN 校验失败将无法获取配置信息\n* **支持 docker 部署**\n+\nhttps://hub.docker.com/r/zhudyos/duic[https://hub.docker.com/r/zhudyos/duic]\n* **部署简单**\n+\nduic 部署非常简单，只依赖一个数据库存储配置数据，不依赖其它任何中间件，即可实现分布式集群部署\n* **高性能**\n+\nduic 是采用 spring-webflux 开发，能最大化利用机器的硬件资源，同时 duic 是直接将所有可用的配置直接加载在内存中，在拉取配置时\n直接从内存中返回配置信息，对于数据库没有任何压力\n\n== 资源\n* **https://github.com/zhudyos/duic-java-client[duic-java-client]**\n+\njava 版本客户端程序::\n** 支持 java\n** 支持 spring\n* **https://github.com/zhudyos/duic-spring-cloud-config-client[duic-spring-cloud-config-client]**\n+\nspring-boot 配置客户端程序\n* **https://github.com/zhudyos/duic-examples[duic-examples 示例程序]**\n\n== https://github.com/zhudyos/duic/wiki[文档]\n\n== 已知用户\n[TIP]\n====\n按登记顺序展示\n\n如果你正在使用 duic，欢迎在 https://github.com/zhudyos/duic/issues/3[https://github.com/zhudyos/duic/issues/3] 登记。仅作为开源参考，不作其它用途\n====\nimage::doc/images/know-users/2339.png[么么直播]\n\n== 相关项目\n. https://projects.spring.io/spring-boot/[Spring Boot]\n. https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html[Spring WebFlux]\n. https://vuetifyjs.com[Vuetify]\n\n== 感谢\nimage::doc/images/jetbrains-blackandwhite.png[JetBrains,100,100,link=\"https://www.jetbrains.com/?from=duic\"]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhudyos%2Fduic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhudyos%2Fduic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhudyos%2Fduic/lists"}