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接口,然後調用裡面的方法