天天看點

springcloud服務注冊與服務調用

1.springcloud版本

springboot和springcloud版本必須要對應,可檢視如下連結

https://start.spring.io/actuator/info

2.nacos的使用

2.1下載下傳nacos

windows系統:https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.zip

Linux系統:https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz

解壓下載下傳好的檔案,找到運作檔案,啟動就可以了

2.2安裝依賴

父工程,全局依賴管理

com.alibaba.cloudspring-cloud-alibaba-dependencies2.1.1.BUILD-SNAPSHOTpomimport      

微服務注冊中心

com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery      

微服務配置中心(就是把Application.yml的配置放在雲端,Nacos雲端改了以後,項目自動重新整理)

com.alibaba.cloudspring-cloud-starter-alibaba-nacos-config      

2.3配置參數

# application.yml     server:       port: 8081spring:       application:         name: nacos-provider       cloud:         nacos:           discovery:             server-addr: 127.0.0.1:8848management:       endpoints:         web:           exposure:             include:*      

微服務配置中心

# bootstrap.yml     spring:       application:         name: nacos-config       cloud:         nacos:           config:             server-addr: 127.0.0.1:8848      

2.4基礎案例

Nacos自帶Ribbon,提供負載均衡能力

服務提供者

@SpringBootApplication     @EnableDiscoveryClientpublic class NacosProviderDemoApplication {    public static void main(String[] args) {             SpringApplication.run(NacosProviderDemoApplication.class, args);         }         @RestController    public class EchoController {             @GetMapping(value = "/echo/{string}")        public String echo(@PathVariable String string) {            return "Hello Nacos Discovery " + string;             }         }     }      

服務消費者

@SpringBootApplication     @EnableDiscoveryClientpublic class NacosConsumerApp {         @RestController    public class NacosController{             @Autowired        private RestTemplate restTemplate;             @GetMapping("/echo/app-name")        public String echoAppName(){        return restTemplate.getForObject("服務提供者的服務名稱");             }         }    // 服務調用    @Bean         @LoadBalanced          public RestTemplate restTemplate(){        return new RestTemplate();         }    public static void main(String[] args) {             SpringApplication.run(NacosConsumerApp.class,args);         }     }      

2.5服務分類

  • namespace(命名空間): 用于區分不同的部署環境,例如正式,測試…
  • groupId(分組): 服務分組
  • dataId(服務ID): 具體的服務

指定分組

spring:       cloud:         nacos:           config:             namespace: b3404bc0-d7dc-4855-b519-570ed34b62d7         group: DEVELOP_GROUP      

2.6持久化配置

  • 1.安裝資料庫,版本要求:5.6.5+
  • 2.初始化mysql資料庫,資料庫初始化檔案:nacos-mysql.sql
  • 3.修改conf/application.properties檔案,增加支援mysql資料源配置(目前隻支援mysql),添加mysql資料源的url、使用者名和密碼。
spring.datasource.platform=mysql     db.num=1db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=truedb.user=nacos_devtest     db.password=youdontknow      

2.7叢集配置

在nacos的解壓目錄nacos/的conf目錄下,有配置檔案cluster.conf,請每行配置成ip:port。(請配置3個或3個以上節點)

# ip:port200.8.9.16:8848     200.8.9.17:8848     200.8.9.18:8848      

 3.服務調用

3.1openFeign

openfeign對feign進行進一步的封裝,添加了springmvc的一些功能,可以用作服務調用。

3.2安裝依賴

首先在父工程配置springcloud依賴管理

            org.springframework.cloudspring-cloud-dependencies2020.0.2pomimport      

微服務中服務調用依賴

        org.springframework.cloudspring-cloud-starter-openfeign      
           

3.3基本使用

1)在調用端啟動類添加注解

@EnableFeignClients      

2)在調用端建立interface,使用注解指定調用服務名稱,定義調用方法的路徑

@FeignClient注解用于指定從哪個服務中調用功能,名稱與被調用的服務名保持一緻。

@GetMapping注解用于對被調用的微服務進行位址映射。

@PathVariable注解一定要指定參數名稱,否則出錯。

@Component注解防止在其他位置注入VodClient時報錯。

@Component     @FeignClient("xueyuan-vidservice")public interface VodClient {    //定義調用方法的路徑         @DeleteMapping("/vidservice/vod/{videoId}")    public R deleteAliyunVideo(@PathVariable("videoId") String videoId);     }      

3)通過@Autowired注解,注入VodClient接口,然後調用裡面的方法

繼續閱讀