This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git


The following commit(s) were added to refs/heads/master by this push:
     new 03835b3  add secrets documents (#308)
03835b3 is described below

commit 03835b30cc2e95989d2260f69de3e70a2047e177
Author: liubao68 <[email protected]>
AuthorDate: Tue Dec 19 11:24:56 2023 +0800

    add secrets documents (#308)
---
 .../zh_CN/docs/featured-topics/features.md         |  11 +-
 .../features/configuration-sources.md              | 148 ---------------------
 .../docs/featured-topics/features/date-time.md     |   4 +-
 .../featured-topics/features/http-dispatcher.md    |   8 +-
 .../zh_CN/docs/featured-topics/features/invoker.md |  15 +--
 .../docs/featured-topics/features/trace-id.md      |   2 +-
 .../zh_CN/docs/featured-topics/secrets.md          |   3 +
 .../secrets/load-balancer-selector-empty.png       | Bin 0 -> 6350 bytes
 .../secrets/load-balancer-selector-normal.png      | Bin 0 -> 5543 bytes
 .../secrets/load-balancer-selector.png             | Bin 0 -> 5618 bytes
 .../docs/featured-topics/secrets/load-balancer.md  |  63 +++++++++
 .../zh_CN/docs/featured-topics/upgrading.md        |   2 +-
 .../zh_CN/docs/start/first-sample.md               |   2 +-
 java-chassis-reference/zh_CN/mkdocs.yml            |   7 +-
 14 files changed, 83 insertions(+), 182 deletions(-)

diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/features.md 
b/java-chassis-reference/zh_CN/docs/featured-topics/features.md
index d53a390..f320144 100644
--- a/java-chassis-reference/zh_CN/docs/featured-topics/features.md
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/features.md
@@ -1,8 +1,7 @@
-# 新功能介绍系列文章
+# 特性介绍
 
-* [2.0.0 新特性介绍: 多配置中心支持](features/configuration-sources.md)
-* [2.0.1 新特性介绍: date和date-time](features/date-time.md)
-* [2.0.1 新特性介绍: 在日志中记录trace id](features/trace-id.md)
-* [2.0.1 新特性介绍: 泛化调用](features/invoker.md)
-* [2.0.2 新特性介绍: Edge Service 通用的 HTTP 转发器 
CommonHttpEdgeDispatcher](features/http-dispatcher.md)
+* [特性介绍: date和date-time](features/date-time.md)
+* [特性介绍: 在日志中记录trace id](features/trace-id.md)
+* [特性介绍: 泛化调用](features/invoker.md)
+* [特性介绍: Edge Service 通用的 HTTP 转发器 
CommonHttpEdgeDispatcher](features/http-dispatcher.md)
 * 
\ No newline at end of file
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/features/configuration-sources.md
 
b/java-chassis-reference/zh_CN/docs/featured-topics/features/configuration-sources.md
deleted file mode 100644
index f28d6ae..0000000
--- 
a/java-chassis-reference/zh_CN/docs/featured-topics/features/configuration-sources.md
+++ /dev/null
@@ -1,148 +0,0 @@
-# 2.0.0 新特性介绍: 多配置中心支持
-
-很多热心的开发者给 2.0.0 贡献了很多新的特性, @GuoYL123 贡献了 servicecomb-kie 的支持, @160731liupf 贡献了 
nacos
-的支持, 本文介绍开发者如何在自己的项目中使用这些配置中心。
-
-## Java Chassis 配置源介绍和使用指南
-
-配置中心是微服务架构下一个非常重要的中间件,通过配置中心用户可以增加和删除配置信息,配置信息会通过不同的通知机制(通常包括
-PULL 和 PUSH), 将配置的变化推送到微服务实例。 java-chassis 允许用户使用不同的配置中心, 目前支持用户使用如下几种配置中心:
-
-* 华为云配置中心
-
-华为云配置中心是华为云CSE产品的一个部件,java-chassis 最早使用它作为配置中心。 对接这个配置中心的代码在 config-cc 模块实现。
-可以从[轻量化微服务引擎](https://cse-bucket.obs.myhwclouds.com/LocalCSE/Local-CSE-1.0.3.zip)下载本地使用的版本。也可以
-直接访问华为云 [ServiceStage](https://console.huaweicloud.com/servicestage) 
产品,使用在线的版本。
-
-使用华为云配置中心,需要在项目中引入如下依赖:
-
-```xml
-<dependency>
-  <groupId>org.apache.servicecomb</groupId>
-  <artifactId>config-cc</artifactId>
-</dependency>
-```
-
-然后在配置文件 microservice.yaml 中增加如下配置项:
-
-```yaml
-servicecomb:
-  config:
-    client:
-      serverUri: http://127.0.0.1:30113
-      refreshMode: 0
-      refresh_interval: 5000
-      refreshPort: 30114
-```
-
-华为云配置中心的其他配置项含义如下:
-
-|配置项名|描述|
-|---|---|
-|servicecomb.config.client.refreshMode|应用配置的刷新方式,`0`为config-center主动push,`1`为client周期pull,默认为`0`|
-|servicecomb.config.client.refreshPort|config-center推送配置的端口|
-|servicecomb.config.client.tenantName|应用的租户名称|
-|servicecomb.config.client.serverUri|config-center访问地址,格式为`http(s)://{ip}:{port}`,以`,`分隔多个地址|
-|servicecomb.config.client.refresh_interval|pull模式下刷新配置项的时间间隔,单位为毫秒,默认值为30000|
-
-* 使用 servicecomb-kie
-
-[servicecomb-kie](https://github.com/apache/servicecomb-kie) 是全新设计的配置中心。 
-从 2.0.0 版本开始, java-chassis 支持使用 servicecomb-kie。 
-从 2.0.1 版本开始, java-chassis 默认使用long polling 拉取 servicecomb-kie 
配置,来节省间隔轮询带来的网络消耗。 
-servicecomb-kie 的安装指导可以参考官网文档。 在 java-chassis 中使用 servicecomb-kie, 需要引入下面的依赖:
-
-```xml
-<dependency>
-  <groupId>org.apache.servicecomb</groupId>
-  <artifactId>config-kie</artifactId>
-</dependency>
-```
-
-然后在配置文件 microservice.yaml 中增加如下配置项:
-
-```yaml
-servicecomb:
-  kie:
-    serverUri: http://127.0.0.1:30110
-    refresh_interval: 5000
-    firstRefreshInterval: 5000
-    domainName: default
-```
-
-servicecomb-kie 的配置项及其含义如下:
-
-|配置项名|描述|
-|---|---|
-|servicecomb.kie.domainName| 区域名称,默认为default |
-|servicecomb.kie.serverUri|servicecomb-kie访问地址,格式为`http(s)://{ip}:{port}`,以`,`分隔多个地址|
-|servicecomb.kie.refresh_interval|pull模式下刷新配置项的时间间隔,单位为毫秒,默认值为3000|
-|servicecomb.kie.firstRefreshInterval|pull模式下启动过程中首次刷新时间间隔,单位为毫秒,默认值为3000|
-
-* 使用 nacos
-
-[nacos](https://github.com/alibaba/nacos) 是 alibaba 提供的配置中心。 java-chassis 从 
2.0.0 版本支持 nacos。 
-nacos的下载安装请参考官网介绍。 
-
-使用nacos,需要在项目中引入如下依赖:
-
-```xml
-<dependency>
-  <groupId>org.apache.servicecomb</groupId>
-  <artifactId>config-nacos</artifactId>
-</dependency>
-```
-
-然后在配置文件 microservice.yaml 中增加如下配置项:
-
-```yaml
-servicecomb:
-  nacos:
-    serverUri: http://127.0.0.1:8848
-    group: DEFAULT_GROUP
-    dataId: example
-```
-
-* 使用 Apollo
-
-[Apollo](https://github.com/ctripcorp/apollo) 是携程框架部门研发的分布式配置中心。 
Apollo的下载安装请参考官网介绍。 
-
-```xml
-<dependency>
-  <groupId>org.apache.servicecomb</groupId>
-  <artifactId>config-apollo</artifactId>
-</dependency>
-```
-
-然后在配置文件 microservice.yaml 中增加如下配置项:
-
-```yaml
-apollo:
-  config:
-    serverUri: http://127.0.0.1:8070
-    serviceName: apollo-test
-    env: DEV
-    clusters: test-cluster
-    namespace: application
-    token: xxx
-    refreshInterval: 30
-    firstRefreshInterval: 0
-```
-
-## 参与配置源的开发和贡献
-
-2.0.0 版本提供了4种配置源的支持, 如果采用 Spring Boot 运行模式, 由于 Java Chassis 继承和适配了 Spring Boot 
的
-配置源,  因此 Spring Boot 采用的配置源也可以平滑的被 Java Chassis 应用程序使用。 比如 Java Chassis 在 
Spring Boot
-集成模式下使用 application.yml 作为配置文件, 可以使用 git 作为动态配置源。 
-
-因此, Java Chassis 已经支持大部分开发者能够使用的配置源。 然而,目前的支持仍然是不够的, 每一个不同的配置中心
-都提供了非常独特的功能, Java Chassis 只是集成了它们极少的核心功能, 维护一个配置中心的支持,需要长期大量的应用
-验证,才能够把功能做的稳定和强大。 因此,配置中心的支持还需要开发者帮助持续的贡献代码。
-
-Java Chassis 的配置扩展是基于 [archaius](https://github.com/Netflix/archaius), 
开发者只需要实现 `ConfigCenterConfigurationSource`,
-即可以接入其他配置中心。 Java Chassis 的源码目录 config-cc, config-apollo, config-kie, 
config-nacos 分别实现了
-这个接口。 
-
-* [nacos 支持PR](https://github.com/apache/servicecomb-java-chassis/pull/1405)
-* [servicecomb-kie 
支持PR](https://github.com/apache/servicecomb-java-chassis/pull/1518)
-* [Java Chassis 通用配置说明](http://localhost:8000/config/general-config/)
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/features/date-time.md 
b/java-chassis-reference/zh_CN/docs/featured-topics/features/date-time.md
index 0f92397..7c15c73 100644
--- a/java-chassis-reference/zh_CN/docs/featured-topics/features/date-time.md
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/features/date-time.md
@@ -1,8 +1,6 @@
-# 2.0.1 新特性介绍: date和date-time
+# 特性介绍: date和date-time
 
 OpenAPI 针对时间定义了两种类型 [date 和 
date-time](https://swagger.io/docs/specification/data-models/data-types/#string)。
-JavaChassis 在2.0.1之前的版本只支持使用 date-time,而且必须要求使用 `java.util.Date` 作为运行时类型,
-2.0.1 版本扩充了 date 和 date-time 的实现,开发者可以使用更加灵活的方式使用这两种类型。
 
 ## 使用 date
 
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/features/http-dispatcher.md 
b/java-chassis-reference/zh_CN/docs/featured-topics/features/http-dispatcher.md
index 98b0819..b741d46 100644
--- 
a/java-chassis-reference/zh_CN/docs/featured-topics/features/http-dispatcher.md
+++ 
b/java-chassis-reference/zh_CN/docs/featured-topics/features/http-dispatcher.md
@@ -1,9 +1,7 @@
-# 2.0.2 新特性介绍: Edge Service 通用的 HTTP 转发器 CommonHttpEdgeDispatcher
+# 特性介绍: Edge Service 通用的 HTTP 转发器 CommonHttpEdgeDispatcher
 
-Edge Service 提供了非常丰富的 HTTP 转发器,并支持自定义扩展。在 2.0.2 版本之前,缺省提供的转发器都是针对
-使用 java-chassis 开发的微服务设计的,这些转发器除了能够转发请求到不同的 transport , 还能够支持 consumer
-端服务治理, 和普通的 consumer 调用类似。 在实际业务中,可能存在不同开发框架并存的情况,也可能包含遗留应用
-系统,或者需要将请求转发到其他第三方系统的场景。 2.0.2 提供了一个新的转发器 CommonHttpEdgeDispatcher 支持这些场景。 
+Edge Service 提供了非常丰富的 HTTP 转发器,并支持自定义扩展。在实际业务中,可能存在不同开发框架并存的情况,也可能包含遗留应用
+系统,或者需要将请求转发到其他第三方系统的场景。 Java Chassis提供了 CommonHttpEdgeDispatcher 支持这些场景。 
 
 CommonHttpEdgeDispatcher 要求目标微服务注册到服务中心,能够被自动发现。新的转发器可以管理实例状态,提供负载均衡策略配置,
 提供实例隔离等基本治理功能。 
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/features/invoker.md 
b/java-chassis-reference/zh_CN/docs/featured-topics/features/invoker.md
index 02ea9ab..f19eae2 100644
--- a/java-chassis-reference/zh_CN/docs/featured-topics/features/invoker.md
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/features/invoker.md
@@ -1,12 +1,9 @@
-# 2.0.1 新特性介绍: 泛化调用
+# 特性介绍: 泛化调用
 
 泛化调用指在不知道 Provider 接口定义信息的情况下,访问 Provider 提供的服务。 与泛化调用对应的方式包括透明 RPC(POJO)和 
 RestTemplate。 透明 RPC 需要提供 Provider 对应的接口, RestTemplate 需要提供 Provider 对应的 URL 和 
数据 Model 。 泛化
 调用需要提供 Provider 的服务元数据: 微服务名称, 版本, Schema ID, Operation ID, 契约参数等信息。 
 
-java-chassis 很早就提供了泛化调用, 本文重点介绍 2.0.1 的功能。 2.0.1 对于泛化调用的接口进行了优化, 支持指定响应类型,
-早期的版本的响应类型取决于运行上下文, 是不确定的。 
-
 ## 使用泛化调用
 
 假设 Provider 采用透明 RPC 的方式提供了如下服务:
@@ -96,7 +93,6 @@ TestMgr.check(model.get("name"), modelResult.getName());
 RPC 开发模式下多个参数的场景, Spring MVC 的 Bean Param 的场景等等。 
 
 ## 采用 reactive API
-2.0.1 泛化调用还增加了对应的 reactive API, 这样更加方便采用 reactive 方式调用 Provider 的服务。 
 
 ```java
 CountDownLatch countDownLatch = new CountDownLatch(1);
@@ -108,12 +104,3 @@ InvokerUtils.reactiveInvoke("pojo", "InvokerEndpoint", 
"model", args, ClientMode
 });
 countDownLatch.await();
 ```  
-
-## 2.0.1 版本之前的 API 
-
-2.0.1 版本之前的 API 不能够指定 `responseType` , 因此返回值类型是不确定的, 这个取决于运行的上下文。 如果 Consumer 
没有加载
-任何 `@RpcReference` 信息, 并且不存在 Provider 返回值 Model , 那么返回值类型是 Map ; 否则返回结果可能是和 
Provider 具备相同
-package 类的实例, 这个返回接口的类型还可能和加载顺序有关。 由于这种不确定性, 早期的 API 使用 `@Deprecated` 声明为废弃。 将
-`responseType`  设置为 null , 能够获得和早期 API 一样的效果。 
-
-
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/features/trace-id.md 
b/java-chassis-reference/zh_CN/docs/featured-topics/features/trace-id.md
index feff69e..ec1456f 100644
--- a/java-chassis-reference/zh_CN/docs/featured-topics/features/trace-id.md
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/features/trace-id.md
@@ -1,4 +1,4 @@
-# 2.0.1 新特性介绍: 在日志中记录trace id
+# 特性介绍: 在日志中记录trace id
 
 微服务架构下,需要部署大量的微服务实例,调用情况复杂,给问题定位带来了很大的麻烦。 通过调用链系统能够很好的解决日志追踪的问题,
 但是对于日常的开发调试,部署调用链仍然显得复杂。 java-chassis 提供了一种简单的机制,允许业务在记录日志的时候,包含trace id。 
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/secrets.md 
b/java-chassis-reference/zh_CN/docs/featured-topics/secrets.md
new file mode 100644
index 0000000..6d0f23c
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/secrets.md
@@ -0,0 +1,3 @@
+# 技术解密
+
+* [Java Chassis 3技术解密:负载均衡选择器](secrets/load-balancer.md)
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector-empty.png
 
b/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector-empty.png
new file mode 100644
index 0000000..00c4666
Binary files /dev/null and 
b/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector-empty.png
 differ
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector-normal.png
 
b/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector-normal.png
new file mode 100644
index 0000000..7167437
Binary files /dev/null and 
b/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector-normal.png
 differ
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector.png
 
b/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector.png
new file mode 100644
index 0000000..b824315
Binary files /dev/null and 
b/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer-selector.png
 differ
diff --git 
a/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer.md 
b/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer.md
new file mode 100644
index 0000000..e992a7a
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/secrets/load-balancer.md
@@ -0,0 +1,63 @@
+# Java Chassis 3技术解密:负载均衡选择器
+
+负载均衡用于管理微服务实例之间的访问策略。它负责在每次请求中高效选择目标实例,并保持请求在多个目标实例中均衡。目标实例选择过程可以使用下面的示例图简单展示:
+
+![](load-balancer-selector.png)
+
+AZ亲和是常见的选择器之一。它根据本实例的AZ信息和目标实例的AZ信息,确定合适的目标实例子集,实例子集与本实例具有相同的AZ信息。
+
+负载均衡选择器是一个典型的职责链模式。
+
+* Ribbon 的职责链
+
+```java
+public interface ServerListFilter<T extends Server> {
+  List<T> getFilteredListOfServers(List<T> servers);
+}
+```
+
+* Spring Cloud Commons 的职责链
+
+```java
+public abstract class DelegatingServiceInstanceListSupplier implements 
ServiceInstanceListSupplier, InitializingBean, DisposableBean {
+  protected final ServiceInstanceListSupplier delegate;
+
+  public DelegatingServiceInstanceListSupplier(ServiceInstanceListSupplier 
delegate) {
+    this.delegate = delegate;
+  }
+
+  public ServiceInstanceListSupplier getDelegate() {
+    return this.delegate;
+  }
+}
+```
+
+* Java Chassis 的职责链
+
+```java
+public interface DiscoveryFilter extends Ordered {
+  DiscoveryTreeNode discovery(DiscoveryContext context, DiscoveryTreeNode 
parent);
+}
+```
+
+Java Chassis 使用了树型结构的职责链,它的工作过程如下:
+
+* 将实例预分组。
+* 通过树型结构索引,快速找到目标实例集合。
+* 当某个树节点为空的场景,可以返回上层选择器,重新查找。 
+
+能够快速检索到实例的场景:
+
+![](load-balancer-selector-normal.png)
+
+出现实例为空的的场景:
+
+![](load-balancer-selector-empty.png)
+
+
+相对于线性的职责链模式,树型职责链模式存在两方面明显的优势:
+
+* 计算复杂度从 O(N) 降低为 O(1)。 当实例规模很大,比如超过1000的时候,该算法能够极大的降低CPU使用率,减少垃圾回收的数量。 
+* 
能够解决上层选择器的结果在下层选择器的结果为空的问题。比如在AZ亲和场景,如果本AZ的实例不满足后续选择器的条件,那么使用非本AZ的实例,能够确保本次访问的正确性,降低错误率,也能够更好的满足请求均衡的要求。
+
+>>> 
客户故事:在某个客户的实际场景中,如果实例数超过1000,负载均衡的CPU消耗占到整个请求处理时间的20%以上,随着应用规模的变大,负载均衡处理算法的性能优化变得更加重要了。
 
diff --git a/java-chassis-reference/zh_CN/docs/featured-topics/upgrading.md 
b/java-chassis-reference/zh_CN/docs/featured-topics/upgrading.md
index fc8d479..aa9442d 100644
--- a/java-chassis-reference/zh_CN/docs/featured-topics/upgrading.md
+++ b/java-chassis-reference/zh_CN/docs/featured-topics/upgrading.md
@@ -1,3 +1,3 @@
-# 升级指导系列文章
+# 升级指导
 
 * [2.8.x 升级 3.0.0指导](upgrading/2_8_0T3_0_0.md)
diff --git a/java-chassis-reference/zh_CN/docs/start/first-sample.md 
b/java-chassis-reference/zh_CN/docs/start/first-sample.md
index 91dff1f..8e60e02 100644
--- a/java-chassis-reference/zh_CN/docs/start/first-sample.md
+++ b/java-chassis-reference/zh_CN/docs/start/first-sample.md
@@ -267,4 +267,4 @@ mvn clean install -Pnacos
 java -Dspring.profiles.active=nacos -jar basic-provider-2.0-SNAPSHOT.jar
 ```
 
-也可以在IDE里面选择 MVN 的 nacos PROFILE,并修改 application.yml 的 `spring.profiles.active` 
为 nacos. 
+也可以在IDE里面选择 MAVEN 的 nacos PROFILE,并修改 application.yml 的 
`spring.profiles.active` 为 nacos. 
diff --git a/java-chassis-reference/zh_CN/mkdocs.yml 
b/java-chassis-reference/zh_CN/mkdocs.yml
index 22c476c..0d8d788 100644
--- a/java-chassis-reference/zh_CN/mkdocs.yml
+++ b/java-chassis-reference/zh_CN/mkdocs.yml
@@ -5,7 +5,7 @@ nav:
 
 - 概述 : index.md
 - Java Chassis设计参考: start/design.md
-- 3.x.x 版本介绍 : introduce3.x.x.md
+- Java Chassis 3版本介绍 : introduce3.x.x.md
 - 快速入门:
   - 安装本地开发环境: start/development-environment.md
   - 开发第一个微服务应用: start/first-sample.md
@@ -76,8 +76,9 @@ nav:
     - 使用TLS通信: security/tls.md
     - 使用RSA认证: security/shi-yong-rsa-ren-zheng.md
 - 专题文章:
-    - 新功能介绍系列文章: featured-topics/features.md
-    - 升级指导系列文章: featured-topics/upgrading.md
+    - 特性介绍: featured-topics/features.md
+    - 技术解密: featured-topics/secrets.md
+    - 升级指导: featured-topics/upgrading.md
     - 兼容问题和兼容性策略: featured-topics/compatibility.md
     - 性能问题分析和调优: featured-topics/performance.md
 - 常用配置项参考:

Reply via email to