<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Cloud2020版本最佳實踐方案

          共 5940字,需瀏覽 12分鐘

           ·

          2021-10-24 17:04


          來源:https://ilovey.live/2021/09/26/springcloud2020/


          Spring Cloud 從H版本之后命名方式改為2020.x.x,話說為毛最新版本不是2021命名,來自強迫癥的難受

          使用組件列表:

          • 注冊中心:nacos,替代方案eureka、consul、zookeeper
          • 配置中心: nacos ,替代方案sc config、consul config
          • 調用:feign,替代方案:resttempate
          • 熔斷:sentinel、,替代方案:Resilience4j
          • 熔斷監(jiān)控:sentinel dashboard
          • 負載均衡:sc loadbalancer
          • 網(wǎng)關:spring cloud gateway
          • 鏈路:spring cloud sleuth+zipkin,替代方案:skywalking等

          總體架構圖

          版本關系

          使用nacos作為注冊中心和配置中心

          下載nacos

          下載地址:https://github.com/alibaba/nacos

          導入數(shù)據(jù)庫

          創(chuàng)建mysql數(shù)據(jù)庫nacos,導入 conf/nacos-mysql.sql

          配置數(shù)據(jù)庫

          修改 conf/application.properties

          #***************?Config?Module?Related?Configurations?***************#
          ###?If?use?MySQL?as?datasource:
          spring.datasource.platform=mysql

          ###?Count?of?DB:
          db.num=1

          ###?Connect?URL?of?DB:
          db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
          db.user.0=root
          db.password.0=123456

          配置啟動模式

          將nacos設為單機模式啟動,編輯 bin/startup.cmd 將MODE 修改為:

          set?MODE="standalone"

          啟動運行

          登陸頁面:http://localhost:8848/nacos/,登陸用戶nacos,登陸密碼為nacos

          工程案例

          工程案例源碼:https://github.com/java-aodeng/springcloud2020-demo-1

          工程案例包括2個,一個服務提供者provider 、服務消費者consumer

          在父pom文件引入相關的依賴,如下:

          <properties>
          ????<java.version>1.8java.version>
          ????<spring-boot.version>2.4.4spring-boot.version>
          ????<spring-cloud.version>2020.0.2spring-cloud.version>
          ????<spring-cloud-alibaba.version>2021.1spring-cloud-alibaba.version>
          properties>

          <dependencyManagement>
          ????<dependencies>
          ????????
          ????????<dependency>
          ????????????<groupId>org.springframework.bootgroupId>
          ????????????<artifactId>spring-boot-dependenciesartifactId>
          ????????????<version>${spring-boot.version}version>
          ????????????<type>pomtype>
          ????????????<scope>importscope>
          ????????dependency>
          ????????
          ????????<dependency>
          ????????????<groupId>org.springframework.cloudgroupId>
          ????????????<artifactId>spring-cloud-dependenciesartifactId>
          ????????????<version>${spring-cloud.version}version>
          ????????????<type>pomtype>
          ????????????<scope>importscope>
          ????????dependency>
          ????????
          ????????<dependency>
          ????????????<groupId>com.alibaba.cloudgroupId>
          ????????????<artifactId>spring-cloud-alibaba-dependenciesartifactId>
          ????????????<version>${spring-cloud-alibaba.version}version>
          ????????????<type>pomtype>
          ????????????<scope>importscope>
          ????????dependency>
          ????dependencies>
          dependencyManagement>

          服務提供者provider

          在pom文件引入以下依賴:

          <dependency>
          ????<groupId>org.springframework.bootgroupId>
          ????<artifactId>spring-boot-starter-webartifactId>
          dependency>

          <dependency>
          ????<groupId>com.alibaba.cloudgroupId>
          ????<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
          dependency>

          配置文件:

          server:
          ??port:?8762

          spring:
          ??application:
          ????name:?provider

          ??cloud:
          ????nacos:
          ??????discovery:
          ????????server-addr:?127.0.0.1:8848

          啟動入口添加注解:

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

          寫個接口:

          @RestController
          public?class?DemoController?{
          ????@Value("${server.port}")
          ????String?port;

          ????@GetMapping("getInfo")
          ????public?String?getInfo(@RequestParam(value?=?"name",defaultValue?=?"nacosConfig",required?=?false)String?name){
          ????????return?"my?name?is?"+name+",my?port?is?"+port;
          ????}
          }

          服務消費者consumer

          在pom文件引入以下依賴:

          <dependency>
          ????<groupId>org.springframework.bootgroupId>
          ????<artifactId>spring-boot-starter-webartifactId>
          dependency>

          <dependency>
          ????<groupId>com.alibaba.cloudgroupId>
          ????<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
          dependency>

          <dependency>
          ????<groupId>org.springframework.cloudgroupId>
          ????<artifactId>spring-cloud-starter-openfeignartifactId>
          dependency>


          <dependency>
          ????<groupId>org.springframework.cloudgroupId>
          ????<artifactId>spring-cloud-starter-loadbalancerartifactId>
          dependency>

          配置文件

          server:
          ??port:?8763

          spring:
          ??application:
          ????name:?consumer

          ??cloud:
          ????nacos:
          ??????discovery:
          ????????server-addr:?127.0.0.1:8848

          在工程的啟動入口開啟FeignClient的功能

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

          寫一個FeignClient,去調用provider服務的接口:

          @FeignClient(value?=?"provider")
          public?interface?ProviderClient?{

          ????@GetMapping("getInfo")
          ????String?getInfo(@RequestParam(value?=?"name",defaultValue?=?"nacosConfig",required?=?false)String?name);
          }
          Copy

          寫一個接口,讓consumer去調用provider服務的接口:

          @RestController
          public?class?DemoController?{
          ????@Autowired
          ????ProviderClient?providerClient;

          ????@GetMapping("getInfoByFeign")
          ????public?String?getInfoByFeign(){
          ????????return?providerClient.getInfo("consumer?feign");
          ????}
          }

          啟動兩個工程,在nacos服務列表頁面出現(xiàn),consumer,provider2個服務表示都已經(jīng)注冊成功

          服務調用

          在瀏覽器上輸入http://localhost:8763/getInfoByFeign,瀏覽器返回響應

          my?name?is?consumer?feign,my?port?is?8761

          可見瀏覽器的請求成功調用了consumer服務的接口,consumer服務也成功地通過feign成功的調用了provider服務的接口。

          使用sc loadbanlancer作為負載均衡

          使用spring cloud loadbanlancer作為負載均衡器。通過修改provider的端口,再在本地啟動一個新的provider服務,那么本地有2個provider 服務,端口分別為8761 和8762。在瀏覽器上多次調用http://localhost:8763/getInfoByFeign,瀏覽器會交替顯示:

          my?name?is?consumer?feign,my?port?is?8761
          my?name?is?consumer?feign,my?port?is?8762

          注冊中心provider服務也會顯示兩個示例

          使用nacos作為配置中心

          父工程添加nacos配置版本,另一個是用來解決最新版本導致的問題:

          <alibaba.nacos.version>2.0.3alibaba.nacos.version>
          <spring-cloud.bootstrap.version>3.0.4spring-cloud.bootstrap.version>

          ?
          <dependency>
          ????<groupId>com.alibaba.cloudgroupId>
          ????<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
          ????<version>${spring-cloud-alibaba.version}version>
          dependency>

          <dependency>
          ????<groupId>org.springframework.cloudgroupId>
          ????<artifactId>spring-cloud-starter-bootstrapartifactId>
          ????<version>${spring-cloud.bootstrap.version}version>
          dependency>

          服務提供者provider添加依賴:

          <dependency>
          ????<groupId>com.alibaba.cloudgroupId>
          ????<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
          dependency>

          <dependency>
          ????<groupId>org.springframework.cloudgroupId>
          ????<artifactId>spring-cloud-starter-bootstrapartifactId>
          dependency>

          在bootstrap.yml(一定是bootstrap.yml文件,不是application.yml文件)文件配置以下內容:

          server:
          ??port:?8762
          spring:
          ??application:
          ????name:?provider
          ??cloud:
          ????nacos:
          ??????config:
          ????????enabled:?true
          ????????server-addr:?127.0.0.1:8848
          ????????file-extension:?yml
          ????????prefix:?provider
          ??profiles:
          ????active:?dev

          在上面的配置中,配置了nacos config server的地址,配置的擴展名是ymal(目前僅支持yml和properties)。注意是沒有配置server.port的,sever.port的屬性在nacos中配置。上面的配置是和Nacos中的dataId 的格式是對應的,nacos的完整格式如下:

          ${prefix}-${spring.profile.active}.${file-extension}
          • prefix 默認為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
          • spring.profile.active 即為當前環(huán)境對應的 profile,詳情可以參考 Spring Boot文檔。注意:當 spring.profile.active 為空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 {file-extension}
          • file-exetension 為配置內容的數(shù)據(jù)格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型。啟動nacos,登陸localhost:8848/nacos,創(chuàng)建一個data id ,完整的配置如圖所示:

          源碼下載:

          https://github.com/java-aodeng/springcloud2020-demo-1

          參考資料:

          https://www.fangzhipeng.com/spring-cloud.html https://spring.io/projects/spring-cloud https://www.springcloud.cc/ https://blog.csdn.net/llllllllll4er5ty/article/details/104425284

          推薦閱讀:

          世界的真實格局分析,地球人類社會底層運行原理

          不是你需要中臺,而是一名合格的架構師(附各大廠中臺建設PPT)

          企業(yè)IT技術架構規(guī)劃方案

          論數(shù)字化轉型——轉什么,如何轉?

          企業(yè)10大管理流程圖,數(shù)字化轉型從業(yè)者必備!

          【中臺實踐】華為大數(shù)據(jù)中臺架構分享.pdf

          華為的數(shù)字化轉型方法論

          華為如何實施數(shù)字化轉型(附PPT)

          超詳細280頁Docker實戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)


          瀏覽 65
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青青青青青草视频 | 日本三级网站 | 18禁网站色| 国产黄色免费视频 | 超碰中文在线字幕 |