您的位置:首页 > 编程语言 > Java开发

微服务架构之spring cloud (二)服务注册与发现

2017-05-05 11:29 597 查看
spring cloud的服务注册与发现是分布式架构中核心的一部分,由服务注册中心,服务提供者,服务消费者构成。

创建服务注册中心

1.1:创建cloud_eureka_server(服务注册中心)maven项目,pom.xml配置:加入eureka的依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>


其它通用配置请查看前言通用配置

1.2:application.properties配置:

server.port=10003

eureka.client.register-with-eureka=false

eureka.client.fetch-registry=false

eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

1.3:创建启动类:

通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话

@EnableEurekaServer
@SpringBootApplication
public class CloudEurekaServerApplication {

public static void main(String[] args) {
SpringApplication.run(CloudEurekaServerApplication.class, args);
}
}


在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为。

2. 创建服务提供者

2.1:创建cloud_eureka_service1项目,pom.xml配置如下:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>


其它通用配置请查看前言通用配置

2.2:application.properties配置:

spring.application.name=compute-service
server.port=10004
eureka.client.serviceUrl.defaultZone=http://localhost:10003/eureka/


eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。

2.3主启动类:

@EnableDiscoveryClient
@SpringBootApplication
public class CloudEurekaService1Application {

public static void main(String[] args) {
SpringApplication.run(CloudEurekaService1Application.class, args);
}
}


@EnableDiscoveryClient能激活Eureka中的DiscoveryClient实现,才能实现Controller中对服务信息的输出。

2.4创建计算服务API:

@RestController
public class CalculateWeb {
private final Logger logger = Logger.getLogger(getClass());
@Autowired
private DiscoveryClient client;

@RequestMapping("add")
public String add(@RequestParam Integer a, @RequestParam Integer b) {
ServiceInstance instance = client.getLocalServiceInstance();
Integer r = a + b;
logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
return r.toString();
}

}


3 创建服务消费者

3.1创建服务cloud_eureka_ribbon 项目,pom配置如下:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>


其它通用配置请查看前言通用配置

3.2:application.properties配置:

spring.application.name=ribbon-consumer

server.port=10006

eureka.client.serviceUrl.defaultZone=http://localhost:10003/eureka/

3.3:创建主启动类:

@SpringBootApplication
@EnableDiscoveryClient
public class CloudEurekaRibbonApplication {
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}

publ
aa22
ic static void main(String[] args) {
SpringApplication.run(CloudEurekaRibbonApplication.class, args);
}
}


3.4创建计算API,调用服务提供者对外暴露接口:

@RestController
public class ConsumerController {

@Autowired
RestTemplate restTemplate;

@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add() {
return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
}

}


4:主要工作都已完成。然后依次启动服务注册中心,服务提供者,服务消费者。

访问:http://localhost:10003 可以看到服务已经被注册。

访问:http://localhost:10006/add 返回30,同时控制台将打印出调用日志。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐