最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot微服務(wù)注冊(cè)分布式Consul的詳細(xì)過(guò)程

 更新時(shí)間:2023年04月14日 11:03:37   作者:南宮乘風(fēng)  
這篇文章主要介紹了SpringBoot(微服務(wù))注冊(cè)分布式Consul,Spring Boot應(yīng)用可以通過(guò)向Consul注冊(cè)自身來(lái)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和治理,使得其他服務(wù)可以在Consul中發(fā)現(xiàn)并調(diào)用它,需要的朋友可以參考下

Consul是什么

Consul是一個(gè)基于HTTP的服務(wù)發(fā)現(xiàn)工具,用于配置和管理系統(tǒng)和服務(wù)之間的依賴關(guān)系。它提供了一個(gè)簡(jiǎn)單的方式來(lái)注冊(cè)、發(fā)現(xiàn)和配置服務(wù),并包括健康檢查、負(fù)載均衡和故障轉(zhuǎn)移等功能。

Consul是一種分布式系統(tǒng),用于在大型分布式系統(tǒng)中實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和配置共享。它使用Raft協(xié)議來(lái)實(shí)現(xiàn)強(qiáng)一致性,保證了在多個(gè)節(jié)點(diǎn)之間進(jìn)行的數(shù)據(jù)更新的原子性。

Consul客戶端可以將它們自己的服務(wù)信息注冊(cè)到Consul服務(wù)器。這樣,Consul服務(wù)器將自動(dòng)成為所有服務(wù)的服務(wù)目錄。此外,Consul還提供了一個(gè)健康檢查機(jī)制,以確保已注冊(cè)的服務(wù)仍然可以正常工作。

當(dāng)一個(gè)客戶端想要調(diào)用一個(gè)服務(wù)時(shí),它可以從Consul服務(wù)器獲取服務(wù)的網(wǎng)絡(luò)位置信息。然后,客戶端將使用此信息建立與服務(wù)的網(wǎng)絡(luò)連接。

Consul通過(guò)HTTP API公開(kāi)其服務(wù)發(fā)現(xiàn)和配置共享功能,這使得使用Consul與其他系統(tǒng)相當(dāng)容易,如Kubernetes等容器編排工具。

總之,Consul的分布式注冊(cè)原理是通過(guò)服務(wù)端和客戶端之間的交互來(lái)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和健康檢查??蛻舳藢⒎?wù)信息注冊(cè)到Consul服務(wù)器,然后從Consul服務(wù)器獲取服務(wù)信息并建立網(wǎng)絡(luò)連接。Consul使用Raft協(xié)議確保強(qiáng)一致性,并提供HTTP API進(jìn)行訪問(wèn)。

Consul原理

Consul采用的是集中式的注冊(cè)中心架構(gòu),其中包含一個(gè)服務(wù)發(fā)現(xiàn)組件和一個(gè)KV存儲(chǔ)組件。

服務(wù)發(fā)現(xiàn)組件:Consul中的服務(wù)發(fā)現(xiàn)是通過(guò)一組Agent和Server實(shí)現(xiàn)的。Agent是每個(gè)主機(jī)上運(yùn)行的代理,用于與服務(wù)交互并報(bào)告本地運(yùn)行狀況。Server是負(fù)責(zé)在Consul集群中運(yùn)行Raft算法的節(jié)點(diǎn),以實(shí)現(xiàn)高可用性。

當(dāng)服務(wù)啟動(dòng)時(shí),它會(huì)向本地的Consul Agent發(fā)送一個(gè)服務(wù)注冊(cè)請(qǐng)求,Agent會(huì)將服務(wù)的元數(shù)據(jù)信息(服務(wù)名、地址、端口等)注冊(cè)到Consul的KV存儲(chǔ)中。服務(wù)消費(fèi)者可以通過(guò)向Agent發(fā)送服務(wù)發(fā)現(xiàn)請(qǐng)求來(lái)獲取服務(wù)的地址和端口信息,然后向該地址發(fā)送請(qǐng)求以調(diào)用服務(wù)。

KV存儲(chǔ)組件:Consul中的KV存儲(chǔ)組件用于存儲(chǔ)鍵值對(duì)信息,可以用于存儲(chǔ)任何數(shù)據(jù)。在服務(wù)注冊(cè)和發(fā)現(xiàn)中,服務(wù)元數(shù)據(jù)信息就是存儲(chǔ)在KV存儲(chǔ)中的。

當(dāng)服務(wù)啟動(dòng)時(shí),它會(huì)將自己的元數(shù)據(jù)信息存儲(chǔ)到Consul的KV存儲(chǔ)中,同時(shí)也會(huì)定期發(fā)送心跳請(qǐng)求告訴Consul服務(wù)還在運(yùn)行。當(dāng)服務(wù)終止時(shí),它會(huì)發(fā)送一個(gè)注銷(xiāo)請(qǐng)求告訴Consul將服務(wù)從KV存儲(chǔ)中刪除。

服務(wù)消費(fèi)者可以從Consul的KV存儲(chǔ)中獲取服務(wù)的元數(shù)據(jù)信息,然后使用這些信息來(lái)調(diào)用服務(wù)。同時(shí),服務(wù)消費(fèi)者也可以監(jiān)聽(tīng)KV存儲(chǔ)中元數(shù)據(jù)信息的變化,當(dāng)服務(wù)的元數(shù)據(jù)信息發(fā)生變化時(shí),它會(huì)自動(dòng)更新本地緩存。

總體來(lái)說(shuō),Consul的服務(wù)注冊(cè)和發(fā)現(xiàn)過(guò)程如下:

  • 服務(wù)啟動(dòng)時(shí),將自己的元數(shù)據(jù)信息注冊(cè)到Consul的KV存儲(chǔ)中,同時(shí)向本地的Consul Agent發(fā)送心跳請(qǐng)求告訴Consul服務(wù)還在運(yùn)行。
  • 服務(wù)消費(fèi)者向Consul Agent發(fā)送服務(wù)發(fā)現(xiàn)請(qǐng)求,Agent從KV存儲(chǔ)中獲取服務(wù)的元數(shù)據(jù)信息并返回給服務(wù)消費(fèi)者。
  • 服務(wù)消費(fèi)者使用獲取到的服務(wù)元數(shù)據(jù)信息來(lái)調(diào)用服務(wù)。
  • 當(dāng)服務(wù)終止時(shí),它會(huì)發(fā)送一個(gè)注銷(xiāo)請(qǐng)求告訴Consul將服務(wù)從KV存儲(chǔ)中刪除。

啟動(dòng) Consul 集群

#啟動(dòng)第1個(gè)Server節(jié)點(diǎn),集群要求要有3個(gè)Server,將容器8500端口映射到主機(jī)8900端口,同時(shí)開(kāi)啟管理界面 
docker run -d --name=consul1 -p 8900:8500 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --bootstrap-expect=3 --client=0.0.0.0 -ui 
 
#啟動(dòng)第2個(gè)Server節(jié)點(diǎn),并加入集群 
docker run -d --name=consul2 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.0.2 
 
#啟動(dòng)第3個(gè)Server節(jié)點(diǎn),并加入集群 
docker run -d --name=consul3 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 172.17.0.2 
 
#啟動(dòng)第4個(gè)Client節(jié)點(diǎn),并加入集群 
docker run -d --name=consul4 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=false --client=0.0.0.0 --join 172.17.0.2 

第 1 個(gè)啟動(dòng)容器的 IP 一般是 172.17.0.2,后邊啟動(dòng)的幾個(gè)容器 IP 會(huì)排著來(lái):172.17.0.3、172.17.0.4、172.17.0.5。

這些 Consul 節(jié)點(diǎn)在 Docker 的容器內(nèi)是互通的,他們通過(guò)橋接的模式通信。但是如果主機(jī)要訪問(wèn)容器內(nèi)的網(wǎng)絡(luò),需要做端口映射。

在啟動(dòng)第一個(gè)容器時(shí),將 Consul 的 8500 端口映射到了主機(jī)的 8900 端口,這樣就可以方便的通過(guò)主機(jī)的瀏覽器查看集群信息。

kubernetes集成Consul

Kubernetes中的一個(gè)Pod中可以包含多個(gè)容器,這些容器可以協(xié)同工作,形成一個(gè)完整的服務(wù)。在這個(gè)例子中,一個(gè)Pod中包含了三個(gè)容器:Consul客戶端容器、Java應(yīng)用容器和Filebeat容器。

Consul客戶端容器是用來(lái)向Kubernetes集群外的Consul服務(wù)器注冊(cè)服務(wù)的。Consul客戶端可以通過(guò)API或DNS接口與Consul服務(wù)器進(jìn)行通信,將服務(wù)注冊(cè)信息發(fā)送給Consul服務(wù)器,包括服務(wù)的名稱、IP地址、端口號(hào)等元數(shù)據(jù)信息。

Java應(yīng)用容器是用來(lái)運(yùn)行業(yè)務(wù)應(yīng)用程序的。它會(huì)通過(guò)Consul客戶端容器中的API或DNS接口查詢服務(wù)的信息,包括IP地址和端口號(hào),以便能夠與其它服務(wù)通信。

Filebeat容器則是用來(lái)收集Java應(yīng)用程序的日志文件,并將其發(fā)送到指定的日志服務(wù)器進(jìn)行處理和存儲(chǔ)。

下面是大致的架構(gòu)圖:

                            +---------------------+
                             | Consul Server       |
                             | (集群外的Consul服務(wù)器) |
                             +---------------------+
                                        |
                                        | HTTP/DNS API
                                        |
                             +---------------------+
                             | Consul Client       |
                             | (Pod中的容器)       |
                             +---------------------+
                                      /  \
                                     /    \
                                    /      \
                       HTTP/DNS API       |       HTTP API
                         +-------+       |       +--------+
                         | Java  |       |       | File-  |
                         | App   |<------+------>| beat   |
                         |       |               |        |
                         +-------+               +--------+

在這個(gè)架構(gòu)圖中,Java應(yīng)用容器和Filebeat容器都與Consul客戶端容器通過(guò)HTTP/DNS API進(jìn)行通信。Java應(yīng)用容器使用Consul客戶端容器提供的服務(wù)注冊(cè)信息與其它服務(wù)進(jìn)行通信,F(xiàn)ilebeat容器則通過(guò)HTTP API將收集的日志文件發(fā)送到指定的日志服務(wù)器。Consul客戶端容器通過(guò)HTTP API將服務(wù)注冊(cè)信息發(fā)送給Kubernetes集群外的Consul服務(wù)器,以便其它服務(wù)可以發(fā)現(xiàn)和使用它們。

以下是 Java 應(yīng)用通過(guò) Consul 客戶端注冊(cè)到 Consul 服務(wù)端的詳細(xì)步驟流程:

  • Pod 中的 Consul 客戶端啟動(dòng),并向 Consul 集群發(fā)現(xiàn)服務(wù)請(qǐng)求。
  • Consul 客戶端會(huì)向 Consul 服務(wù)端的任一節(jié)點(diǎn)發(fā)出注冊(cè)請(qǐng)求,告知它所在的服務(wù)名稱、IP 地址、端口號(hào)、標(biāo)簽等信息,以及該服務(wù)的健康檢查規(guī)則。
  • Consul 服務(wù)端接收到注冊(cè)請(qǐng)求后,會(huì)將該服務(wù)信息存儲(chǔ)在本地的 KV 存儲(chǔ)中,并將該服務(wù)的狀態(tài)標(biāo)記為“不健康”。
  • Consul 客戶端會(huì)根據(jù)所注冊(cè)的健康檢查規(guī)則,定期向 Consul 服務(wù)端發(fā)送健康檢查請(qǐng)求,并根據(jù)響應(yīng)結(jié)果更新本地的服務(wù)狀態(tài)。
  • 當(dāng)該服務(wù)的狀態(tài)為“健康”時(shí),Consul 客戶端會(huì)將該服務(wù)的狀態(tài)信息存儲(chǔ)在本地的緩存中,并向本地的 Java 應(yīng)用提供服務(wù)發(fā)現(xiàn)和負(fù)載均衡功能。
  • Java 應(yīng)用通過(guò)調(diào)用 Consul 客戶端提供的 API,獲取所需服務(wù)的 IP 地址和端口號(hào),并通過(guò)這些信息與目標(biāo)服務(wù)建立連接。
  • 如果需要對(duì)該服務(wù)進(jìn)行修改或注銷(xiāo),Java 應(yīng)用可以向 Consul 客戶端發(fā)送對(duì)應(yīng)的請(qǐng)求。
  • Consul 客戶端接收到請(qǐng)求后,會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給 Consul 服務(wù)端,并更新本地的緩存。
  • Consul 服務(wù)端接收到請(qǐng)求后,會(huì)更新該服務(wù)在本地 KV 存儲(chǔ)中的信息,并將該服務(wù)的狀態(tài)標(biāo)記為“不健康”。
  • Consul 客戶端會(huì)根據(jù)所注冊(cè)的健康檢查規(guī)則,定期向 Consul 服務(wù)端發(fā)送健康檢查請(qǐng)求,并根據(jù)響應(yīng)結(jié)果更新本地的服務(wù)狀態(tài)。

總體架構(gòu)圖如下:

在該架構(gòu)中,Consul 客戶端和 Java 應(yīng)用都運(yùn)行在 Pod 中,其中 Consul 客戶端負(fù)責(zé)服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn),Java 應(yīng)用則通過(guò) Consul 客戶端獲取所需服務(wù)的信息。同時(shí),F(xiàn)ilebeat 用于收集應(yīng)用的日志數(shù)據(jù),并將其發(fā)送至目標(biāo)日志存儲(chǔ)系統(tǒng)。

SpringBoot注冊(cè)Consul

SpringBoot可以通過(guò)使用Consul的Java客戶端庫(kù)來(lái)實(shí)現(xiàn)與Consul的集成,該庫(kù)提供了豐富的API,包括服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、KV存儲(chǔ)等功能。下面是SpringBoot注冊(cè)Consul的大致步驟和原理:

1.引入Consul客戶端庫(kù)

在SpringBoot項(xiàng)目的pom.xml中引入Consul客戶端庫(kù)的依賴,例如:

<?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"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/>
    </parent>
 
    <groupId>com.springboot.demo</groupId>
    <artifactId>web-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>web-demo</name>
    <description>web-demo</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
 
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

      2、配置Consul連接信息

在SpringBoot項(xiàng)目的application.yml文件中配置Consul的連接信息,例如:

server:
  port: 1000
spring:
  application:
    name: heian
  cloud:
    consul:
      enabled: true
      host: 192.168.102.20  # 注冊(cè)中心地址
      port: 8500  # 注冊(cè)中心地址的端口
      discovery:
        hostname: 192.168.96.19 # 本地ip
        instance-id: ${spring.application.name}:${spring.cloud.consul.discovery.hostname}:${server.port}
        #health-check-path: ${server.servlet.context-path}/actuator/health # 如果配置了context-path就配置,沒(méi)有就不配
        health-check-interval: 15s # 每隔15s做一次健康檢查
        register: true
        register-health-check: true
        service-name: ${spring.application.name}
 
# 放開(kāi)端口
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always

 3、實(shí)現(xiàn)服務(wù)注冊(cè)

啟動(dòng)類(lèi)

@EnableDiscoveryClient
@SpringBootApplication
public class WebDemoApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(WebDemoApplication.class, args);
    }
}

控制類(lèi)

package com.springboot.demo.webdemo.controller;
 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.HashMap;
 
@RestController
@RequestMapping("/employee")
public class EmployeeController {
 
    @GetMapping
    public HashMap<String, String> index(){
        HashMap<String, String> hashmap = new HashMap<String, String>();
        hashmap.put("姓名", "王二");
        hashmap.put("年齡", "27");
        hashmap.put("工齡", "6");
 
        return hashmap;
    }
}

總結(jié) 

Spring Boot應(yīng)用可以通過(guò)向Consul注冊(cè)自身來(lái)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和治理,使得其他服務(wù)可以在Consul中發(fā)現(xiàn)并調(diào)用它。

文檔:

https://www.cnblogs.com/qingyunye/p/12932493.html

一篇文章了解Consul服務(wù)發(fā)現(xiàn)實(shí)現(xiàn)原理 | Harries Blog™

到此這篇關(guān)于SpringBoot(微服務(wù))注冊(cè)分布式Consul的文章就介紹到這了,更多相關(guān)SpringBoot注冊(cè)分布式Consul內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • application.yaml與bootstrap.yaml的使用

    application.yaml與bootstrap.yaml的使用

    這篇文章主要介紹了application.yaml與bootstrap.yaml的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot整合Security安全框架實(shí)現(xiàn)控制權(quán)限

    SpringBoot整合Security安全框架實(shí)現(xiàn)控制權(quán)限

    本文主要介紹了SpringBoot整合Security安全框架實(shí)現(xiàn)控制權(quán)限,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java?Collection?接口和常用方法綜合詳解

    Java?Collection?接口和常用方法綜合詳解

    Collection派生出三個(gè)子接口,Set代表不可重復(fù)的無(wú)序集合、List代表可重復(fù)的有序集合、Queue是java提供的隊(duì)列實(shí)現(xiàn),通過(guò)它們不斷的擴(kuò)展出很多的集合類(lèi),接下來(lái)我們?cè)敿?xì)介紹一下
    2021-11-11
  • Springboot2整合knife4j過(guò)程解析

    Springboot2整合knife4j過(guò)程解析

    這篇文章主要介紹了Springboot2整合knife4j過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • mybatis 如何判斷l(xiāng)ist集合是否包含指定數(shù)據(jù)

    mybatis 如何判斷l(xiāng)ist集合是否包含指定數(shù)據(jù)

    這篇文章主要介紹了mybatis 判斷l(xiāng)ist集合是否包含指定數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之二叉樹(shù)

    Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之二叉樹(shù)

    今天給大家?guī)?lái)的是關(guān)于Java數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí),文章圍繞著Java二叉樹(shù)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 如何在maven本地倉(cāng)庫(kù)中添加oracle的jdbc驅(qū)動(dòng)

    如何在maven本地倉(cāng)庫(kù)中添加oracle的jdbc驅(qū)動(dòng)

    文章介紹了在Maven項(xiàng)目中添加Oracle數(shù)據(jù)庫(kù)驅(qū)動(dòng)ojdbc5時(shí)遇到的問(wèn)題以及解決問(wèn)題的兩種方法,方法一為簡(jiǎn)單粗暴,但沒(méi)有體現(xiàn)Maven倉(cāng)庫(kù)的作用,需要手動(dòng)管理jar包,方法二為在Maven本地倉(cāng)庫(kù)中添加Oracle的JDBC驅(qū)動(dòng),過(guò)程較為繁瑣,但配置一次后可以多次使用
    2024-11-11
  • SpringBoot 如何使用RestTemplate來(lái)調(diào)用接口

    SpringBoot 如何使用RestTemplate來(lái)調(diào)用接口

    這篇文章主要介紹了SpringBoot 如何使用RestTemplate來(lái)調(diào)用接口方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 基于傳遞list類(lèi)型的參數(shù)的問(wèn)題

    基于傳遞list類(lèi)型的參數(shù)的問(wèn)題

    這篇文章主要介紹了基于傳遞list類(lèi)型的參數(shù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • SpringMVC實(shí)現(xiàn)文件上傳下載的全過(guò)程

    SpringMVC實(shí)現(xiàn)文件上傳下載的全過(guò)程

    對(duì)于上傳功能,我們?cè)陧?xiàng)目中是經(jīng)常會(huì)用到的,比如用戶注冊(cè)的時(shí)候,上傳用戶頭像,這個(gè)時(shí)候就會(huì)使用到上傳的功能,而對(duì)于下載使用場(chǎng)景也很常見(jiàn),下面這篇文章主要給大家介紹了關(guān)于SpringMVC實(shí)現(xiàn)文件上傳下載的相關(guān)資料,需要的朋友可以參考下
    2022-01-01

最新評(píng)論

定南县| 会理县| 稷山县| 会同县| 万全县| 昭苏县| 石柱| 页游| 南和县| 迁安市| 华宁县| 班戈县| 临朐县| 桓台县| 娄底市| 乳山市| 稷山县| 丘北县| 普格县| 黑河市| 崇礼县| 聂拉木县| 秦皇岛市| 青海省| 民乐县| 普格县| 沈阳市| 贵港市| 长丰县| 保德县| 化州市| 邯郸县| 永善县| 临夏县| 赤壁市| 泾阳县| 龙口市| 烟台市| 城口县| 长治县| 华安县|