Skip to content

Commit

Permalink
Fix broken links & Add link checker (apache#1339)
Browse files Browse the repository at this point in the history
* add lint

* add on

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update time

* add ignore

* update

* update limit

* update

* update

* update

* update

* update link

* update link

* update workflows

* pretty

* concurrency

* limit

* switch to 8

* switch to 12

* update workflows

* remove concurrency

* ignore new

* lint self

* fix link

* add ignore

* pack lint

* rewrite base

* temp ignore mesh

* add imgs

* add imgs

* add imgs

* add yuque ignore
  • Loading branch information
AlbumenJ authored Aug 6, 2022
1 parent e5c3408 commit dbbf5df
Show file tree
Hide file tree
Showing 316 changed files with 663 additions and 687 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/link_check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Link Check

on: [push, pull_request, workflow_dispatch]

jobs:
build_and_deploy_job:
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: Setup Docsy
run: git submodule update --init --recursive && sudo npm install -D --save autoprefixer && sudo npm install -D --save postcss-cli
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: true
- name: Build
env:
HUGO_ENV: production
run: hugo --minify --baseURL /
- name: Setup Html Test
run: curl https://htmltest.wjdp.uk | bash
- name: Lint Self
run: ./bin/htmltest -s
- name: Lint External
run: ./bin/htmltest
- name: Print lint failed list if failure
if: failure()
run: cat tmp/.htmltest/htmltest.log | grep -v "hitting ---"
- name: Pack lint result if failure
if: failure()
run: 7z a ${{ github.workspace }}/htmltest.zip tmp/.htmltest/* -r
- name: Upload lint result failure
if: failure()
uses: actions/upload-artifact@v2
with:
name: "htmltest.zip"
path: htmltest.zip
2 changes: 1 addition & 1 deletion .htaccess
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

# special redirection for examples & handbook
RewriteCond "%{HTTP:Accept-Language}" ^zh [NC]
RewriteRule ^/?faq/?([\w\-/]+)?$ "/zh/docs3-building/java-sdk/faq/$1" [L,R=302]
RewriteRule ^/?faq/?([\w\-/]+)?$ "/zh/docs3-v2/java-sdk/faq/$1" [L,R=302]

RewriteRule ^/?faq/?([\w\-/]+)?$ "/en/docs/java-sdk/faq/$1" [L,R=302]

Expand Down
27 changes: 27 additions & 0 deletions .htmltest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
DirectoryPath: public
IgnoreAltMissing: true
IgnoreInternalEmptyHash: true
IgnoreDirectoryMissingTrailingSlash: true
ExternalTimeout: 15
LogLevel: 1
IgnoreURLs: [
# starter not available => temp ignore
"http://start.dubbo.io",
# mesh
"https://github.com/apache/dubbo-go-samples/tree/master/route/meshroute",
# edit page => always ignore
"https://github.com/apache/dubbo-website/edit/master/content/.*",
"https://github.com/apache/dubbo-website/new/master/content/.*",
# docs external link might temporally unavailable => always ignore
"http://javatar.iteye.com/.*",
"https://www.baeldung.com/bdd-mockito",
"https://docs.github.com/.*",
"https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/troubleshooting-dubbo-with-arthas.pdf",
"https://apachecon.dukecon.org/acna/2018/#/scheduledEvent/b8db9dc580d85853f",
"https://www.yuque.com/docs/share/eff9c51f-a7f4-47d6-87ff-11a2152bdffe?",
"https://www.yuque.com/docs/share/c698bd6e-e4d6-47db-bc1c-c757cc9b4f3e?",
"https://www.yuque.com/docs/share/c132d5db-0dcb-487f-8833-7c7732964bd4?#",
"https://www.yuque.com/docs/share/f4e72670-74ab-45b9-bc0c-4b42249ed953?#",
"https://www.oschina.net/question/3820517_2306822",
"https://www.webjars.org/documentation#servlet3",
"https://developer.aliyun.com/article/"]
10 changes: 5 additions & 5 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -162,11 +162,11 @@ name = "Dubbo mailing list archive"
url = "https://lists.apache.org/[email protected]"
icon = "fa fa-envelope"
desc = "Discussion and help from your fellow users"
[[params.links.user]]
name = "Twitter"
url = "https://twitter.com/ApacheDubbo"
icon = "fab fa-twitter"
desc = "Follow us on Twitter to get the latest news!"
#[[params.links.user]]
#name = "Bilibili"
#url = "https://space.bilibili.com/1395485052"
#icon = "fa-brands fa-bilibili"
#desc = "Follow us on Bilibili to get the latest news!"
#[[params.links.user]]
# name = "Stack Overflow"
# url = "https://example.org/stack"
Expand Down
10 changes: 5 additions & 5 deletions content/en/blog/news/dubbo-101.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ The basic concepts of current framework of distributed service is similar to the
5. Running container – Initialize and load the provider and manage the lifecycle of running.


![dubbo-architecture](../../img/blog/dubbo-architecture.png)
![dubbo-architecture](/imgs/blog/dubbo-architecture.png)



Expand Down Expand Up @@ -269,7 +269,7 @@ hi, dubbo

Dubbo also provides a public platform that can create a Dubbo application quickly based on Spring Boot. Visit http://start.dubbo.io and follow the figure below to create an example project:

![dubbo initializr](../../img/blog/dubbo-initializr.png)
![dubbo initializr](/imgs/blog/dubbo-initializr.png)

**Notes**

Expand Down Expand Up @@ -385,6 +385,6 @@ Eventually, we give an outline of how to create a Dubbo application quickly base
---

1. [Getting Started Using JavaTM RMI](https://docs.oracle.com/javase/6/docs/technotes/guides/rmi/hello/hello-world.html)
2. [Explicit target](http://dubbo.apache.org/docs/v2.7/user/examples/explicit-target/)
3. [Multicast Registry](http://dubbo.apache.org/docs/v2.7/user/references/registry/multicast/)
4. [Online QOS command](http://dubbo.apache.org/docs/v2.7/user/references/qos/)
2. [Explicit target](/en/docs/v2.7/user/examples/explicit-target/)
3. [Multicast Registry](/en/docs/v2.7/user/references/registry/multicast/)
4. [Online QOS command](/en/docs/v2.7/user/references/qos/)
2 changes: 1 addition & 1 deletion content/en/blog/news/dubbo-async-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: >
---

## Preface
It is suggested to make an understanding of the thread phase involved in the process of Dubbo first, please refer to [Implementation background and practice of Dubbo client asynchronous interface](http://dubbo.apache.org/en-us/blog/dubboAsync_client.html) for details.
It is suggested to make an understanding of the thread phase involved in the process of Dubbo first, please refer to [Implementation background and practice of Dubbo client asynchronous interface](/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/) for details.

## Implementation background
It is necessary to introduce the server-side thread strategy in more detail to deepen the user's judgment basis for selecting server-side asynchrony. It is also necessary to introduce coroutines, the "secret weapon" often used in server-side asynchrony.
Expand Down
2 changes: 1 addition & 1 deletion content/en/blog/news/dubbo-fescar.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ sh seata-server.sh -p 8091 -h 127.0.0.1 -m file
### Step 5: Run example

- Start AccountService ([DubboAccountServiceStarter](https://github.com/seata/seata-samples/blob/master/dubbo/src/main/java/io/seata/samples/dubbo/starter/DubboAccountServiceStarter.java)).
- Start StorageService ([DubboStorageServiceStarter](https://github.com/seata/seata-samples/blob/master/dubbo/src/main/java/io/seata/samples/dubbo/starter/DubboStorageServiceStarter.java)).
- Start StockService ([DubboStockServiceStarter](https://github.com/seata/seata-samples/blob/master/dubbo/src/main/java/io/seata/samples/dubbo/starter/DubboStockServiceStarter.java)).
- Start OrderService ([DubboOrderServiceStarter](https://github.com/seata/seata-samples/blob/master/dubbo/src/main/java/io/seata/samples/dubbo/starter/DubboOrderServiceStarter.java)).
- Run BusinessService for test ([DubboBusinessTester](https://github.com/seata/seata-samples/blob/master/dubbo/src/main/java/io/seata/samples/dubbo/starter/DubboBusinessTester.java)).

Expand Down
2 changes: 1 addition & 1 deletion content/en/blog/news/dubbo-generic-invoke.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,4 +185,4 @@ So far, a simple service Mock platform has been successfully launched!
## Others

- The generic invoke and generic interface implementations introduced in this article are all based on the native Dubbo protocol. Prior to version 2.6.2, other protocols such as http/hessian don't support generic invoke. Version 2.6.3 will support the generic invoke of these two protocols.
- The relevant sample codes mentioned in this article can be found in dubbo-samples: https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-generic
- The relevant sample codes mentioned in this article can be found in dubbo-samples: https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-generic
6 changes: 1 addition & 5 deletions content/en/blog/news/dubbo-graalvm-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ GraalVM we use here is based on jdk version 1.8.

## Get Started

For user's convenience, we provide the following demo in the [apache:2.7-native_image](https://github.com/apache/dubbo/tree/2.7-native_image) branch. In module dubbo-demo-native, dubbo's provider and consumer demos are given:
For user's convenience, we provide the following demo in the [apache dubbo](https://github.com/apache/dubbo/) branch. In module dubbo-demo-native, dubbo's provider and consumer demos are given:

![](/imgs/blog/dubbo-graalvm-support/demo_path.png)

Expand Down Expand Up @@ -329,7 +329,3 @@ public <T> T getProxy(Invoker<T> invoker, boolean generic) throws RpcException {
The service here has multiple interfaces which have to be in order when requesting proxy. Set does not fulfill the requirement so we use ArrayList instead.

Major modifications to dubbo source code are listed above.



Link to the branch: https://github.com/apache/dubbo/tree/2.7-native_image
14 changes: 7 additions & 7 deletions content/en/blog/news/dubbo-k8s.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ Here we only discuss the situation that the Dubbo service in the cluster is acce

1. DNS: The default Kubernetes service is based on the DNS plugin (The latest version of the recommendation is coreDNS), one proposal on Dubbo is about this.  since HSF/Dubbo has always highlighted its soft-load address discovery capability, it ignores Static's strategy insteadily, my understanding is that as a service discovery mechanism, the static resolution mechanism is one of the simplest and most needed to support mechanism, you can also refer to Envoy's point of views. While at the same time, ant's SOFA has always supported this static strategy, it can provides an explanation for an engineering fragment of the SOFA project. There are two advantages to doing this. 1) When the soft load center crash is unavailable and the address list cannot be obtained, there is a mechanism to Failover to this policy to handle certain requests. 2) Under LDC/unitization, the ant's load center cluster is deployed in the equipment room/area. First, the LDC of the soft load center is guaranteed to be stable and controllable. When the unit needs the request center, the address of the VIP can come in handy.

![img](https://img.alicdn.com/tfs/TB1Kj1ktpkoBKNjSZFEXXbrEVXa-985-213.png)
![img](/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1Kj1ktpkoBKNjSZFEXXbrEVXa-985-213.png)

2. API:DNS relies on the DNS plugin, which will generate additional operation, so consider directly obtaining the endpoint through the client of Kubernetes. In fact, by accessing the API server interface of Kubernetes, you can directly obtain the list of endpoints behind a certain servie, and can also monitor the changes in its address list. Thereby implementing the soft load discovery strategy recommended by Dubbo/HSF. Refer to the code for details:

Expand All @@ -99,27 +99,27 @@ The above two thoughts need to consider the following two points:
The following is a demo deployment through Kubernetes service in Alibaba Cloud's Container Registry and EDAS. Visit Alibaba Cloud -》Container Registry.

1. Create repo and bind the github codebase. As shown below.
![img](https://img.alicdn.com/tfs/TB1m.tEtrorBKNjSZFjXXc_SpXa-1892-870.png)
![img](/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1m.tEtrorBKNjSZFjXXc_SpXa-1892-870.png)

2. Click Manage enter the repository details page. Click Build in images service panel, construct the demo into image and publish it to the specified repository. As shown below.
![img](https://img.alicdn.com/tfs/TB1oYqvtcIrBKNjSZK9XXagoVXa-1872-888.png)
![img](/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1oYqvtcIrBKNjSZK9XXagoVXa-1872-888.png)



3. Switch to Enterprise Distributed Application Services (EDAS) products panel, visit Resource Management -> Clusters. Create Kubernetes cluster and bind ECS. As shown below.
![img](https://img.alicdn.com/tfs/TB1b1p2trZnBKNjSZFKXXcGOVXa-1858-833.png)
![img](/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1b1p2trZnBKNjSZFKXXcGOVXa-1858-833.png)



4. Application Management -> Create application, type Kubernetes application and specify the image in the container registry . As shown below.
![img](https://img.alicdn.com/tfs/TB1_YywtDCWBKNjSZFtXXaC3FXa-1737-588.png)
![img](/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1_YywtDCWBKNjSZFtXXaC3FXa-1737-588.png)

![](https://img.alicdn.com/tfs/TB18uzTtdcnBKNjSZR0XXcFqFXa-1820-861.png)
![](/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB18uzTtdcnBKNjSZR0XXcFqFXa-1820-861.png)



5. After creation , then deploy applications. As shown below.
![](https://img.alicdn.com/tfs/TB1fEpEtrorBKNjSZFjXXc_SpXa-1846-783.png)
![](/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1fEpEtrorBKNjSZFjXXc_SpXa-1846-783.png)

- The supplementary application name cannot have uppercase letters, all lowercase, otherwise there is a problem of deployment failure.

Expand Down
2 changes: 1 addition & 1 deletion content/en/blog/news/dubbo-new-async.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Implementing the full asynchronous programming based on Dubbo, which is a new fe

## Asynchronous mode before version 2.6.x

Dubbo Provides some asynchronous programming capabilities in 2.6.x and earlier versions, including [Asynchronous Call](http://dubbo.apache.org/zh-cn/docs/user/demos/async-call.html), [Parameter Callback](http://dubbo.apache.org/zh-cn/docs/user/demos/callback-parameter.html) and [Event Notification](http://dubbo.apache.org/zh-cn/docs/user/demos/events-notify.html) on Consumer side. There are some brief introductions to the usage and Demo in the above document links.
Dubbo Provides some asynchronous programming capabilities in 2.6.x and earlier versions, including [Asynchronous Call](/en/docs/v2.7/user/examples/async-call/), [Parameter Callback](/en/docs/v2.7/user/examples/callback-parameter/) and [Event Notification](/en/docs/v2.7/user/examples/events-notify/) on Consumer side. There are some brief introductions to the usage and Demo in the above document links.

But the current asynchronous method has the following problems:

Expand Down
2 changes: 1 addition & 1 deletion content/en/blog/news/dubbo-zk.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ world
## Using Zookeeper in Dubbo
Zookeeper is used for service registration discovery and configuration management in Dubbo, and the structure of data in Zookeeper is shown in the following figure:

![dubbo-in-zk](../../img/blog/dubbo-in-zk.jpg)
![dubbo-in-zk](/imgs/blog/dubbo-in-zk.jpg)

First, all data related to Dubbo is organized under the root node of `/dubbo`.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: In this article, we introduced how to use Apache APISIX to implemen

## Background

[Apache Dubbo](https://dubbo.apache.org/en/) is a MicroService development framework open sourced by Alibaba and donated to Apache, which provides two key capabilities of RPC communication and microservice governance. It has not only been validated by Ali's massive traffic in e-commerce scenario, but also been widely implemented in domestic technology companies.
[Apache Dubbo](/en/) is a MicroService development framework open sourced by Alibaba and donated to Apache, which provides two key capabilities of RPC communication and microservice governance. It has not only been validated by Ali's massive traffic in e-commerce scenario, but also been widely implemented in domestic technology companies.

In practical application scenarios, Apache Dubbo is generally used as the implementation framework for RPC calls between back-end systems, and when HTTP interfaces need to be provided to the front-end, the Dubbo Service is packaged as an HTTP interface through a "glue layer" and then delivered to the front-end system.

Expand Down
4 changes: 2 additions & 2 deletions content/en/blog/news/how-to-proxy-dubbo-in-apache-shenyu.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ In May 2021, `ShenYu` was donated to the `Apache` Software Foundation, and the A

## 2. Quick Start with Dubbo

This section describes how to connect the `Dubbo` service to the `Shenyu` gateway. You can find the [sample code] for this section directly under the project (https://github.com/apache/incubator-shenyu/tree/master/shenyu-examples/shenyu -examples-dubbo/shenyu-examples-apache-dubbo-service).
This section describes how to connect the `Dubbo` service to the `Shenyu` gateway. You can find the [sample code] for this section directly under the project (https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo -examples-dubbo/shenyu-examples-apache-dubbo-service).

### 2.1 Start shenyu-admin

Expand Down Expand Up @@ -79,7 +79,7 @@ Make sure the gateway has introduced the relevant dependencies before starting.

### 2.3 Start shenyu-examples-dubbo

Take the example provided on the official website [shenyu-examples-dubbo](https://github.com/apache/incubator-shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-apache-dubbo-service). Suppose the `dubbo` service is defined as follows.
Take the example provided on the official website [shenyu-examples-dubbo](https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo). Suppose the `dubbo` service is defined as follows.

```xml
<beans /* ...... * />
Expand Down
2 changes: 1 addition & 1 deletion content/en/blog/news/pinpoint.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ View additional details on the application such as CPU usage, Memory/Garbage Col

### Quickstart Pinpoint

[Quick start](http://naver.github.io/pinpoint/quickstart.html)(No neet to start TestApp)
[Quick start](https://pinpoint-apm.github.io/pinpoint/quickstart.html)(No neet to start TestApp)

### Dubbo demo

Expand Down
Loading

0 comments on commit dbbf5df

Please sign in to comment.