中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

如何做網站制作seo的定義

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

介紹

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

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

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

Consul的作用

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

服務注冊與發(fā)現(xiàn)

步驟:

  • pom文件中引入consul服務注冊與發(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的相關配置,例:
spring:application:name: cloud-consumer-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #優(yōu)先使用服務ip進行注冊service-name: ${spring.application.name}
  • 在啟動類上加上@EnableDiscoveryClient
  • 在RestTemplateConfig配置類中,創(chuàng)建RestTemplate組件的方法上,加上負載均衡支持的注解
@Configuration
public class RestTemplateConfig
{@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
}
  • 在要引用服務的地址的時候,就可以將原來的 ip地址:端口號 改為對應的服務名
public static final String PaymentSrv_URL = "<http://cloud-payment-service>";

分布式配置

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

服務配置:

配置通用全局配置信息,直接注冊進Consul服務器,從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>
  • 關于bootstrap.yaml文件:

    applicaiton.yml是用戶級的資源配置項

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

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

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

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

    因為bootstrap.yml是比application.yml先加載的。bootstrap.yml優(yōu)先級高于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/服務名-運行環(huán)境/data,最終的配置信息在data中配置,可以使用yaml的格式。

及時動態(tài)刷新

在consul中的配置信息修改后,立即訪問時候,不會生效,要等待一會才會刷新。

解決步驟:

  • 添加@RefreshScope注解到主啟動類上

  • 修改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負載均衡調用

LB負載均衡(Load Balance):

簡單的說就是將用戶的請求平攤的分配到多個服務上,從而達到系統(tǒng)的HA(高可用),常見的負載均衡有軟件Nginx,LVS,硬件 F5等。

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

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

在負責轉發(fā)請求的rest服務客戶端,做負載均衡。導入以下依賴,并在RestTemplateConfig的組件配置中,加上@LoadBalanced注解


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

原理

LoadBalance在工作時分為兩步:

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

負載均衡輪詢算法:rest接口第幾次請求數(shù) % 服務器集群總數(shù)量 = 實際調用服務器位置下標 ,每次服務重啟動后rest接口計數(shù)從1開始。

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

@Configuration
@LoadBalancerClient(//下面的value值大小寫一定要和consul里面的名字一樣,必須一樣value = "cloud-payment-service",configuration = RestTemplateConfig.class)
public class RestTemplateConfig
{@Bean@LoadBalanced //使用@LoadBalanced注解賦予RestTemplate負載均衡的能力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);}
}

一般還是建議使用默認的輪詢算法。

OpenFeign服務接口調用

openFeign是一個聲明式的服務客戶端。也支持并包含了loadBalanced。

官方介紹文:

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

由于對服務依賴的調用可能不止一處,往往一個接口會被多處調用,所以通常都會針對每一個微服務自行封裝一些客戶端類來包裝這些依賴服務的調用。所以OpenFeign在此基礎上做了進一步封裝,幫助我們定義和實現(xiàn)依賴服務接口的定義。

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

使用步驟:

  • 建好服務客戶端模塊后,引入依賴:
<!--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)先使用服務ip進行注冊service-name: ${spring.application.name}
  • 主啟動類上加上consul的支持注冊服務的注解和啟用feign客戶端的注解
@SpringBootApplication
@EnableDiscoveryClient //該注解用于向使用consul為注冊中心時注冊服務
@EnableFeignClients//啟用feign客戶端,定義服務+綁定接口,以聲明式的方法優(yōu)雅而簡單的實現(xiàn)服務調用
public class MainOpenFeign80 {public static void main(String[] args) {SpringApplication.run(MainOpenFeign80.class,args);}
}
  • 在通用模塊commons中引入依賴(如上)后,新建服務接口PayFeignApi,在接口上配置@FeignClient注解,并定義好抽象方法,抽象方法的定義要對應的服務的controller類中的controller方法。相應的mapping注解也要對應好。
@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();
}
  • 在服務客戶端的controller中調用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("-------支付微服務遠程調用,按照id查詢訂單支付流水信息");ResultData resultData = payFeignApi.getById(id);return resultData;}
}

OpenFeign高級特性

超時控制

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

openFeign默認等待六十秒,超時后會報錯。

關于超時控制的配置項:

  • connectTimeOut:連接超時時間
  • readTimeOut:請求處理超時時間

配置分為兩種:

全局配置

直接在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)先使用服務ip進行注冊service-name: ${spring.application.name}openfeign:client:config:default:#連接超時時間connectTimeout: 3000#讀取超時時間readTimeout: 3000

指定配置

就是config的下一級屬性的屬性名改為要指定的服務的服務名,default的同級

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)先使用服務ip進行注冊service-name: ${spring.application.name}openfeign:client:config:default:#連接超時時間connectTimeout: 3000#讀取超時時間readTimeout: 3000cloud-provider-payment:#連接超時時間connectTimeout: 5000#讀取超時時間readTimeout: 5000

服務的超時配置先看指定的,再看全局的。

重試機制

重試是指當請求失敗后,會重新再次發(fā)送該請求。在OpenFeign中默認是關閉重試的,如果要開啟重試,在配置類FeignConfig中設置:

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

HttpClient

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

建議使用阿帕奇的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>
    
  • 開啟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)先使用服務ip進行注冊service-name: ${spring.application.name}openfeign:client:config:default:connect-timeout: 3000read-timeout: 3000cloud-provider-payment:#連接超時時間connectTimeout: 5000#讀取超時時間readTimeout: 5000# 配置httpclient5httpclient:hc5:enabled: true
    

請求響應壓縮

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

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)先使用服務ip進行注冊service-name: ${spring.application.name}openfeign:client:config:default:connect-timeout: 3000read-timeout: 3000cloud-provider-payment:#連接超時時間connectTimeout: 5000#讀取超時時間readTimeout: 5000httpclient:hc5:enabled: truecompression:request:enabled: truemin-request-size: 2048 #最小觸發(fā)壓縮的大小,單位 字節(jié)mime-types: text/xml,application/xml,application/json #觸發(fā)壓縮數(shù)據(jù)類型response:enabled: true

日志打印

Feign提供了日志打印功能,可以通過配置來調整日志級別,從而了解feign中http請求的細節(jié),也就是對Feign接口的調用情況進行監(jiān)控和輸出。

日志級別

NONE:默認的,不顯示任何日志;

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

HEADERS:除了 BASIC 中定義的信息之外,還有請求和響應的頭信息;

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

配置方式:

  • 在FeignConfig中,配置:
@Configuration
public class FeignConfig {@Beanpublic Retryer myRetryer(){//return Retryer.NEVER_RETRY; //Feign默認配置是不走重試策略的//最大請求次數(shù)為3(1+2),初始間隔時間為100ms,重試間最大間隔時間為1sreturn new Retryer.Default(100,1,3);}//配置日志級別@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)先使用服務ip進行注冊service-name: ${spring.application.name}openfeign:client:config:default:connect-timeout: 3000read-timeout: 3000cloud-provider-payment:#連接超時時間connectTimeout: 5000#讀取超時時間readTimeout: 5000httpclient:hc5:enabled: truecompression:request:enabled: truemin-request-size: 2048 #最小觸發(fā)壓縮的大小mime-types: text/xml,application/xml,application/json #觸發(fā)壓縮數(shù)據(jù)類型response:enabled: true
#日志配置
logging:level:com:ergou:cloud:apis:PayFeignApi: debug

http://www.risenshineclean.com/news/43488.html

相關文章:

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