微服务-springcloud(eureka实践, nacos实践)

Spring 体系图

在这里插入图片描述

版本关系

在这里插入图片描述

eureka 实践

1 父工程依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.14</version>
</parent>
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

2 搭建Eureka Server

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
server:port: 8761
eureka:instance:hostname: localhostclient:registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: 

3 搭建服务提供者

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
eureka:client:serviceUrl:defaultZone: http://127.0.0.1:8761/eureka/spring:application:name: eureka-provider
server:port: 9000

4 搭建消费者

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/
spring:application:name: eureka-consumer
server:port: 9001

5 服务消费方

5.1 使用RestTemplate 进行RPC调用

@Bean
@LoadBalanced
public RestTemplate restTemplate(){return new RestTemplate();
}

5.2 真实调用

@GetMapping("/hello/{id}")
public String hello(@PathVariable String id){return restTemplate.getForObject("http://EUREKA-PROVIDER/hello/"+id, String.class);
}

注意:

@LoadBalanced这个注解一定要加上(org.springframework.cloud.client.loadbalancer)

集群模式:

https://cloud.tencent.com/developer/article/1730733

Naco 实践

1 首先我们需要安装 Nacos Server
可以选用Docker
2 父POM

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><!--这里的版本一定要对应上 和下面的spring-cloud-alibaba-dependencies里的spring boot 版本 --><version>2.4.2</version>
</parent>
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.1</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

3 服务提供者

server:port: 8088
spring:application:name: ddd-providercloud:nacos:discovery:server-addr: 127.0.0.1:8848
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

4 服务消费者

server:port: 8089application:name: ddd-consumercloud:nacos:discovery:server-addr: 127.0.0.1:8848
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId><version>3.0.1</version></dependency>

5 调用方式和上面的一样,使用负载均衡的RestTemplate 进行调用