Eureka:服务治理(入门篇)

前言

近来微服务越来越火,出于探究的目的,初次接触了Spring Cloud(基于Spring Boot实现的微服务架构开发工具),Spring cloud体系中比较常用的组件=Eureka(服务注册中心)+Feign(生产者)+client(消费者/服务)+zuul(网关路由)+Hystrix(熔断降级)+kafka(统一日志服务器)

服务治理:Spring Cloud Eureka

服务治理是微服务架构中最为核心和基础的模块,主要用来实现各个微服务实例的自动化注册与发现

基础架构

服务治理的基础架构包括三个核心元素:

  • 服务注册中心:Eureka提供的服务端,提供服务的注册与发现的功能,也就是我们即将实现的eureka-service

  • 服务提供者:提供服务的工程,可以是Spring Boot应用,也可以是其他技术平台,遵守Eureka的通信机制,将自己提供的服务注册到注册中心,也就是我们即将实现的eureka-client应用

  • 服务消费者:消费者应用从服务注册中心获取服务列表,知晓如何调用其所需的服务,可以使用Rabbon或者Feign实现

Eureka服务端/服务注册中心

搭建服务注册中心,创建一个基础的Spring boot工程,命名为eureka-server,在pom文件引入必要的依赖:

    	<parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.1.RELEASE</version>
        </parent>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
	
		 <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>

通过@EnableEurekaServer 注解 启动一个服务注册中心提供给其他应用

 /**
   * 注册中心
   */
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

配置application.yml,代码如下:

server:
      port: 8761
    eureka:
      instance:
        prefer-ip-address: true # 允许使用ip地址定义注册中心地址,默认false
        hostname: localhost
      client:
        registerWithEureka: false  # 代表不向注册中心注册自己
        fetchRegistry: false   # 由于注册中心的职责就是维护服务实例,不必去检索服务
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    spring:
      application:
        name: eurka-server

启动项目,访问:http://localhost:8761/
在这里插入图片描述

Eureka Client/注册服务提供者

接下来让我们把提供服务的工程加入到服务注册中心,创建服务提供者工程,pom文件配置如下:

 	<parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.1.1.RELEASE</version>
     </parent>
     <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>	

application.yml配置如下:

   server:
      port: 8762
    spring:
      application:
        name: service-hi  # 为服务命名
    eureka:
      client:
        serviceUrl:
          defaultZone:  http://localhost:8761/eureka  # 指定服务注册中心地址

在主类中添加@EnableEurekaClient注解;( 注:使用@EnableEurekaClient的情景,就是在服务治理采用eureka作为注册中心的时候 )

   @SpringBootApplication
    @EnableEurekaClient
    @RestController
    public class EurekaClientApplication {
    	public static void main(String[] args) {
          	  SpringApplication.run(EurekaClientApplication.class, args);
        }
    
        @Value("${server.port}")
        String port;
    
        @RequestMapping("/hi")
        public String home(@RequestParam(value = "name", defaultValue = "lucas") String name) {
            return "hi " + name + " ,i am from port:" + port;
        }
    }

本人偷懒了,demo代码都写在启动类上
然后分别启动服务注册中心工程和服务端工程,服务注册中心打印注册信息,表示服务注册成功
在这里插入图片描述
在这里插入图片描述

参考资料

https://blog.csdn.net/forezp/article/details/69696915
http://projects.spring.io/spring-cloud/spring-cloud.html#_spring_cloud_netflix ( 官方文档 )
电子书:Spring Cloud微服务实战

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值