alibaba-cloud
本項目演示如何使用 spring cloud alibaba系列之服務的注冊于發(fā)現(xiàn)
引入依賴
版本 0.2.1.RELEASE 對應的是 Spring Cloud Finchley 版本镐躲,
版本 0.1.1.RELEASE 對應的是 Spring Cloud Edgware 版本储玫。
-
官方文檔目前推薦的SpringBoot 2.0.6.RELEASE版本。如果注冊不了一般都是版本不對萤皂∪銮睿可以去官方文檔查看對應的版本
如果需要使用已發(fā)布的版本,在dependencyManagement
中添加如下配置裆熙。<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>0.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
然后在 dependencies
中添加自己所需使用的依賴即可使用端礼。
如果您想體驗最新的 BUILD-SNAPSHOT 的新功能,則可以將版本換成最新的版本入录,但是需要在 pom.xml 中配置 Spring BUILDSNAPSHOT 倉庫蛤奥,注意: SNAPSHOT 版本隨時可能更新
<repositories>
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
服務的注冊發(fā)現(xiàn)(Nacos Discovery)
Nacos 是阿里巴巴開源的一個更易于構建云原生應用的動態(tài)服務發(fā)現(xiàn)、配置管理和服務管理平臺僚稿。
如何使用Nacos Discovery Starter 完成 Spring Cloud 應用的服務注冊與發(fā)現(xiàn)
創(chuàng)建服務提供者
新建一個項目 cloud-client
- 引入Nacos Discovery Starter
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 配置Nacos Server地址
server.port=18082
#服務名稱
spring.application.name=cloud-client
#Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
- 啟動類上使用 @EnableDiscoveryClient 注解開啟服務注冊與發(fā)現(xiàn)功能
4 下載 Nacos Server :https://github.com/alibaba/nacos/releases
- 啟動 Server
Linux/Unix/Mac 操作系統(tǒng)凡桥,執(zhí)行命令 sh startup.sh -m standalone
Windows 操作系統(tǒng),執(zhí)行命令 cmd startup.cmd
-
訪問控制臺:http://127.0.0.1:8848/nacos/index.html
0.8版本默認登錄賬號的密碼nacos/nacos.
啟動
出現(xiàn)如下信息說明注冊到nacos成功
nacos控制條界面就會出現(xiàn)注冊的服務
以上步驟向您展示了如何將一個服務注冊到 Nacos蚀同。
創(chuàng)建消費者
新建一個項目 cloud-consumer.配置文件和消費者一樣更換下端口即可缅刽。
server.port=18083
spring.application.name=service-consumer
#Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*
啟動類同樣添加@EnableDiscoveryClient 注冊到nacos
@EnableDiscoveryClient
@SpringBootApplication
public class CloudConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConsumerApplication.class, args);
}
//實例化 RestTemplate 實例
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
新建一個 ConsumerController
@RestController
public class ConsumerController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
private RestTemplate restTemplate;
@Value("${spring.application.name}")
private String appName;
/**
* 通過帶有負載均衡的RestTemplate 和 FeignClient 也是可以訪問的
* @return
*/
@GetMapping("/echo/app-name")
public String echoAppName(){
//使用 LoadBalanceClient 和 RestTemolate 結合的方式來訪問
ServiceInstance serviceInstance = loadBalancerClient.choose("service-provider");
String url = String.format("http://%s:%s/echo/%s",serviceInstance.getHost(),serviceInstance.getPort(),appName);
System.out.println("request url:"+url);
return restTemplate.getForObject(url,String.class);
}
}
分別啟動cloud-client和cloud-consumer刷新nacos
兩個服務都注冊成功
測試
訪問 http://127.0.0.1:18083/echo/app-name 消費者輸出訪問日志說明請求成功
瀏覽器出現(xiàn) 第一個Nacos 程序service-consumer 到此Over 基于Nacos實現(xiàn)的服務注冊發(fā)現(xiàn)已經(jīng)調(diào)用就到此為止。入門還是很簡單的 阿里巴巴大法好蠢络!
Nacos更多配置信息
spring.cloud.nacos.discovery.server-addr #Nacos Server 啟動監(jiān)聽的ip地址和端口
spring.cloud.nacos.discovery.service #給當前的服務命名
spring.cloud.nacos.discovery.weight #取值范圍 1 到 100衰猛,數(shù)值越大,權重越大
spring.cloud.nacos.discovery.network-interface #當IP未配置時刹孔,注冊的IP為此網(wǎng)卡所對應的IP地址腕侄,如果此項也未配置,則默認取第一塊網(wǎng)卡的地址
spring.cloud.nacos.discovery.ip #優(yōu)先級最高
spring.cloud.nacos.discovery.port #默認情況下不用配置芦疏,會自動探測
spring.cloud.nacos.discovery.namespace #常用場景之一是不同環(huán)境的注冊的區(qū)分隔離冕杠,例如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源(如配置、服務)隔離等酸茴。
spring.cloud.nacos.discovery.access-key #當要上阿里云時分预,阿里云上面的一個云賬號名
spring.cloud.nacos.discovery.secret-key #當要上阿里云時,阿里云上面的一個云賬號密碼
spring.cloud.nacos.discovery.metadata #使用Map格式配置薪捍,用戶可以根據(jù)自己的需要自定義一些和服務相關的元數(shù)據(jù)信息
spring.cloud.nacos.discovery.log-name 日志文件名
spring.cloud.nacos.discovery.enpoint #地域的某個服務的入口域名笼痹,通過此域名可以動態(tài)地拿到服務端地址
ribbon.nacos.enabled #是否集成Ribbon 一般都設置成true即可