国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

如何做網(wǎng)站制作seo的定義

如何做網(wǎng)站制作,seo的定義,做網(wǎng)站的哪家好,外貿(mào)seo是啥介紹 Consul 是一套開(kāi)源的分布式服務(wù)發(fā)現(xiàn)和配置管理系統(tǒng),由 HashiCorp 公司用 Go 語(yǔ)言開(kāi)發(fā)。 提供了微服務(wù)系統(tǒng)中的服務(wù)治理、配置中心、控制總線等功能。這些功能中的每一個(gè)都可以根據(jù)需要單獨(dú)使用,也可以一起使用以構(gòu)建全方位的服務(wù)網(wǎng)格,…

介紹

Consul 是一套開(kāi)源的分布式服務(wù)發(fā)現(xiàn)和配置管理系統(tǒng),由 HashiCorp 公司用 Go 語(yǔ)言開(kāi)發(fā)。

提供了微服務(wù)系統(tǒng)中的服務(wù)治理、配置中心、控制總線等功能。這些功能中的每一個(gè)都可以根據(jù)需要單獨(dú)使用,也可以一起使用以構(gòu)建全方位的服務(wù)網(wǎng)格,總之Consul提供了一種完整的服務(wù)網(wǎng)格解決方案。它具有很多優(yōu)點(diǎn)。包括: 基于 raft 協(xié)議,比較簡(jiǎn)潔; 支持健康檢查, 同時(shí)支持 HTTP 和 DNS 協(xié)議 支持跨數(shù)據(jù)中心的 WAN 集群 提供圖形界面 跨平臺(tái),支持 Linux、Mac、Windows

簡(jiǎn)言之,Consul的作用是服務(wù)發(fā)現(xiàn)和配置管理

Consul的作用

  • 服務(wù)發(fā)現(xiàn):提供HTTP和DNS兩種發(fā)現(xiàn)方式。
  • 健康檢測(cè):支持多種方式,HTTP、TCP、Docker、Shell腳本定制化監(jiān)控
  • kv存儲(chǔ):Key、Value的存儲(chǔ)方式
  • 多數(shù)據(jù)中心:Consul支持多數(shù)據(jù)中心
  • 可視化Web界面

服務(wù)注冊(cè)與發(fā)現(xiàn)

步驟:

  • pom文件中引入consul服務(wù)注冊(cè)與發(fā)現(xiàn)的依賴
<!--SpringCloud consul discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency>
  • yaml文件中做好consul的相關(guān)配置,例:
spring:application:name: cloud-consumer-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #優(yōu)先使用服務(wù)ip進(jìn)行注冊(cè)service-name: ${spring.application.name}
  • 在啟動(dòng)類(lèi)上加上@EnableDiscoveryClient
  • 在RestTemplateConfig配置類(lèi)中,創(chuàng)建RestTemplate組件的方法上,加上負(fù)載均衡支持的注解
@Configuration
public class RestTemplateConfig
{@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
}
  • 在要引用服務(wù)的地址的時(shí)候,就可以將原來(lái)的 ip地址:端口號(hào) 改為對(duì)應(yīng)的服務(wù)名
public static final String PaymentSrv_URL = "<http://cloud-payment-service>";

分布式配置

微服務(wù)意味著要將單體應(yīng)用中的業(yè)務(wù)拆分成一個(gè)個(gè)子服務(wù),每個(gè)服務(wù)的粒度相對(duì)較小,因此系統(tǒng)中會(huì)出現(xiàn)大量的服務(wù)。由于每個(gè)服。務(wù)都需要必要的配置信息才能運(yùn)行,所以一套集中式的、動(dòng)態(tài)的配置管理設(shè)施是必不可少的。

服務(wù)配置:

配置通用全局配置信息,直接注冊(cè)進(jìn)Consul服務(wù)器,從Consul獲取配置信息:

  • pom中加入依賴:
<!--SpringCloud consul config-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
  • 關(guān)于bootstrap.yaml文件:

    applicaiton.yml是用戶級(jí)的資源配置項(xiàng)

    bootstrap.yml是系統(tǒng)級(jí)的,優(yōu)先級(jí)更加高

    Spring Cloud會(huì)創(chuàng)建一個(gè)“Bootstrap Context”,作為Spring應(yīng)用的Application Context的父上下文。初始化的時(shí)候,Bootstrap Context負(fù)責(zé)從外部源加載配置屬性并解析配置。這兩個(gè)上下文共享一個(gè)從外部獲取的Environment。

    Bootstrap屬性有高優(yōu)先級(jí),默認(rèn)情況下,它們不會(huì)被本地配置覆蓋。 Bootstrap contextApplication Context有著不同的約定,所以新增了一個(gè)bootstrap.yml文件,保證Bootstrap ContextApplication Context配置的分離。

    application.yml文件改為bootstrap.yml,這是很關(guān)鍵的或者兩者共存,一般推薦兩者共存。

    因?yàn)閎ootstrap.yml是比application.yml先加載的。bootstrap.yml優(yōu)先級(jí)高于application.yml

例:

spring:application:name: cloud-payment-service####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}config:profile-separator: '-' # default value is ",",we update '-'format: YAML

接著在consul中配置好kv配置信息,要讀取配置信息,也是和讀取普通配置文件中的信息一樣,使用@Value注解獲取。

kv信息的配置格式為config/服務(wù)名-運(yùn)行環(huán)境/data,最終的配置信息在data中配置,可以使用yaml的格式。

及時(shí)動(dòng)態(tài)刷新

在consul中的配置信息修改后,立即訪問(wèn)時(shí)候,不會(huì)生效,要等待一會(huì)才會(huì)刷新。

解決步驟:

  • 添加@RefreshScope注解到主啟動(dòng)類(lèi)上

  • 修改watch的wait-time(不建議)

    spring:application:name: cloud-payment-service####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}config:profile-separator: '-' # default value is ",",we update '-'format: YAMLwatch:wait-time: 1
    

LoadBanlancer負(fù)載均衡調(diào)用

LB負(fù)載均衡(Load Balance):

簡(jiǎn)單的說(shuō)就是將用戶的請(qǐng)求平攤的分配到多個(gè)服務(wù)上,從而達(dá)到系統(tǒng)的HA(高可用),常見(jiàn)的負(fù)載均衡有軟件Nginx,LVS,硬件 F5等。

spring-cloud-starter-loadbalancer組件是什么:

Spring Cloud LoadBalancer是由SpringCloud官方提供的一個(gè)開(kāi)源的、簡(jiǎn)單易用的客戶端負(fù)載均衡器,它包含在SpringCloud-commons中用它來(lái)替換了以前的Ribbon組件。相比較于Ribbon,SpringCloud LoadBalancer不僅能夠支持RestTemplate,還支持WebClient(WeClient是Spring Web Flux中提供的功能,可以實(shí)現(xiàn)響應(yīng)式異步請(qǐng)求)

在負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求的rest服務(wù)客戶端,做負(fù)載均衡。導(dǎo)入以下依賴,并在RestTemplateConfig的組件配置中,加上@LoadBalanced注解


<!--loadbalancer-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

原理

LoadBalance在工作時(shí)分為兩步:

  1. 第一步,先選擇ConsulServer從服務(wù)端查詢服務(wù)列表,默認(rèn)輪詢調(diào)用誰(shuí)都可以正常執(zhí)行。
  2. 第二步,按照指定的負(fù)載均衡策略從server取到的服務(wù)注冊(cè)中由客戶端自己選擇一個(gè)地址,所以LoadBalancer是一個(gè)客戶端的負(fù)載均衡器

負(fù)載均衡輪詢算法:rest接口第幾次請(qǐng)求數(shù) % 服務(wù)器集群總數(shù)量 = 實(shí)際調(diào)用服務(wù)器位置下標(biāo) ,每次服務(wù)重啟動(dòng)后rest接口計(jì)數(shù)從1開(kāi)始。

默認(rèn)是兩種算法,除了輪詢算法,還有一種是隨機(jī)算法。如果要使用隨機(jī)算法,RestTemplateConfig配置如下:

@Configuration
@LoadBalancerClient(//下面的value值大小寫(xiě)一定要和consul里面的名字一樣,必須一樣value = "cloud-payment-service",configuration = RestTemplateConfig.class)
public class RestTemplateConfig
{@Bean@LoadBalanced //使用@LoadBalanced注解賦予RestTemplate負(fù)載均衡的能力public RestTemplate restTemplate(){return new RestTemplate();}@BeanReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);}
}

一般還是建議使用默認(rèn)的輪詢算法。

OpenFeign服務(wù)接口調(diào)用

openFeign是一個(gè)聲明式的服務(wù)客戶端。也支持并包含了loadBalanced。

官方介紹文:

它使編寫(xiě)web服務(wù)客戶端變得更容易。使用Feign創(chuàng)建一個(gè)接口并對(duì)其進(jìn)行注釋。它具有可插入的注釋支持,包括Feign注釋和JAX-RS注釋。Feign還支持可插拔編碼器和解碼器。Spring Cloud添加了對(duì)Spring MVC注釋的支持,以及對(duì)使用Spring Web中默認(rèn)使用的HttpMessageConverter的支持。Spring Cloud集成了Eureka、Spring Cloud CircuitBreaker以及Spring Cloud LoadBalancer,以便在使用Feign時(shí)提供負(fù)載平衡的http客戶端。

由于對(duì)服務(wù)依賴的調(diào)用可能不止一處,往往一個(gè)接口會(huì)被多處調(diào)用,所以通常都會(huì)針對(duì)每一個(gè)微服務(wù)自行封裝一些客戶端類(lèi)來(lái)包裝這些依賴服務(wù)的調(diào)用。所以O(shè)penFeign在此基礎(chǔ)上做了進(jìn)一步封裝,幫助我們定義和實(shí)現(xiàn)依賴服務(wù)接口的定義。

可以在使用OpenFeign式提供http客戶端的負(fù)載均衡,也可以集成阿里巴巴的Sentinel來(lái)提供熔斷降級(jí)等功能。通過(guò)OpenFeign只需要服務(wù)綁定接口且以聲明式的方法,優(yōu)雅而簡(jiǎn)單的實(shí)現(xiàn)了服務(wù)調(diào)用

使用步驟:

  • 建好服務(wù)客戶端模塊后,引入依賴:
<!--openfeign-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  • yaml文件:
server:port: 80spring:application:name: cloud-consumer-openfeign-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #優(yōu)先使用服務(wù)ip進(jìn)行注冊(cè)service-name: ${spring.application.name}
  • 主啟動(dòng)類(lèi)上加上consul的支持注冊(cè)服務(wù)的注解和啟用feign客戶端的注解
@SpringBootApplication
@EnableDiscoveryClient //該注解用于向使用consul為注冊(cè)中心時(shí)注冊(cè)服務(wù)
@EnableFeignClients//啟用feign客戶端,定義服務(wù)+綁定接口,以聲明式的方法優(yōu)雅而簡(jiǎn)單的實(shí)現(xiàn)服務(wù)調(diào)用
public class MainOpenFeign80 {public static void main(String[] args) {SpringApplication.run(MainOpenFeign80.class,args);}
}
  • 在通用模塊commons中引入依賴(如上)后,新建服務(wù)接口PayFeignApi,在接口上配置@FeignClient注解,并定義好抽象方法,抽象方法的定義要對(duì)應(yīng)的服務(wù)的controller類(lèi)中的controller方法。相應(yīng)的mapping注解也要對(duì)應(yīng)好。
@FeignClient("cloud-payment-service")
public interface PayFeignApi {@PostMapping(value = "/pay/add")public ResultData<String> addPay(@RequestBody Pay pay);@DeleteMapping("pay/del/{id}")public ResultData<Integer> deletePay(@PathVariable("id") Integer id);@PutMapping("/pay/update")public ResultData<String> updatePay(@RequestBody PayDTO payDto);@GetMapping("/pay/get/{id}")public ResultData<Pay> getById(@PathVariable("id") Integer id);@GetMapping("/pay/getAll")public ResultData<List<Pay>> getAll();
}
  • 在服務(wù)客戶端的controller中調(diào)用payFeignApi
@RestController
public class OrderController {@Resourceprivate PayFeignApi payFeignApi;@PostMapping("/feign/pay/add")public ResultData addOrder(@RequestBody Pay pay){ResultData<String> resultData = payFeignApi.addPay(pay);return resultData;}@GetMapping("/feign/pay/get/{id}")public ResultData getPayInfo(@PathVariable("id") Integer id){System.out.println("-------支付微服務(wù)遠(yuǎn)程調(diào)用,按照id查詢訂單支付流水信息");ResultData resultData = payFeignApi.getById(id);return resultData;}
}

OpenFeign高級(jí)特性

超時(shí)控制

在SpringCloud微服務(wù)架構(gòu)中,大部分公司都是利用OpenFeign進(jìn)行服務(wù)間的調(diào)用,如果服務(wù)要進(jìn)行比較繁雜的業(yè)務(wù)計(jì)算,那后臺(tái)很有可能會(huì)出現(xiàn)Read Timeout這個(gè)異常,因此定制化配置超時(shí)時(shí)間就非常有必要了。

openFeign默認(rèn)等待六十秒,超時(shí)后會(huì)報(bào)錯(cuò)。

關(guān)于超時(shí)控制的配置項(xiàng):

  • connectTimeOut:連接超時(shí)時(shí)間
  • readTimeOut:請(qǐng)求處理超時(shí)時(shí)間

配置分為兩種:

全局配置

直接在application.yaml文件中進(jìn)行配置:

server:port: 80spring:application:name: cloud-consumer-openfeign-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #優(yōu)先使用服務(wù)ip進(jìn)行注冊(cè)service-name: ${spring.application.name}openfeign:client:config:default:#連接超時(shí)時(shí)間connectTimeout: 3000#讀取超時(shí)時(shí)間readTimeout: 3000

指定配置

就是config的下一級(jí)屬性的屬性名改為要指定的服務(wù)的服務(wù)名,default的同級(jí)

server:port: 80spring:application:name: cloud-consumer-openfeign-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #優(yōu)先使用服務(wù)ip進(jìn)行注冊(cè)service-name: ${spring.application.name}openfeign:client:config:default:#連接超時(shí)時(shí)間connectTimeout: 3000#讀取超時(shí)時(shí)間readTimeout: 3000cloud-provider-payment:#連接超時(shí)時(shí)間connectTimeout: 5000#讀取超時(shí)時(shí)間readTimeout: 5000

服務(wù)的超時(shí)配置先看指定的,再看全局的。

重試機(jī)制

重試是指當(dāng)請(qǐng)求失敗后,會(huì)重新再次發(fā)送該請(qǐng)求。在OpenFeign中默認(rèn)是關(guān)閉重試的,如果要開(kāi)啟重試,在配置類(lèi)FeignConfig中設(shè)置:

@Configuration
public class FeignConfig {@Beanpublic Retryer myRetryer(){//return Retryer.NEVER_RETRY; //Feign默認(rèn)配置是不走重試策略的//最大請(qǐng)求次數(shù)為3(1+2),初始間隔時(shí)間為100ms,重試間最大間隔時(shí)間為1sreturn new Retryer.Default(100,1,3);}
}

HttpClient

OpenFeign中http client如果不做特殊配置,默認(rèn)使用jdk自帶的HttpURLConnection發(fā)送HTTP請(qǐng)求,由于默認(rèn)HttpURLConnection沒(méi)有連接池、性能和效率低,如果采用默認(rèn),性能上欠佳。

建議使用阿帕奇的httpclient5。

步驟:

  • pom引入依賴

    <!-- httpclient5-->
    <dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifactId><version>5.3</version>
    </dependency>
    <!-- feign-hc5-->
    <dependency><groupId>io.github.openfeign</groupId><artifactId>feign-hc5</artifactId><version>13.1</version>
    </dependency>
    
  • 開(kāi)啟httpclient5的配置,application.yaml文件:

    server:port: 80spring:application:name: cloud-consumer-openfeign-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #優(yōu)先使用服務(wù)ip進(jìn)行注冊(cè)service-name: ${spring.application.name}openfeign:client:config:default:connect-timeout: 3000read-timeout: 3000cloud-provider-payment:#連接超時(shí)時(shí)間connectTimeout: 5000#讀取超時(shí)時(shí)間readTimeout: 5000# 配置httpclient5httpclient:hc5:enabled: true
    

請(qǐng)求響應(yīng)壓縮

Spring Cloud OpenFeign支持對(duì)請(qǐng)求和響應(yīng)進(jìn)行GZIP壓縮,以減少通信過(guò)程中的性能損耗。還可以對(duì)請(qǐng)求壓縮做一些更細(xì)致的設(shè)置,比如指定壓縮的請(qǐng)求數(shù)據(jù)類(lèi)型并設(shè)置了請(qǐng)求壓縮的大小下限。

application.yaml配置文件:

server:port: 80spring:application:name: cloud-consumer-openfeign-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #優(yōu)先使用服務(wù)ip進(jìn)行注冊(cè)service-name: ${spring.application.name}openfeign:client:config:default:connect-timeout: 3000read-timeout: 3000cloud-provider-payment:#連接超時(shí)時(shí)間connectTimeout: 5000#讀取超時(shí)時(shí)間readTimeout: 5000httpclient:hc5:enabled: truecompression:request:enabled: truemin-request-size: 2048 #最小觸發(fā)壓縮的大小,單位 字節(jié)mime-types: text/xml,application/xml,application/json #觸發(fā)壓縮數(shù)據(jù)類(lèi)型response:enabled: true

日志打印

Feign提供了日志打印功能,可以通過(guò)配置來(lái)調(diào)整日志級(jí)別,從而了解feign中http請(qǐng)求的細(xì)節(jié),也就是對(duì)Feign接口的調(diào)用情況進(jìn)行監(jiān)控和輸出。

日志級(jí)別

NONE:默認(rèn)的,不顯示任何日志;

BASIC:僅記錄請(qǐng)求方法、URL、響應(yīng)狀態(tài)碼及執(zhí)行時(shí)間;

HEADERS:除了 BASIC 中定義的信息之外,還有請(qǐng)求和響應(yīng)的頭信息;

FULL:除了 HEADERS 中定義的信息之外,還有請(qǐng)求和響應(yīng)的正文及元數(shù)據(jù)。

配置方式:

  • 在FeignConfig中,配置:
@Configuration
public class FeignConfig {@Beanpublic Retryer myRetryer(){//return Retryer.NEVER_RETRY; //Feign默認(rèn)配置是不走重試策略的//最大請(qǐng)求次數(shù)為3(1+2),初始間隔時(shí)間為100ms,重試間最大間隔時(shí)間為1sreturn new Retryer.Default(100,1,3);}//配置日志級(jí)別@BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL;}
}
  • 在yaml文件中配置,配置公式是:logging.level?+?含有@FeignClient注解的完整帶包名的接口名+debug,例如:
server:port: 80spring:application:name: cloud-consumer-openfeign-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #優(yōu)先使用服務(wù)ip進(jìn)行注冊(cè)service-name: ${spring.application.name}openfeign:client:config:default:connect-timeout: 3000read-timeout: 3000cloud-provider-payment:#連接超時(shí)時(shí)間connectTimeout: 5000#讀取超時(shí)時(shí)間readTimeout: 5000httpclient:hc5:enabled: truecompression:request:enabled: truemin-request-size: 2048 #最小觸發(fā)壓縮的大小mime-types: text/xml,application/xml,application/json #觸發(fā)壓縮數(shù)據(jù)類(lèi)型response:enabled: true
#日志配置
logging:level:com:ergou:cloud:apis:PayFeignApi: debug

http://aloenet.com.cn/news/43488.html

相關(guān)文章:

  • 怎么利用云盤(pán)建設(shè)網(wǎng)站新聞稿發(fā)布軟文平臺(tái)
  • 服裝企業(yè)營(yíng)銷(xiāo)網(wǎng)站建設(shè)百度推廣后臺(tái)登錄首頁(yè)
  • 重慶哪里可以做網(wǎng)站的seo整站優(yōu)化新站快速排名
  • 個(gè)人網(wǎng)站策劃書(shū)怎么做seo推廣排名重要嗎
  • 企業(yè)網(wǎng)站關(guān)鍵詞優(yōu)化排名應(yīng)該怎么做電商平臺(tái)運(yùn)營(yíng)方案
  • 怎么制作手機(jī)網(wǎng)站青島百度關(guān)鍵詞優(yōu)化
  • 網(wǎng)站后臺(tái)編輯器seo搜索引擎優(yōu)化工資
  • 做競(jìng)價(jià)的網(wǎng)站需要做外部鏈接嗎開(kāi)發(fā)網(wǎng)站建設(shè)公司
  • 做網(wǎng)站的設(shè)計(jì)尺寸app營(yíng)銷(xiāo)
  • 網(wǎng)站批量修改東莞百度快速排名
  • phpmysql網(wǎng)站河南關(guān)鍵詞排名顧問(wèn)
  • 做我的世界的mod的網(wǎng)站上海網(wǎng)站建設(shè)關(guān)鍵詞排名
  • 福田專(zhuān)業(yè)網(wǎng)站建設(shè)公司淘寶補(bǔ)流量平臺(tái)
  • 檔案網(wǎng)站建設(shè)經(jīng)驗(yàn)長(zhǎng)春網(wǎng)站快速排名提升
  • 西寧做網(wǎng)站君博美評(píng)中國(guó)十大廣告公司排行榜
  • 個(gè)人網(wǎng)站域名網(wǎng)站外包一般多少錢(qián)啊
  • 關(guān)于網(wǎng)站建設(shè)的通知優(yōu)化大師有必要花錢(qián)嗎
  • 建設(shè)網(wǎng)站需要備案網(wǎng)站建設(shè)培訓(xùn)
  • 天元建設(shè)集團(tuán)有限公司招聘信息seo成功的案例和分析
  • 網(wǎng)站前端設(shè)計(jì)重慶森林在線觀看
  • 做網(wǎng)站前微信朋友圈廣告如何投放
  • 快速搭建展示型網(wǎng)站b2b電子商務(wù)平臺(tái)網(wǎng)站
  • 客服外包在哪里接活長(zhǎng)沙seo代理
  • 外貿(mào)網(wǎng)站如何做seo谷歌seo課程
  • 政府網(wǎng)站集群的建設(shè)思路百度查重免費(fèi)入口
  • 長(zhǎng)沙企業(yè)100強(qiáng)名單福建seo關(guān)鍵詞優(yōu)化外包
  • 玉器哪家網(wǎng)站做的好個(gè)人網(wǎng)站備案
  • 順德專(zhuān)業(yè)網(wǎng)站制作友情鏈接分析
  • 一元注冊(cè)公司流程汕頭最好的seo外包
  • 昆明網(wǎng)站制作網(wǎng)頁(yè)環(huán)球軍事新聞最新消息