接著上一次的nacos初步講解和安裝
如果啟動失敗的話 上一篇也是講解過的.
本文章開始服務註冊和發現
工程準備
建立一個父模組將裡面的src刪除即可留下.idea和pox.xml檔案
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.3.RELEASE</version>
</parent>
<!-- 全域性版本控制 -->
<properties>
<springCloud.version>Hoxton.SR7</springCloud.version>
<springCloud-alibaba.version>2.1.1.RELEASE</springCloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- springCloud 版本控制 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${springCloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 阿里 版本庫 依賴 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${springCloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
建立consumer工程模組和provide工程模組(呼叫者、服務者)
1.在consumer模組當中新增依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 服務發現 nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2. 手寫啟動類
/**
* @description: 楊不易網站:www.yangbuyi.top
* @program: springcloudalibabaparent
* @ClassName: AppConsumer
* @create: 2020-08-16 20:57
* @author: yangbuyi
* @since: JDK1.8
* @AppConsumer:
**/
@SpringBootApplication
@Slf4j
// nacos 服務發現 客戶端
@EnableDiscoveryClient
public class AppConsumer {
public static void main(String[] args) throws UnknownHostException {
ConfigurableApplicationContext application = SpringApplication.run(AppConsumer.class, args);
Environment env = application.getEnvironment();
String ip = InetAddress.getLocalHost().getHostAddress();
String port = env.getProperty("server.port");
String path = env.getProperty("server.servlet.context-path");
String hj = env.getProperty("spring.profiles.active");
log.info("\n----------------------------------------------------------\n\t" +
"Application yangbuyiCloud is running! Access URLs:\n\t" +
"Local: \t\thttp://localhost:" + port + path + "/\n\t" +
"當前配置環境: \t\t當前環境為:" + hj + "/\n\t" +
"----------------------------------------------------------");
}
/**
* @Description: 楊不易個人網址:http://yangbuyi.top
* 功能描述: @LoadBalanced 讓rest 擁有負載均衡的能力
* @Param: @RestTemplate http請求服務
* @return:
* @Author: TeouBle
* @Date: 2020/8/16 20:58
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
3.在啟動類上新增註解
nacos 服務發現 客戶端 @EnableDiscoveryClient
4.在配置檔案新增新增配置
server:
port: 5000
servlet:
context-path: /cloud-user
spring:
application:
name: consumer-user
cloud:
nacos:
discovery:
#nacos服務的地址 不要加http
# 可以寫一個地址 叢集會自動獲取服務 但是為了安全起見還是全部寫上
# server-addr: 127.0.0.1:8849,127.0.0.1:8850,127.0.0.1:8851
# 使用nginx反向代理
server-addr: 192.168.43.204:80
register-enabled: true
# server-addr: localhost:8850
name: 預設環境
上面看不懂的話也可直接寫這樣子的
server:
port: 5000
servlet:
context-path: /cloud-user
spring:
application:
name: user-client
# 將當前工程註冊到nacos上面
cloud:
nacos:
discovery:
server-addr: localhost:8848 #nacos服務的地址 不要加http
5.啟動工程後, 在nacos當中查詢服務列表
nacos服務沒有下載的去觀看上一章節的nacos服務安裝和錯誤解決
6.使用相同方式 把provide服務註冊到nacos上
建立啟動類
package top.yangbuyi;
/**
* @description: 楊不易網站:www.yangbuyi.top
* @program: springcloudalibabaparent
* @ClassName: top.yangbuyi.AppConsumer
* @create: 2020-08-16 20:57
* @author: yangbuyi
* @since: JDK1.8
* @AppConsumer:
**/
@SpringBootApplication
@Slf4j
// nacos 服務發現 客戶端
@EnableDiscoveryClient
public class AppProvide {
public static void main(String[] args) throws UnknownHostException {
ConfigurableApplicationContext application = SpringApplication.run(AppProvide.class, args);
Environment env = application.getEnvironment();
String ip = InetAddress.getLocalHost().getHostAddress();
String port = env.getProperty("server.port");
String path = env.getProperty("server.servlet.context-path");
String hj = env.getProperty("spring.profiles.active");
log.info("\n----------------------------------------------------------\n\t" +
"Application yangbuyiCloud is running! Access URLs:\n\t" +
"Local: \t\thttp://localhost:" + port + path + "/\n\t" +
"當前配置環境: \t\t當前環境為:" + hj + "/\n\t" +
"----------------------------------------------------------");
}
/**
* @Description: 楊不易個人網址:http://yangbuyi.top
* 功能描述: @LoadBalanced 讓rest 擁有負載均衡的能力
* @Param: @RestTemplate http請求服務
* @return:
* @Author: TeouBle
* @Date: 2020/8/16 20:58
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
建立yml配置
server:
port: 7000
servlet:
context-path: /cloud-yby
spring:
application:
name: provide-goods # 服務名稱 服務ID
cloud:
nacos:
discovery:
server-addr: localhost:8085 # nacos服務地址 單個服務
name: 預設環境
7. 啟動兩個服務 consumer和 provide 去nacos檢視是否有
8. 在consumer工程中通過服務發現呼叫provide 工程
自己對著圖片的打一遍 別偷懶
到此即可通過 consumer訪問provide工程當中的方法啦
9.測試
nacos有問題請評論區聯絡我
完結 下一章節 nacos叢集