SpringCloud微服务入门:创建EurekaServer 服务注册与发现服务

介绍

           SpringCloud是基于springBoot的一整套实现微服务的框架.Eureka为springCloud架构中首选推荐的服务治理组件.从分布式或者微服务的角度来讲,将一个大的项目划分成许多小的项目,首当其冲的第一个问题就是子项目之间如何通讯的问题.Eureka是解决微服务架构中服务实例维护的一种技术解决方案,说白了就是管理消费者和生产者注册,一下会通关两个服务来说明。

 

一,eureka中server的简单搭建

创建eurekaServer 服务

创建eureka的maven项目

点击下一步 点击next

等待maven加载完成如下面图

加入springcloud eureka相关依赖

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>micro-serivce-demo</artifactId>
        <groupId>com.huangan</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka</artifactId>

    <name>eureka</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!-- eurkaServer 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>1.4.3.RELEASE</version>
        </dependency>
        <!-- 安全依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
                <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

通关application.yml进行eureka配置

server:
  port: 9100
  #因为当前的eureka 是单机的,所以我们需要做一些配置
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      #defaultZone: http://localhost:9100/eureka/
      defaultZone: http://user:123@localhost:9100/eureka/
security:
  basic:
    enabled: true #开启安全配置,也就是需要密码,如果不需要设置为 false 即可,注意这个参数必须放在 application.yml中不允许放在boostrost
  user:
    password: 123 #设置账户名与密码
    name: user

声明(默认配置eureka配置时可以吧defaultZone 写成自己eureka服务的路径,因为如果不写入他会自己去找服务的注册,如果没有就会异常输出,如果不配置账号密码,服务启动时会在后台生成密码,

如果不想配置密码,security:basic:enabled: false,吧defaultZone 改为http://localhost:9100/eureka/即可,后面需要自己获取后台输出的密码)

 

创建eureka启动来

package com.huangan;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * Hello world!
 *
 */
@SpringBootApplication
@EnableEurekaServer
public class EurekaApp
{
    public static void main( String[] args )
    {
            SpringApplication.run(EurekaApp.class);;
    }
}

启动服务,访问eureka地址:http://localhost:9100/eureka/

通关上面路径访问输入账号密码,就会显示eureka的管理页面,Application下面就是注册的服务,下面就是服务的注册于发现。

 

二,消息生产者proviede-rorder服务注册

下面的代码细节不会多讲,以上在文章https://blog.csdn.net/weixin_45863786/article/details/109521592 详细创建说明过

导入eureka的依赖


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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

 

application.yml的配置

server:
  port: 7900 #程序启动服务的端口号
spring:
  application:
   name: provider-user #访问应用的名称
eureka:
 client:
   service-url:
     defaultZone: http://user:123@localhost:9100/eureka

编写启动类

package com.huangan;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * Hello world!
 *
 */
@SpringBootApplication
@EnableEurekaClient
public class UserApp
{
    public static void main( String[] args )
    {
        SpringApplication.run(UserApp.class);
    }
}

运行服务,通关eureka服务管理界面查看服务是否被注册

通过上面,以及发现provider-user服务以及注册了,下面就是通过consumer-order服务进行eureka注册且使用RestTemplate 获取信息

 

三,消息消费者consumer-order服务注册

、导入eureka的依赖


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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

配置application.yml文件

server:
  port: 8900
spring:
  application:
    name: consumer-order
url:
  value: http://localhost:7900/user/ #自己写了一个消息生产者地址
eureka:
 client:
   service-url:
     defaultZone: http://user:123@localhost:9100/eureka

编写控制器代码

第一种使用生产者地址获取接口数据



@RestController
public class OrderController {
    @Autowired
    private RestTemplate restTemplate; //spring 提供访问rest接口的模板对象
 

    @Value("${url.value}")
    private String url;

    @GetMapping("/order/{id}")
    public User getUser(@PathVariable Long id){
      
        User user= restTemplate.getForObject(url+"/"+id,User.class);
        System.out.println("进入数据:"+user.toString());
        return  user;
    }
}

第二种使用EurekaClient 获取生产者地址


@RestController
public class OrderController {
    @Autowired
    private RestTemplate restTemplate; //spring 提供访问rest接口的模板对象
    @Autowired
    private EurekaClient eurekaClient;


    @GetMapping("/order/{id}")
    public User getUser(@PathVariable Long id){
        InstanceInfo instanceInfo = eurekaClient.getNextServerFromEureka("PROVIDER-USER",false);
        String userUrl =  instanceInfo.getHomePageUrl();
        User user= restTemplate.getForObject(userUrl+"/user/"+id,User.class);
        System.out.println("进入数据:"+user.toString());
        return  user;
    }
}

启动服务通关eureka页面进行查询是否已注册

下一步访问consumer-order进口路径查看是否获取消费者数据

简单的实现springcloud 的eureka服务注册已完成,下一篇会讲到ribbon 多服务之间负载均衡整合配置

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值