摘要:本文讲述如何快速启动一个项目作为eureka服务注册中心,我们先简述相关的理论知识,然后介绍如何启动一个注册中心。
服务治理在微服务架构中是非常基础也是非常核心的部分,它主要用来实现微服务实例的自动化注册和发现。在我们的服务数量比较少的时候,我们可以通过在配置文件中硬编码的方式,来配置服务的调用地址,比如说在金融系统中,我们有一个借款服务a,有一个账户服务b,在我们服务数量比较少,没做集群时,如果a要调用b可以直接在配置文件中配置服务地址,在早期单体架构或者垂直架构的时候,我们可以这样实现,但是,随着业务的发展,系统功能变得越来越复杂,我们的微服务数量也会变得越来越多,这个时候,我们这种通过配置文件的方式来静态配置就会变得越来越难以维护和拓展。
为了解决微服架构中的服务实例清单维护问题,一些大公司专门研发了用于服务注册与服务发现的服务治理框架。
服务注册:每个微服务在启动的时候会向注册中心注册自己的地址,端口号等信息,注册完之后,注册中心就会维护类似于下方的一个服务清单:
各个微服务与这个注册中心会使用一定的机制,比如说心跳机制,当这个注册中心发现和某个微服务长时间无法进行通讯时,就会剔除这个实例,这样就可以达到一个故障排除的效果。
服务发现:通过借助服务治理框架,微服务之间跨服务调用,不需要再通过指定具体的地址来实现,而是可以通过注册中心使用服务名来发起请求实现调用。服务调用方在调用服务提供方提供的接口的时候,其实并不知道对方服务实例的具体位置,我们发起请求,注册中心通过某种策略,选出一个合适的服务实例来对我们调用方提供服务。
Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在其子项目spring-cloud-netflix中,主要负责完成微服务架构中的服务治理功能。SpringCloud通过为Eureka增加SpringBoot风格的自动化配置,我们只需要通过简单引入依赖和注解配置就能让SpringBoot构建的微服务应用轻松的与Eureka服务体系进行整合。如何启动一个Eureka作为注册中心呢?
1.新建项目
2.引入eureka依赖
3.添加注解
4.修改配置文件
5.启动项目
1.新建项目(注册中心)
新建一个SpringBoot项目eureka_server,作为注册中心,后续的其他项目,都注册在这个注册中心上面。
2.引入eureka依赖
这里和普通springboot项目相比,主要就是需要多引入两个依赖:eureka的,spring-cloud相关的。
eureka-server依赖:
<!--eureka-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
springcloud依赖:
<!--spring-cloud依赖-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.添加注解
在项目的启动类中,添加@EnableEurekaServer注解,将此项目启动为注册中心。
//启动为一个注册中心
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
4.修改配置文件
在配置文件中配置注册中心相关信息
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
参数含义:
默认情况下,该服务注册中心也会将自己作为客户端来尝试注册自己,所以我们要禁用它的客户端注册行为。
register-with-eureka: false:是否注册到eureka服务器,由于自己就是eureka服务器,没有必要注册自身。
fetch-registry: false:
由于注册中心自己的职责就是维护服务实例,所以并不需要去检索服务信息,这里也设置为false。
defultZone:设置eureka服务器所在地址,注册服务和查询服务都依靠这个地址。
5.启动项目
启动项目,访问http://localhost:8761/,
会看到如下画面,说明注册中心启动成功,后续当有服务注册进来时,都会在这里显示。