微服务架构是很火了。用了一天过滤式的看了下概念,感觉对目前公司的架构还是可以有一点帮助的。概念性的东西在网上已经很多大神解释了,本文是个人学习的一些记录。和大家一样我也是没接触过spring clound,连spring boot都比较少用。
听说eureka要闭源了,但是看了下这个比其他几个服务发现框架简单。下面先搭起一个eureka注册中心:
这个是项目目录结构,使用maven构造一个简单的maven项目,因为spring clound里面的框架集都是基于spring boot的,所以要引入spring boot。
pom的配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<!-- 心跳 -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency> -->
</dependencies>
实在找不到xml的设置,吐槽一下,知道怎么设置xml高亮的麻烦告诉一下。
下面是java代码:
/**
* 注册中心主程序入口
*/
@EnableEurekaServer
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
@SpringBootApplication 这个标明了spring boot,@EnableEurekaServer这个则代表是eureka服务端。
application.properties的配置
server.port=8011
#是否将自己注册到Eureka Server,默认为true
eureka.client.register-with-eureka=false
#是否从Eureka Server获取注册信息,默认为true
eureka.client.fetch-registry=false
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://localhost:8011/eureka/
这个就是一个简单的eureka服务端。启动之后可以访问http://localhost:8011,则出现如图:
但注册中心只是注册别人的服务,就像某东、某宝,需要商家注入提供服务才行。
所以我们还需要一个client端来提供服务。
我这里提供一个计算的服务:
这个是项目目录结构,pom文件如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath />
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
application.properties的配置:
spring.application.name=test-service
server.port=8033
eureka.client.serviceUrl.defaultZone=http://localhost:8011/eureka/
spring boot入口文件配置:
@EnableEurekaClient
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
@EnableEurekaClient 这个标签是用来发现服务,当前服务启动就会被发现。具体的话没看过源码,暂时不知道原理。
OK,配置完成之后启动就可以看到在刚刚的服务管理台看到:
简单的eureka注册服务端,一个客户端完成。