提交 bbaf17db 编写于 作者: X xiongchun

根据「盘古框架文档(中文)排版指南」重构已有文档

上级 f6222b46
......@@ -51,7 +51,7 @@ import TabItem from '@theme/TabItem';
## 本地配置
> 为便于理解,本文基于本地配置的方式编写。若改为标准的Nacos配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center)章节。
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center) 章节。
<Tabs>
<TabItem value="application" label="application.properties">
......
......@@ -62,12 +62,12 @@ import TabItem from '@theme/TabItem';
</Tabs>
:::caution
盘古框架微服务交互基于Dubbo提供的面向接口代理的高性能RPC调用能力。因此,对于内部服务模块之间的交互调用,不管是服务的提供者还是服务消费者,都需要依赖API服务接口包。当然,对于网关而言,使用的是泛化调用,也就是说当网关模块作为微服务消费者的时候是不需要依赖服务提供者的接口包的。
盘古框架微服务交互基于 Dubbo 提供的面向接口代理的高性能 RPC 调用能力。因此,对于内部服务模块之间的交互调用,不管是服务的提供者还是服务消费者,都需要依赖 API 服务接口包。当然,对于网关而言,使用的是泛化调用,也就是说当网关模块作为微服务消费者的时候是不需要依赖服务提供者的接口包的。
:::
### 本地配置
> 为便于理解,本文基于本地配置的方式编写。若改为标准的Nacos配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center)章节。
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center) 章节。
<Tabs>
<TabItem value="application" label="application.properties">
......@@ -126,19 +126,19 @@ public class DubboProviderApplication {
}
```
通过`@EnableDubbo`注解开启Dubbo支持。由于Dubbo的使用netty作为底层网络通信,决定了盘古微服务应用启动和提供服务并不需要依赖Servlet容器。
通过 `@EnableDubbo` 注解开启 Dubbo 支持。由于 Dubbo 的使用 netty 作为底层网络通信,决定了盘古微服务应用启动和提供服务并不需要依赖 Servlet 容器。
```jsx title="启动参数设置(如下示例)"
-Dnacos.server-addr=127.0.0.1:8848 -Dnacos.namespace=pangu-dev
```
### 服务注册
成功启动应用会自动像Nacos服务注册中心注册服务。登录Nacos控制台即可在【服务管理->服务列表】页查看效果。如下图所示。
成功启动应用会自动像 Nacos 服务注册中心注册服务。登录 Nacos 控制台即可在【服务管理->服务列表】页查看效果。如下图所示。
![盘古开发Dubbo服务](/resources/doc/1-pangu-framework-nacos-service-regist.png)
## 服务消费者
上述服务注册到Nacos服务中心以后就可以对外提供服务了。可以在任何一个SpringBean组件中(一般是Service、Manager等),引入服务接口后就像本地接口调用一样调用远程服务。Dubbo将提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。服务消费端所需要的依赖和提供端是一样的,这里不再赘述。仅给出消费相关代码。如下所示。
上述服务注册到 Nacos 服务中心以后就可以对外提供服务了。可以在任何一个 SpringBean 组件中(一般是 Service、Manager 等),引入服务接口后就像本地接口调用一样调用远程服务。Dubbo 将提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。服务消费端所需要的依赖和提供端是一样的,这里不再赘述。仅给出消费相关代码。如下所示。
```jsx {3,8} title="服务消费端,调用远程服务代码 UserAdminManager.java"
@Component
......
......@@ -62,12 +62,12 @@ import TabItem from '@theme/TabItem';
</Tabs>
:::tip
基于ShenYu的网关开发模式不需要引入服务接口依赖包,网关会根据服务接口的元数据信息,泛化调用Dubbo服务接口。服务接口的元数据信息则根据Dubbo服务应用中的配置自动上传到ShenYu网关管理系统。此内容在下文会继续讲解。
基于 ShenYu 的网关开发模式不需要引入服务接口依赖包,网关会根据服务接口的元数据信息,泛化调用 Dubbo 服务接口。服务接口的元数据信息则根据 Dubbo 服务应用中的配置自动上传到 ShenYu 网关管理系统。此内容在下文会继续讲解。
:::
### 本地配置
> 为便于理解,本文基于本地配置的方式编写。若改为标准的Nacos配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center)章节。
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center) 章节。
<Tabs>
<TabItem value="application" label="application.yaml">
......@@ -143,23 +143,23 @@ logging:
##### 关键配置项说明
配置项 | 配置说明
--- | ---
shenyu.sync.websocket.urls | 表示网关和ShenYu Admin之间使用Websocket的方式进行数据同步,这里是配置ShenYu Admin的提供的Websocket数据同步服务的地址(支持集群,逗号分割)。
shenyu.sync.websocket.urls | 表示网关和 ShenYu Admin 之间使用 Websocket 的方式进行数据同步,这里是配置 ShenYu Admin 的提供的 Websocket 数据同步服务的地址(支持集群,逗号分割)。
:::caution
上表中提到到ShenYu Admin是ShenYu网关框架的配置&元数据管理后台。这里包含了网关模块自己的配置信息也包含了后台服务接口原数据信息,这理的配置信息和元数据信息需要和网关模块同步。ShenYu支持多种数据同步方案,Websocket只是盘古开发选用的一种缺省方案。关于网关的更多信息,请参阅:[使用指南->网关系统](/docs/advanced-guide/gateway)章节。
上表中提到到 ShenYu Admin 是 ShenYu 网关框架的配置 & 元数据管理后台。这里包含了网关模块自己的配置信息也包含了后台服务接口原数据信息,这理的配置信息和元数据信息需要和网关模块同步。ShenYu 支持多种数据同步方案,Websocket 只是盘古开发选用的一种缺省方案。关于网关的更多信息,请参阅:[使用指南->网关系统](/docs/advanced-guide/gateway) 章节。
:::
### 调用微服务接口
基于ShenYu的网关开发模式既不需要引入服务接口JAR,也不需要编写具体的调用代码。完全由网关根据服务接口元数据进行Dubbo泛化调用。
基于 ShenYu 的网关开发模式既不需要引入服务接口 JAR,也不需要编写具体的调用代码。完全由网关根据服务接口元数据进行 Dubbo 泛化调用。
:::danger 那么问题来了,网关是如何知道Dubbo服务接口元数据的呢?
- 通过ShenYu Admin后台系统,『基础配置->元数据管理』菜单,手工新增每一个接口的元数据,然后将数据自动同步到网关模块。(不建议,量大的话太繁琐)
- 对Dubbo服务提供者增加ShenYu Client支持,通过在接口方法上使用注解`@ShenyuDubboClient`来自动采集上传接口元数据到ShenYu Admin,然后将数据自动同步到网关模块。(盘古开发建议使用的标准姿势)如何对Dubbo服务提供者增加ShenYu Client支持请参阅下文的『[Dubbo服务端(网关采集接口元数据)](#dubbo服务端网关采集接口元数据)』章节。
:::danger 那么问题来了,网关是如何知道 Dubbo 服务接口元数据的呢?
- 通过 ShenYu Admin 后台系统,『基础配置->元数据管理』菜单,手工新增每一个接口的元数据,然后将数据自动同步到网关模块。(不建议,量大的话太繁琐)
- 对Dubbo服务提供者增加 ShenYu Client 支持,通过在接口方法上使用注解 `@ShenyuDubboClient` 来自动采集上传接口元数据到 ShenYu Admin,然后将数据自动同步到网关模块。(盘古开发建议使用的标准姿势)如何对 Dubbo 服务提供者增加 ShenYu Client 支持请参阅下文的『[ Dubbo 服务端(网关采集接口元数据)](#dubbo服务端网关采集接口元数据)』章节。
:::
:::info 还有一个问题,网关要实现泛化调用是需要dubbo服务的注册中心的?
- 没错。通过ShenYu Admin后台系统『基础配置->插件管理』菜单,启用`dubbo插件`并填入注册中心地址。比如,我测试用的注册中心地址:`nacos://169.188.88.140:1688?namespace=pangu-dev`。如下图所示。
- 没错。通过 ShenYu Admin 后台系统『基础配置->插件管理』菜单,启用 `dubbo插件` 并填入注册中心地址。比如,我测试用的注册中心地址:`nacos://169.188.88.140:1688?namespace=pangu-dev`。如下图所示。
:::
![盘古框架网关](/resources/doc/4-pangu-framework-shenyu-dubbo.png)
......@@ -176,9 +176,9 @@ public class WebApiGatewayApplication {
## Dubbo服务端(网关采集接口元数据)
网关需要对其代理的后端Dubbo服务进行泛化调用,就必须知道服务接口元数据。下文就将对一个普通Dubbo服务应用增加ShenYu Client支持完成自动采集服务接口元数据功能。
网关需要对其代理的后端 Dubbo 服务进行泛化调用,就必须知道服务接口元数据。下文就将对一个普通 Dubbo 服务应用增加 ShenYu Client 支持完成自动采集服务接口元数据功能。
### 安装ShenYu Client依赖包
### 安装 ShenYu Client 依赖包
```jsx
<dependency>
<groupId>org.apache.shenyu</groupId>
......@@ -195,12 +195,12 @@ shenyu.client.props.contextPath=/dubbo
配置项 | 配置说明
--- | ---
shenyu.client.register-type | 服务接口元数据采集方式,可选http直连模式或配置中心zookeeper、etcd、consul和nacos。盘古开发采集接口元数据缺省选择http直接ShenYu Admin的方式。
shenyu.client.server-lists | ShenYu Admin地址或配置中心地址。集群时多个地址用逗号分开。
shenyu.client.register-type | 服务接口元数据采集方式,可选 http 直连模式或配置中心 zookeeper、etcd、consul 和 nacos。盘古开发采集接口元数据缺省选择 http 直接 ShenYu Admin 的方式。
shenyu.client.server-lists | ShenYu Admin 地址或配置中心地址。集群时多个地址用逗号分开。
shenyu.client.props.contextPath | 本服务在网关中的路由前缀,可自定义按需配置
### 自动上报服务接口元数据
Dubbo服务实现类的方法上使用注解`@ShenyuDubboClient`标记,表示该接口方法元数据自动上传到ShenYu Admin。如下代码所示。
Dubbo 服务实现类的方法上使用注解 `@ShenyuDubboClient` 标记,表示该接口方法元数据自动上传到 ShenYu Admin。如下代码所示。
```jsx {5,12}
@Service(version = "1.0.0", group = "pangu-examples-dubbo-gateway-service")
......@@ -223,22 +223,22 @@ public class UserServiceImpl implements UserService {
```
**重启服务提供者:**
- 进入ShenYu Admin后台系统的『基础配置->元数据管理』菜单,会看到自动上报的服务元数据信息。如下图所示。
- 进入 ShenYu Admin 后台系统的『基础配置->元数据管理』菜单,会看到自动上报的服务元数据信息。如下图所示。
![盘古开发网关](/resources/doc/2-pangu-framework-shenyu-metadata.png)
- 进入ShenYu Admin后台系统的『插件列表->proxy->dubbo』菜单,会看到自动注册的选择器和规则信息。如下图所示。
- 进入 ShenYu Admin 后台系统的『插件列表-> proxy -> dubbo』菜单,会看到自动注册的选择器和规则信息。如下图所示。
![盘古开发网关](/resources/doc/3-pangu-framework-shenyu-plugin.png)
## 完整请求URL及参数说明
至此,就可以通过http的方式来请求我们的的dubbo服务了。
至此,就可以通过 http 的方式来请求我们的的 dubbo 服务了。
### 请求URL
:::info 如何确定dubbo服务对应的请求url地址呢?
由网关模块配置文件可知网关应用端口是`9090`,dubbo服务的配置项shenyu.client.props.contextPath为`/dubbo`,我们的dubbo方法通过@ShenyuDubboClient标记的path属性为:`/findUserEntity`。综上,dubbo服务UserService#findUserEntity的完整请求地址为:http://localhost:9090/dubbo/findUserEntity
:::info 如何确定 dubbo 服务对应的请求 url 地址呢?
由网关模块配置文件可知网关应用端口是 `9090`,dubbo 服务的配置项 shenyu.client.props.contextPath 为 `/dubbo`,我们的 dubbo 方法通过 @ShenyuDubboClient 标记的 path 属性为:`/findUserEntity`。综上,dubbo 服务 UserService#findUserEntity 的完整请求地址为:http://localhost:9090/dubbo/findUserEntity。
:::
### 参数说明
通过http协议,post方式访问网关。在http body中传入json格式的参数。
通过 http 协议,post 方式访问网关。在 http body 中传入 json 格式的参数。
### 请求示例
```jsx title="CURL脚本"
......@@ -261,7 +261,7 @@ curl --location --request POST 'http://127.0.0.1:9090/dubbo/findUserEntity' \
## 本文相关范例源码
- [pangu-examples-dubbo-api](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-api):服务接口包
- [pangu-examples-dubbo-gateway-service](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-gateway-service):服务提供者(支持网关)
- [pangu-examples-webapi-gateway-based](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-webapi-gateway-based):服务消费者(基于ShenYu的网关模块)
- [pangu-examples-webapi-gateway-based](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-webapi-gateway-based):服务消费者(基于 ShenYu 的网关模块)
## 下一步
继续阅读其它章节获取你想要的答案或通过我们的 [开发者社区](/docs/community) 寻求更多帮助。
\ No newline at end of file
......@@ -70,12 +70,12 @@ import TabItem from '@theme/TabItem';
</Tabs>
:::tip
基于SpringMVC的网关开发模式需要引入服务接口依赖包。
基于 SpringMVC 的网关开发模式需要引入服务接口依赖包。
:::
## 本地配置
> 为便于理解,本文基于本地配置的方式编写。若改为标准的Nacos配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center)章节。
> 为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:[配置中心](/docs/advanced-guide/nacos-config-center) 章节。
<Tabs>
<TabItem value="application" label="application.properties">
......@@ -103,8 +103,8 @@ logging.level.com.gitee.pulanos.pangu=INFO
</Tabs>
## 调用微服务接口
可以在任何一个SpringBean组件中(针对网关模块而言一般是Controller中),引入服务接口后就像本地接口调用一样调用远程服务。Dubbo将提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。
如下所示,通过Cotroller调用远程服务接口,实现将微服务接口发布为WebAPI。
可以在任何一个 SpringBean 组件中(针对网关模块而言一般是 Controller 中),引入服务接口后就像本地接口调用一样调用远程服务。Dubbo 将提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。
如下所示,通过 Cotroller 调用远程服务接口,实现将微服务接口发布为 WebAPI。
```jsx {2,13} title="DemoController.java"
// 注入服务接口
......@@ -124,7 +124,7 @@ public Result<List<UserOut>> case1() {
}
```
:::caution
这种通过SpringMVC发布API的模式并非盘古开发的标准姿势,只是提供这么一种开发模式选项。
这种通过 SpringMVC 发布 API 的模式并非盘古开发的标准姿势,只是提供这么一种开发模式选项。
:::
## 启动入口
......@@ -139,13 +139,13 @@ public class DubboProviderApplication {
}
```
## 完整请求URL及参数说明
至此,就可以通过http的方式来请求我们的的dubbo服务了。此种开发模式完全基于SpringMVC,其请求地址和参数说明等信息本教程不再展开叙述。如有需要,请自行查阅SpringMVC请求和响应的相关教程即可。
## 完整请求 URL 及参数说明
至此,就可以通过 http 的方式来请求我们的的 dubbo 服务了。此种开发模式完全基于 SpringMVC,其请求地址和参数说明等信息本教程不再展开叙述。如有需要,请自行查阅 SpringMVC 请求和响应的相关教程即可。
## 本文相关范例源码
- [pangu-examples-dubbo-api](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-api):服务接口包
- [pangu-examples-dubbo-service](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-service):服务提供者
- [pangu-examples-dubbo-gateway-service](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-gateway-service):基于SpringMVC的网关模块(服务消费者)
- [pangu-examples-dubbo-gateway-service](https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-gateway-service):基于 SpringMVC 的网关模块(服务消费者)
## 下一步
继续阅读其它章节获取你想要的答案或通过我们的 [开发者社区](/docs/community) 寻求更多帮助。
\ No newline at end of file
......@@ -39,13 +39,13 @@ slug: /quick-start/how-to-make-architecture
| - | 单体分层架构 | 微服务分布式架构
--- | :-: | :-:
开发人员 < 3 | ✔ |
研发预算 < 100w | ✔ |
研发预算 < 100 w | ✔ |
用户数较小的管理类系统 | ✔ |
面向C端的(移动)互联网应用 | | ✔
多任务多小组协作 | | ✔
有专职运维人员 | | ✔
追求可维护性和扩展性 | | ✔
追求技术团队长期收益&增长 | | ✔
追求技术团队长期收益 & 增长 | | ✔
甲方企业自建的技术团队 | | ✔
项目外包性质的创业公司(乙方) | ✔ |
......
......@@ -15,7 +15,7 @@ import TabItem from '@theme/TabItem';
本文将介绍如何通过包依赖管理工具安装盘古框架。
> 请将版本号`latest.version.xxx`替换为当前最新版本号为:`5.0.8`。
> 请将版本号 `latest.version.xxx` 替换为当前最新版本号为:`5.0.8`。
## 依赖管理模块
盘古资源依赖声明管理模块。所有盘古引用都应该依赖这个模块。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册