diff --git a/README.md b/README.md index ad0e360f74d32bb1015bba9b7d7ee73b62a464e1..78be58a6aee6b443d8e8c6c84122553c71911de9 100644 --- a/README.md +++ b/README.md @@ -1 +1,74 @@ +## 基础核心功能 + ### 配置类型 + * properties + * file(xml,json, yml, yaml) + +#### properties +* portal + * 支持单条配置项编辑 + * 支持以file级别编辑(迁移老项目properties,直接copy) + * 可以查看每一个配置项的更改历史(追责,查问题等) + * 配置需要发布才能生效(类似于code发布),发布时可以查看所有的配置修改 + * 记录发布历史 + * 配置发布后,所有的的client在1ms内,更新配置并回调监听事件 +* client + * 通过 apollo-client API获取配置项 + * client api强制用户传入default值,作为最后一层保险(config cache layer) + 1. client memory cache + 2. client file cache + 3. config server file cache + 4. db + * 通过http restful api获取properties文件 + * client可以监听每一个key的change事件 + +### file +* protal + * 文本直接编辑 + * 发布时,显示 diff + * 记录修改、发布历史 +* client + * 以String返回file + * 可以监听change事件 + +## 高级进阶功能 +以上功能是配置中心的核心功能,后台修改配置及时通知到客户端,以及客户端可以监听change事件。如果只支持这些,那么就没必要拿出来卖了~ + +###高级功能1 --- 配置回滚 +配置只有发布后才会生效,有发布当然有回滚啦,虽然功能不大,但是实用价值明显。在发布历史页面可以明确看到那一份是最新配置,哪些是回滚作废了配置。 +### 高级功能2 --- 配置分集群 +同一份代码,同一个包在多个DC,或者在不同的cluster配置可能不一致。比如主DC的机器性能更好,可以提供更强大的服务,所以设置的路由优先级高。 + +### 高级功能3 --- 配置有继承关系 +场景:业务依赖某公共组件,公共组件配置默认值,业务方可以自定义配置且覆盖公共配置。但是不支持多层继承,最多两层。因为考虑多层继承会导致模型复杂度大大提升,犯错的几率也相应的提高。 +配置有继承关系,虽然简单,但可以有无限的想象空间,应用空间。 + +### 高级功能4 --- 配置可以分组 +一个app下面可以有多种类型的配置,配置分组便于管理和维护。一个组是一个namespace + +### 高级功能5 --- 配置支持file +是不是很多老项目的配置是xml?完美支持~ + +### 高级功能6 --- 权限控制 +所有的项目都有权限,现有的权限包括,namespace级别的编辑,发布权。项目级别的管理权限,包括创建cluster,创建namespace,分配namespace权限等。以及:namespace一次发布过程中编辑和发布不能为同一个人,强制增加review过程。我们的权限有何特殊之处呢?权限模型非常易于扩展~ + +### 高级功能7 --- http restful api +我们内部client端已支持java和.net版本,但是还有很多其他语言未支持。同时,在推广过程中发现很多团队自己搞过简易版的“配置中心”,不想接入client,而是为其提供restful,便于迁移。 + +###高级功能8 --- open api +传统的配置中心,client端只有查询配置的功能。携程内部推广的过程中用户有以下两点需求: + 1. 用户的用户是运营同学,不应该让他们直接使用配置中心的后台,而是用户自己封装业务场景,然后调用我们的存储配置api + 2. 我们的portal支持绝大部分使用场景,但是有些部门的配置需要做比如校验、预处理等操作 + +针对第二种场景,如果我们为其开发校验、预处理功能,那么我们的portal将会被污染且不可控。这部分功能应由用户自己去开发,然后调用我们的open api。 +开放那些接口以及做到那种程度的auth,我们都经过深入的考虑。 + +###高级功能9 --- 可以查看配置实例信息 +portal能看到配置信息,但是对于client 实例一无所知?那些应用,哪些机器用了我的配置?每台机器都用了哪份配置?某台机器是不是用了最新的配置?所有信息一览无余~ + +###高级功能10 --- 配置灰度发布 | ABTest +场景:调整某个配置参数,先看一下某台机器的效果,而不是全部的机器。跟应用的灰度发布场景一致 + + +## 附:portal项目主页(更多设计以及portal交互请查看附件) +