mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
sync & commit in finchley
This commit is contained in:
@@ -93,3 +93,4 @@ access-key 和 secret-key 则是阿里云账号的 AK/SK,需要首先注册阿
|
||||
namespace 是阿里云 EDAS 产品的概念,用于隔离不同的环境,比如测试环境和生产环境。要获取 namespace 需要 https://common-buy.aliyun.com/?spm=5176.11451019.0.0.6f5965c0Uq5tue&commodityCode=edaspostpay#/buy[开通 EDAS 服务],按量计费模式下开通是免费的,开通以后进入 https://edas.console.aliyun.com/#/namespaces?regionNo=cn-hangzhou[EDAS控制台],即可看到对应的 namespace,比如 cn-hangzhou。
|
||||
|
||||
NOTE: EDAS 提供应用托管服务,如果你将应用托管到 EDAS,那么 EDAS 将会自动为你填充所有配置。
|
||||
|
||||
|
@@ -20,3 +20,4 @@ Spring Cloud Alibaba BOM 包含了它所使用的所有依赖的版本。
|
||||
|
||||
在下面的章节中,假设您使用的是 Spring Cloud Alibaba bom,相关 starter 依赖将不包含版本号。
|
||||
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
## 介绍
|
||||
== 介绍
|
||||
|
||||
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
|
||||
|
||||
|
@@ -44,7 +44,7 @@ image::https://img.alicdn.com/tfs/TB1dyWJbQL0gK0jSZFtXXXQCXXa-2788-1086.png[]
|
||||
* pom.xml的配置。一个完整的 pom.xml 配置如下所示:
|
||||
|
||||
.pom.xml
|
||||
[source,xml,indent=0]
|
||||
[source,xml]
|
||||
----
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
== Spring Cloud Alibaba RocketMQ Binder
|
||||
|
||||
### RocketMQ 介绍
|
||||
=== RocketMQ 介绍
|
||||
|
||||
https://rocketmq.apache.org[RocketMQ] 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。
|
||||
|
||||
@@ -16,7 +16,7 @@ https://rocketmq.apache.org[RocketMQ] 是一款开源的分布式消息系统,
|
||||
|
||||
* 亿级消息堆积能力
|
||||
|
||||
### RocketMQ 基本使用
|
||||
=== RocketMQ 基本使用
|
||||
|
||||
* 下载 RocketMQ
|
||||
|
||||
@@ -74,7 +74,7 @@ sh bin/mqshutdown broker
|
||||
sh bin/mqshutdown namesrv
|
||||
```
|
||||
|
||||
### Spring Cloud Stream 介绍
|
||||
=== Spring Cloud Stream 介绍
|
||||
|
||||
Spring Cloud Stream 是一个用于构建基于消息的微服务应用框架。它基于 SpringBoot 来创建具有生产级别的单机 Spring 应用,并且使用 `Spring Integration` 与 Broker 进行连接。
|
||||
|
||||
@@ -115,7 +115,7 @@ messageChannel.send(MessageBuilder.withPayload("simple msg").build());
|
||||
**Spring Cloud Stream 底层基于这段代码去做了各种抽象。**
|
||||
|
||||
|
||||
### 如何使用 Spring Cloud Alibaba RocketMQ Binder ###
|
||||
=== 如何使用 Spring Cloud Alibaba RocketMQ Binder ###
|
||||
|
||||
如果要在您的项目中引入 RocketMQ Binder,需要引入如下 maven 依赖:
|
||||
|
||||
@@ -135,7 +135,7 @@ messageChannel.send(MessageBuilder.withPayload("simple msg").build());
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### Spring Cloud Alibaba RocketMQ Binder 实现
|
||||
=== Spring Cloud Alibaba RocketMQ Binder 实现
|
||||
|
||||
这是 Spring Cloud Stream RocketMQ Binder 的实现架构:
|
||||
|
||||
@@ -166,12 +166,12 @@ NOTE: 在使用 RocketMQ Binder 的同时也可以配置 rocketmq.** 用于触
|
||||
MessageBuilder builder = MessageBuilder.withPayload(msg)
|
||||
.setHeader(RocketMQHeaders.TAGS, "binder")
|
||||
.setHeader(RocketMQHeaders.KEYS, "my-key")
|
||||
.setHeader("DELAY", "1");
|
||||
.setHeader(MessageConst.PROPERTY_DELAY_TIME_LEVEL, "1");
|
||||
Message message = builder.build();
|
||||
output().send(message);
|
||||
```
|
||||
|
||||
### MessageSource 支持
|
||||
=== MessageSource 支持
|
||||
|
||||
SCS RocketMQ Binder 支持 `MessageSource`,可以进行消息的拉取,例子如下:
|
||||
|
||||
@@ -225,9 +225,9 @@ public class MQApplication {
|
||||
|
||||
|
||||
|
||||
### 配置选项
|
||||
=== 配置选项
|
||||
|
||||
#### RocketMQ Binder Properties
|
||||
==== RocketMQ Binder Properties
|
||||
|
||||
spring.cloud.stream.rocketmq.binder.name-server::
|
||||
RocketMQ NameServer 地址(老版本使用 namesrv-addr 配置项)。
|
||||
@@ -251,7 +251,7 @@ spring.cloud.stream.rocketmq.binder.customized-trace-topic::
|
||||
Default: `RMQ_SYS_TRACE_TOPIC`.
|
||||
|
||||
|
||||
#### RocketMQ Consumer Properties
|
||||
==== RocketMQ Consumer Properties
|
||||
|
||||
下面的这些配置是以 `spring.cloud.stream.rocketmq.bindings.<channelName>.consumer.` 为前缀的 RocketMQ Consumer 相关的配置。
|
||||
|
||||
@@ -287,7 +287,7 @@ suspendCurrentQueueTimeMillis::
|
||||
+
|
||||
默认值: `1000`.
|
||||
|
||||
#### RocketMQ Provider Properties
|
||||
==== RocketMQ Provider Properties
|
||||
|
||||
下面的这些配置是以 `spring.cloud.stream.rocketmq.bindings.<channelName>.producer.` 为前缀的 RocketMQ Producer 相关的配置。
|
||||
|
||||
@@ -336,7 +336,7 @@ retryNextServer::
|
||||
+
|
||||
默认值: `false`.
|
||||
|
||||
### 阿里云 MQ 服务
|
||||
=== 阿里云 MQ 服务
|
||||
|
||||
使用阿里云 MQ 服务需要配置 AccessKey、SecretKey 以及云上的 NameServer 地址。
|
||||
|
||||
@@ -351,4 +351,4 @@ spring.cloud.stream.rocketmq.binder.name-server=NameServerInMQ
|
||||
NOTE: topic 和 group 请以 实例id% 为前缀进行配置。比如 topic 为 "test",需要配置成 "实例id%test"
|
||||
|
||||
.NameServer 的获取(配置中请去掉 http:// 前缀)
|
||||
image::https://spring-cloud-alibaba.oss-cn-beijing.aliyuncs.com/MQ.png[]
|
||||
image::https://spring-cloud-alibaba.oss-cn-beijing.aliyuncs.com/MQ.png[]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
== Spring Cloud Alibaba Sentinel
|
||||
|
||||
### Sentinel 介绍
|
||||
=== Sentinel 介绍
|
||||
|
||||
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 https://github.com/alibaba/Sentinel[Sentinel] 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
|
||||
|
||||
@@ -11,11 +11,12 @@ https://github.com/alibaba/Sentinel[Sentinel] 具有以下特征:
|
||||
* *广泛的开源生态*: Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
|
||||
* *完善的 SPI 扩展点*: Sentinel 提供简单易用、完善的 SPI 扩展点。您可以通过实现扩展点,快速的定制逻辑。例如定制规则管理、适配数据源等。
|
||||
|
||||
### 如何使用 Sentinel
|
||||
=== 如何使用 Sentinel
|
||||
|
||||
如果要在您的项目中引入 Sentinel,使用 group ID 为 `com.alibaba.cloud` 和 artifact ID 为 `spring-cloud-starter-alibaba-sentinel` 的 starter。
|
||||
|
||||
```xml
|
||||
[source,yaml]
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||
@@ -75,7 +76,7 @@ public class TestController {
|
||||
}
|
||||
```
|
||||
|
||||
##### Sentinel 控制台
|
||||
===== Sentinel 控制台
|
||||
|
||||
Sentinel 控制台提供一个轻量级的控制台,它提供机器发现、单机资源实时监控、集群资源汇总,以及规则管理的功能。您只需要对应用进行简单的配置,就可以使用这些功能。
|
||||
|
||||
@@ -86,7 +87,7 @@ image::https://github.com/alibaba/Sentinel/wiki/image/dashboard.png[]
|
||||
|
||||
开启该功能需要3个步骤:
|
||||
|
||||
###### 获取控制台
|
||||
====== 获取控制台
|
||||
|
||||
您可以从 https://github.com/alibaba/Sentinel/releases[release 页面] 下载最新版本的控制台 jar 包。
|
||||
|
||||
@@ -96,7 +97,7 @@ image::https://github.com/alibaba/Sentinel/wiki/image/dashboard.png[]
|
||||
* 使用以下命令将代码打包成一个 fat jar: `mvn clean package`
|
||||
|
||||
|
||||
###### 启动控制台
|
||||
====== 启动控制台
|
||||
|
||||
Sentinel 控制台是一个标准的 SpringBoot 应用,以 SpringBoot 的方式运行 jar 包即可。
|
||||
|
||||
@@ -106,10 +107,9 @@ java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject
|
||||
|
||||
如若8080端口冲突,可使用 `-Dserver.port=新端口` 进行设置。
|
||||
|
||||
#### 配置控制台信息
|
||||
==== 配置控制台信息
|
||||
|
||||
.application.yml
|
||||
[source,yaml]
|
||||
----
|
||||
spring:
|
||||
cloud:
|
||||
@@ -123,7 +123,7 @@ spring:
|
||||
|
||||
更多 Sentinel 控制台的使用及问题参考: https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0[Sentinel控制台]
|
||||
|
||||
### OpenFeign 支持
|
||||
=== OpenFeign 支持
|
||||
|
||||
Sentinel 适配了 https://github.com/OpenFeign/feign[OpenFeign] 组件。如果想使用,除了引入 `sentinel-starter` 的依赖外还需要 2 个步骤:
|
||||
|
||||
@@ -141,7 +141,7 @@ Sentinel 适配了 https://github.com/OpenFeign/feign[OpenFeign] 组件。如果
|
||||
```java
|
||||
@FeignClient(name = "service-provider", fallback = EchoServiceFallback.class, configuration = FeignConfiguration.class)
|
||||
public interface EchoService {
|
||||
@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
|
||||
@GetMapping(value = "/echo/{str}")
|
||||
String echo(@PathVariable("str") String str);
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ NOTE: Feign 对应的接口中的资源名策略定义:httpmethod:protocol://r
|
||||
|
||||
`EchoService` 接口中方法 `echo` 对应的资源名为 `GET:http://service-provider/echo/{str}`。
|
||||
|
||||
### RestTemplate 支持
|
||||
=== RestTemplate 支持
|
||||
|
||||
Spring Cloud Alibaba Sentinel 支持对 `RestTemplate` 的服务调用使用 Sentinel 进行保护,在构造 `RestTemplate` bean的时候需要加上 `@SentinelRestTemplate` 注解。
|
||||
|
||||
@@ -206,7 +206,7 @@ Sentinel RestTemplate 限流的资源规则提供两种粒度:
|
||||
|
||||
NOTE: 以 `https://www.taobao.com/test` 这个 url 并使用 GET 方法为例。对应的资源名有两种粒度,分别是 `GET:https://www.taobao.com` 以及 `GET:https://www.taobao.com/test`
|
||||
|
||||
### 动态数据源支持
|
||||
=== 动态数据源支持
|
||||
|
||||
`SentinelProperties` 内部提供了 `TreeMap` 类型的 `datasource` 属性用于配置数据源信息。
|
||||
|
||||
@@ -254,7 +254,7 @@ NOTE: 默认情况下,xml 格式是不支持的。需要添加 `jackson-datafo
|
||||
|
||||
关于 Sentinel 动态数据源的实现原理,参考: https://github.com/alibaba/Sentinel/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%E6%89%A9%E5%B1%95[动态规则扩展]
|
||||
|
||||
### Zuul 支持
|
||||
=== Zuul 支持
|
||||
|
||||
https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81[参考 Sentinel 网关限流]
|
||||
|
||||
@@ -277,7 +277,7 @@ https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81[
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### Spring Cloud Gateway 支持
|
||||
=== Spring Cloud Gateway 支持
|
||||
|
||||
https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81[参考 Sentinel 网关限流]
|
||||
|
||||
@@ -300,7 +300,7 @@ https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81[
|
||||
</dependency>
|
||||
```
|
||||
|
||||
### Sentinel 对外暴露的 Endpoint
|
||||
=== Sentinel 对外暴露的 Endpoint
|
||||
|
||||
Sentinel 内部提供了一个 Endpoint, 对应的 endpoint id 为 `sentinel`。
|
||||
|
||||
@@ -404,7 +404,7 @@ Endpoint 暴露的 json 中包含了多种属性:
|
||||
}
|
||||
----
|
||||
|
||||
### 关于 Sentinel Starter 更多的配置项信息
|
||||
=== 关于 Sentinel Starter 更多的配置项信息
|
||||
|
||||
下表显示当应用的 `ApplicationContext` 中存在对应的Bean的类型时,会进行自动化设置:
|
||||
|
||||
|
165
spring-cloud-alibaba-docs/src/main/asciidoc-zh/sidecar.adoc
Normal file
165
spring-cloud-alibaba-docs/src/main/asciidoc-zh/sidecar.adoc
Normal file
@@ -0,0 +1,165 @@
|
||||
== Spring Cloud Alibaba Sidecar
|
||||
|
||||
`Spring Cloud Alibaba Sidecar` 是一个用来快速**完美整合** Spring Cloud 与 *异构微服务* 的框架,灵感来自
|
||||
https://github.com/spring-cloud/spring-cloud-netflix/tree/master/spring-cloud-netflix-sidecar[Spring Cloud Netflix Sidecar] 。目前支持的服务发现组件:
|
||||
|
||||
* Nacos
|
||||
|
||||
* Consul
|
||||
|
||||
=== 术语
|
||||
|
||||
==== 异构微服务
|
||||
|
||||
非Spring Cloud应用,统称异构微服务。比如你的遗留项目,或者非JVM应用。
|
||||
|
||||
==== ``完美整合''的三层含义
|
||||
|
||||
* 享受服务发现的优势
|
||||
* 有负载均衡
|
||||
* 有断路器
|
||||
|
||||
=== Why or Why not?
|
||||
|
||||
==== 为什么要编写Alibaba Sidecar?
|
||||
|
||||
原因有两点:
|
||||
|
||||
* Spring Cloud子项目 `Spring Cloud Netflix Sidecar` 是可以快速整合异构微服务的。然而,Sidecar只支持使用Eureka作为服务发现,*如果使用其他服务发现组件就抓瞎了*。
|
||||
* *Sidecar是基于Zuul 1.x的*,Spring Cloud官方明确声明,未来将会逐步淘汰Zuul。今年早些时候,我有给Spring Cloud官方提出需求,希望官方实现一个基于Spring Cloud Gateway的新一代Sidecar,然而官方表示并没有该计划。详见:https://github.com/spring-cloud/spring-cloud-gateway/issues/735
|
||||
|
||||
既然没有,索性自己写了。
|
||||
|
||||
==== 为什么不用Service Mesh?
|
||||
|
||||
* 目前Mesh主要使用场景在Kubernetes领域(Istio、Linkerd)等,大多将Kubernetes作为First Class支持,虽然Istio也可部署在非Kubernetes环境),而目前业界,Spring Cloud应用未必有试试Mesh的环境;
|
||||
* 使用Alibaba Sidecar一个小组件就能解决问题了(核心代码不超过200行),引入整套Mesh方案,颇有点屠龙刀杀黄鳝的意思。
|
||||
|
||||
=== 原理
|
||||
|
||||
* Alibaba
|
||||
Sidecar根据配置的异构微服务的IP、端口等信息,*将异构微服务的IP/端口注册到服务发现组件上*。
|
||||
* Alibaba Sidecar实现了 *健康检查* ,Alibaba Sidecar会定时检测异构微服务是否健康。如果发现异构微服务不健康,Alibaba Sidecar会自动将代表异构微服务的Alibaba Sidecar实例下线;如果异构微服务恢复正常,则会自动上线。最长延迟是30秒,详见 `Alibaba SidecarChecker#check` 。
|
||||
|
||||
=== 要求
|
||||
|
||||
* 【必须】你的异构微服务需使用HTTP通信。这一点严格来说不算要求,因为Spring Cloud本身就是基于HTTP的;
|
||||
* 【可选】如果微服务配置了 `sidecar.health-check-url`,则表示开启健康检查,此时,你的异构微服务需实现健康检查(可以是空实现,只要暴露一个端点,返回类似 `{"status": "UP"}` 的字符串即可)。
|
||||
|
||||
=== 使用示例
|
||||
|
||||
* 如使用Nacos作为服务发现组件,详见`spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example`
|
||||
* 如使用Consul作为服务发现组件,详见`spring-cloud-alibaba-examples/spring-cloud-alibaba-sidecar-examples/spring-cloud-alibaba-sidecar-nacos-example`
|
||||
|
||||
==== 示例代码(以Nacos服务发现为例)
|
||||
|
||||
* 加依赖:
|
||||
+
|
||||
[source,xml]
|
||||
----
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-sidecar</artifactId>
|
||||
</dependency>
|
||||
----
|
||||
* 写配置:
|
||||
+
|
||||
[source,yaml]
|
||||
----
|
||||
server:
|
||||
port: 8070
|
||||
spring:
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: localhost:8848
|
||||
gateway:
|
||||
discovery:
|
||||
locator:
|
||||
enabled: true
|
||||
application:
|
||||
name: node-service
|
||||
sidecar:
|
||||
# 异构微服务的IP
|
||||
ip: 127.0.0.1
|
||||
# 异构微服务的端口
|
||||
port: 8060
|
||||
# 异构微服务的健康检查URL
|
||||
health-check-url: http://localhost:8060/health.json
|
||||
management:
|
||||
endpoint:
|
||||
health:
|
||||
show-details: always
|
||||
----
|
||||
+
|
||||
配置比较简单,就是把Alibaba Sidecar注册到Nacos上,然后添加了几行Alibaba Sidecar的配置。
|
||||
|
||||
==== 异构微服务
|
||||
|
||||
我准备了一个NodeJS编写的简单微服务。
|
||||
|
||||
[source,javascript]
|
||||
----
|
||||
var http = require('http');
|
||||
var url = require("url");
|
||||
var path = require('path');
|
||||
|
||||
// 创建server
|
||||
var server = http.createServer(function(req, res) {
|
||||
// 获得请求的路径
|
||||
var pathname = url.parse(req.url).pathname;
|
||||
res.writeHead(200, { 'Content-Type' : 'application/json; charset=utf-8' });
|
||||
// 访问http://localhost:8060/,将会返回{"index":"欢迎来到首页"}
|
||||
if (pathname === '/') {
|
||||
res.end(JSON.stringify({ "index" : "欢迎来到首页" }));
|
||||
}
|
||||
// 访问http://localhost:8060/health,将会返回{"status":"UP"}
|
||||
else if (pathname === '/health.json') {
|
||||
res.end(JSON.stringify({ "status" : "UP" }));
|
||||
}
|
||||
// 其他情况返回404
|
||||
else {
|
||||
res.end("404");
|
||||
}
|
||||
});
|
||||
// 创建监听,并打印日志
|
||||
server.listen(8060, function() {
|
||||
console.log('listening on localhost:8060');
|
||||
});
|
||||
----
|
||||
|
||||
==== 测试
|
||||
|
||||
===== 测试1:Spring Cloud微服务完美调用异构微服务
|
||||
|
||||
为你的Spring Cloud微服务整合Ribbon,然后构建 `http://node-service/\\**`,就可以请求到异构微服务的 `/**` 了。
|
||||
|
||||
示例:
|
||||
|
||||
Ribbon请求 `http://node-service/` 会请求到 `http://localhost:8060/`,以此类推。
|
||||
|
||||
至于断路器,正常为你的Spring Cloud微服务整合Sentinel或者Hystirx、Resilience4J即可 。
|
||||
|
||||
===== 测试2:异构微服务完美调用Spring Cloud微服务
|
||||
|
||||
由于Alibaba Sidecar基于Spring Cloud Gateway,而网关自带转发能力。
|
||||
|
||||
示例:
|
||||
|
||||
如果你有一个Spring Cloud微服务叫做 `spring-cloud-microservice`,那么NodeJS应用只需构建 `http://localhost:8070/spring-cloud-microservice/\\**` ,Alibaba Sidecar就会把请求转发到 `spring-cloud-microservice` 的 `/**` 。
|
||||
|
||||
而Spring Cloud Gateway是整合了Ribbon的,所以实现了负载均衡;Spring Cloud Gateway还可以整合Sentinel或者Hystirx、Resilience4J,所以也带有了断路器。
|
||||
|
||||
=== Alibaba Sidecar优缺点分析
|
||||
|
||||
Alibaba Sidecar的设计和Sidecar基本一致,优缺点和Sidecar的优缺点也是一样的。
|
||||
|
||||
优点:
|
||||
|
||||
* 接入简单,几行代码就可以将异构微服务整合到Spring Cloud生态
|
||||
* 不侵入原代码
|
||||
|
||||
缺点:
|
||||
|
||||
* 每接入一个异构微服务实例,都需要额外部署一个Alibaba Sidecar实例,增加了部署成本(虽然这个成本在Kubernetes环境中几乎可以忽略不计(只需将Alibaba Sidecar实例和异构微服务作为一个Pod部署即可));
|
||||
* 异构微服务调用Spring Cloud微服务时,本质是把Alibaba Sidecar当网关在使用,经过了一层转发,性能有一定下降。
|
@@ -31,3 +31,6 @@ include::schedulerx.adoc[]
|
||||
|
||||
include::sms.adoc[]
|
||||
|
||||
include::sidecar.adoc[]
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user