spring cloud Eureka

1 服务搭建

  • springboot版本2.0.2.RELEASE
  • springcloud版本Finchley.SR1

springcloud依赖版本管理,引入这个后当前pom或者子pom都不需要再显示的使用版本号。

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version> <!-- Finchley.SR1-->
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

1.1 搭建服务治理中心

说明:不同的springboot版本需要不同的springcloud版本

1) 引入依赖

 <!-- eureka 服务器端依赖 -->
<dependency>
          <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>

2) 编写启动类

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}

3) 准备配置文件(application.properties/ application.yml)

# 服务名称
spring.application.name=eureka-server
# 端口号
server.port=9999
# eureka配置
eureka.client.service-url.defaultZone=http://localhost:9999/eureka/
# 是否从其他的服务中心同步服务列表
eureka.client.fetch-registry=false
# 是否把自己作为服务注册到其他服务注册中心
eureka.client.register-with-eureka=false

# 编码设置
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

4)监控页面
在这里插入图片描述
监控页面参数说明参考:https://blog.csdn.net/qq_25112523/article/details/83028529

1.2 搭建生产者(下游服务)

1)准备依赖

 <!-- eureka 客户端依赖 -->
<dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>

2)编写启动类

@SpringBootApplication
@EnableEurekaClient
public class EurekaProvider1Application {
    public static void main(String[] args) {
        SpringApplication.run(EurekaProvider1Application.class, args);
    }
}

3)准备配置文件(application.properties/ application.yml)

eureka.client.serviceUrl.defaultZone=http://127.0.0.1:9999/eureka/
server.port=7709
spring.application.name=service-provider1

spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

4)编写测试controller

@GetMapping("/infor")
    public Map<String,String> getInfor(){
        count++;
        System.out.println(this.port+"被第"+count+"次调用");
        Map<String,String> re = new HashMap<>();
        re.put("message","消费者调用成功");
        return re;
    }

5)启动查看效果
在这里插入图片描述

1.3 搭建消费者(上游服务)

1)准备依赖

    <!-- eureka 客户端依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!-- ribbon 依赖 ,用来实现负载均衡-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>

2)编写启动类、实例化RestTemplate

@SpringBootApplication
@EnableEurekaClient
public class EurekaConsumer1Application {

    public static void main(String[] args) {
        SpringApplication.run(EurekaConsumer1Application.class, args);
    }
    
    /**
     * 将该bean放入spring容器中管理;
     * 开始负载均衡
     * @return
     */
    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
       return new RestTemplate();
    }

}

3)准备配置文件(application.properties/ application.yml)

server.port=8081
spring.application.name=service-consumer-ribbon
eureka.client.serviceUrl.defaultZone=http://localhost:9999/eureka/

spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

4)编写测试controller

@RestController
public class TestController {
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/cmsInfor")
    public String getInfor(){
      // service-provider1 服务端名称  infor服务端url
        String message = this.restTemplate.getForObject("http://service-provider1/infor",String.class);
        System.out.println(message);
       return message;
    }
}

5)启动并运行查看效果
在这里插入图片描述
在这里插入图片描述

1.4 服务搭建过程中遇到的问题

问题1:eureka server 启动报错 No qualifying bean of type ‘javax.servlet.Filter’ available
将版本
springboot 2.2.1.RELEASE
springcloud Finchley.SR1
改为
springboot 2.0.2.RELEASE
springcloud Finchley.SR1

问题2:springcloud依赖下载慢
在pom引入

<repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值