首先明白注册中心是什么?有什么用?微服务为什么需要注册中心?
所以简单说下:注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。
在分布式学习平台之搭建springcloud分布式工程(1)的项目基础上集成Eureka注册中心。
原项目结构:
步骤:
1.在study_platform项目右键新建module项目study_platform_service_eureka7010:
2.在pom.xml添加依赖:
<?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>study_platform</artifactId>
<groupId>com.cxh.study.platform</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>study_platform_service_eureka7010</artifactId>
<dependencies>
<!--eureka-server服务端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 修改后立即生效,热部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
3.编写application.yml配置文件:
server:
port: 7010
eureka:
instance:
hostname: localhost #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
编写启动类:
package com.cxh.study.platform;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* Created by ASUS on 2019/2/7
*
* @Authod Grey Wolf
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaAPP {
public static void main(String []args){
SpringApplication.run(EurekaAPP.class,args);
}
}
启动EurekaApp,打开网页:http://localhost:7001/
出现这个页面,说明项目初步集成成功。
接下来修改服务消费者,服务提供者项目,让这些项目在注册中心注册。
在分布式学习平台之搭建springcloud分布式工程(1)的项目基础上修改配置。
1.修改服务提供者:
在pom.xml增加依赖:
<!--注册中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
2.修改application.yml配置文件:
# 服务端口号
server:
port: 8010
spring:
#服务名称
application:
name: provider8010
#数据源配置
datasource:
name: springboot
type: com.alibaba.druid.pool.DruidDataSource
#druid相关配置
druid:
#mysql驱动
driver-class-name: com.mysql.jdbc.Driver
#基本属性
url: jdbc:mysql://127.0.0.1:3306/studyplatform?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
username: root
password: 123456
#配置初始化大小/最小/最大
initial-size: 1
min-idle: 1
max-active: 20
#获取连接等待超时时间
max-wait: 60000
#间隔多久进行一次检测,检测需要关闭的空闲连接
time-between-eviction-runs-millis: 60000
#mybatis配置
mybatis:
mapper-locations:
- classpath:mapper/*.xml
type-aliases-package: com.cxh.study.platform.entity
#注册中心erueka
eureka:
client:
service-url:
defaultZone: http://localhost:7010/eureka
在启动类ProviderApp.class增加注册中心客户端注解:
package com.cxh.study.platform;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
* Created by ASUS on 2019/2/7
*
* @Authod Grey Wolf
*/
@SpringBootApplication
@EnableEurekaClient//注册中心客户端
public class ProviderApp {
public static void main(String[] args){
SpringApplication.run(ProviderApp.class,args);
}
}
运行启动类:打开网页http://localhost:8010
2.修改服务消费者(跟服务提供者一样的修改步骤):
在pom.xml增加依赖:
<!--注册中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
修改application.yml配置文件:
server:
port: 9010
spring:
application:
name: consumer9010
#视图
thymeleaf:
prefix: classpath:/thymeleafs/
check-template-location: true
suffix: .html
encoding: UTF-8
cache: false
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://localhost:7010/eureka
在启动类ConsumerApp.class增加注册中心客户端注解:
package com.cxh.study.platform;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
* Created by ASUS on 2019/2/7
*
* @Authod Grey Wolf
*/
@SpringBootApplication
@EnableEurekaClient
public class ConsumerApp {
public static void main(String[]args){
SpringApplication.run(ConsumerApp.class,args);
}
}
运行启动类:打开网页http://localhost:9010
此时刷新或者打开注册中心的网页:http://localhost:7010/
发现这2个微服务已经注册进注册中心了。
项目集成eureka注册中心完成。