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

Spring 体系图

版本关系

eureka 实践

1 父工程依赖

bash 复制代码
<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

bash 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
yml 复制代码
server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: 

3 搭建服务提供者

bash 复制代码
<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>
yml 复制代码
eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8761/eureka/

spring:
  application:
    name: eureka-provider
server:
  port: 9000

4 搭建消费者

bash 复制代码
<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>
yml 复制代码
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
spring:
  application:
    name: eureka-consumer
server:
  port: 9001

5 服务消费方

5.1 使用RestTemplate 进行RPC调用

java 复制代码
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}

5.2 真实调用

java 复制代码
@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

xml 复制代码
<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 服务提供者

yml 复制代码
server:
  port: 8088
spring:
  application:
    name: ddd-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
xml 复制代码
<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 服务消费者

yml 复制代码
server:
  port: 8089
  application:
    name: ddd-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
xml 复制代码
<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 进行调用

相关推荐
Code季风16 小时前
Gin Web 层集成 Viper 配置文件和 Zap 日志文件指南(下)
前端·微服务·架构·go·gin
Code季风16 小时前
Gin Web 服务集成 Consul:从服务注册到服务发现实践指南(下)
java·前端·微服务·架构·go·gin·consul
万物皆字节1 天前
spring cloud负载均衡之FeignBlockingLoadBalancerClient、BlockingLoadBalancerClient
spring cloud
掘金-我是哪吒1 天前
分布式微服务系统架构第156集:JavaPlus技术文档平台日更-Java线程池使用指南
java·分布式·微服务·云原生·架构
Ken_11151 天前
SpringCloud系列(49)--SpringCloud Stream消息驱动之实现生产者
spring cloud
DavidSoCool1 天前
RabbitMQ使用topic Exchange实现微服务分组订阅
分布式·微服务·rabbitmq
掘金-我是哪吒1 天前
分布式微服务系统架构第158集:JavaPlus技术文档平台日更-JVM基础知识
jvm·分布式·微服务·架构·系统架构
Kookoos2 天前
ABP VNext + Tye:本地微服务编排与调试
微服务·云原生·架构·tye
呆萌的代Ma2 天前
解决Mac上的老版本docker desktop 无法启动/启动后一直转圈/无法登陆账号的问题
macos·docker·eureka
guojl2 天前
Ribbon原理和源码分析
spring cloud·微服务