一、介绍
1.背景
在早期,由于系统一般业务简单,涉及到的服务比较少,我们可以通过设计静态的配置来完成服务之间的调用。比如服务A和服务B,我们通过配置,让他们相互通信。但是随着业务不断发展和数据量不断增加,如果还是采取手工配置来维护,就会很复杂。比如说系统扩容、负载均衡、信息变更等,一旦系统有点变化,修改量是很巨大的,而且很容易造成遗漏和错误。为了解决这些问题,引入了服务治理概率。
2.服务注册
在服务治理过程中都需要进行服务注册。比如我们新建了一个服务A,我们会告诉大家服务A的地址、端口、版本、通信协议等。服务注册可以理解为,我们在一个大家约定的地方,发布一个通知,告诉大家服务相关信息,注册中心就是这样的一个公共的地方。注册中心还会去管理这些服务,比如通过心跳的方式来判断服务是否可用,从而来达到故障转移。
3、服务发现
有了服务注册中心之后,我们每次连接服务不在需要直接去服务真实的地址去连接,我们可以通过注册中心来查找服务。比如服务B调用服务A,服务A已经在注册中心注册,服务B在调用的时候可以向注册中心发起请求,注册中心找到服务A,从而调用服务A。注册中心还可以设置负载均衡和缓存策略等。
二、搭建服务注册中心
创建spring boot项目,命名为eureka-server,在pom.xml添加相关引用
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.15.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
spring boot ymal配置
spring:
application:
name: eureka-server
server:
port: 1111
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
spring boot启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
SpringApplication application=new SpringApplication(Application.class);
application.run(args);
}
}
启动项目后输入,在浏览器中输入localhost:1111,会查看到相关服务注册中心页面。