上一篇文章介绍了一波微服务项目中一个简单的注册中心的搭建,这篇文章将介绍如何将服务注册到注册中心。
(b) 注册服务提供者
在微服务项目中,因为项目根据不同的模块或者功能等依据,被分成了不同的子模块,一个子模块便可以搭建成一个服务。
在不同的服务中,服务与服务之间会产生数据交互的问题,所以一个服务会调用另一个服务,这可以利用rpc远程调用技术实现。
被调用的服务称为服务提供者,而主动去调用的那个服务称为服务消费者。当然所有的服务都必须挂载到注册中心。
假如在一个电商网站的项目中,用户选择好需要购买的商品之后,点击“购买”按钮,此时用户所在的订单服务会调用会员服务来获取会员信息(收件人、地址、电话等)。下图是该场景的原理图:
在此场景下,首先要搭建服务提供者,即搭建会员服务。
创建新的maven项目名为member-service,在pom.xml中添加相关依赖:
<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.M7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot整合eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<!-- 注意: 这里必须要添加, 否则各种依赖有问题 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
然后,在resource文件夹下面新建文件夹application.yml:
###服务启动端口号
erver:
port: 8000
###服务名称(服务注册到eureka名称)
spring:
application:
name: member
###服务注册到eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
###将该应用注册到注册中心
register-with-eureka: true
###是否需要从eureka上获取注册信息
fetch-registry: true
编写一个controller名为MemberController用来处理客户端所发送过来的请求:
@RestController //被该注解标识的接口下所有的方法返回的数据将以json形式响应给客户端
public class MemberController {
@RequestMapping("/getMember")
public String getMember() {
return "this is getMember";
}
}
最后编写启动类,注意类上添加注解@EnableEurekaClient
@SpringBootApplication
@EnableEurekaClient
public class AppMember {
public static void main(String[] args) {
SpringApplication.run(AppMember.class, args);
}
}
搭建完成后,先启动注册中心eureka-service(必须要先启动注册中心),然后启动会员服务member-service,浏览器访问地址:localhost:8100 注册中心首页,可以看到会员服务成功注册到了注册中心上。浏览器访问:localhost:8000/getMember 会员服务接口,可以看到接口返回的Json数据。
码字不容易,运行效果就不上图了。下一篇将记录注册服务消费者。