廢話
大致流程其實跟SpringCloud + Eureka沒太大區別,主要的坑就在於內嵌的負載均衡需要從默認的Ribbon升級爲Loadbalancer
準備工作
1、搭一個Nacos
https://nacos.io/zh-cn/docs/quick-start.html
直接按照上方鏈接的官網教程安裝一個單機版的Nacos,具體過程不在贅訴。
需要注意的是,安裝Maven的時候,記得將數據源切換成阿里雲的或者其他國內雲的鏡像地址,不然的話在構建的時候有可能有些包找不到。
//打開maven根目錄的conf文件夾,打開settings.xml文件,在合適的地方加上下面這一段
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
2、準備兩個SpringCloud項目
一個做服務提供者,一個做消費者
開搞
1、導包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
<!-- 使用spring loadbalancer,棄用ribbon -->
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
2、application.yml配置,兩者之間的區別就在於服務名稱
spring:
application:
#name: test-server #服務提供者
name: test-service #消費者
cloud:
nacos:
discovery:
server-addr: 192.168.2.200:8848
loadbalancer:
ribbon:
enabled: false #禁用ribbon
3、入口Application類加上註解
@EnableDiscoveryClient
@EnableFeignClients
@ComponentScan(basePackages = ("com.xx.xx.*"))//自己改成你的包名
@SpringBootApplication
4、編寫一個服務提供接口(服務提供者端)
@RestController
public class TestController {
@RequestMapping(value = "/test", method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public String test(String str) {
log.error("服務者:"+str);
return "測試接口:" + str;
}
}
5、新建一個消費接口(消費者端)
微服務消費服務主要有三種方式(WebClient、RestTemplate、Feign),我這裏用的是Feign,感覺這個用起來舒服點,至於這三個東西的性能方面有沒有區別,我也不知道,如果你知道,請告訴我一聲。
@Component
@FeignClient(value = "test-server") //對應服務提供者的ID
public interface TestService {
@GetMapping(value = "/test")
String test(@RequestParam(name = "str") String str);
}
6、新建一個接口消費服務(消費者端)
@Slf4j
@RestController
public class TestController {
@Autowired
TestService testService;
@RequestMapping(value = "/test", method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public String test(String str) {
log.error("消費者:" + str);
return testService.test(str);
}
}
完事,自行調一下消費者端的test接口即可。