计算机系统应用教程网站

网站首页 > 技术文章 正文

springboot整合springcloud-Eureka注册中心&服务注册与调用

btikc 2024-09-20 14:51:42 技术文章 21 ℃ 0 评论

昨天使用springboot整合了dubbo和zk,今天趁热打铁玩玩springcloud。

写dubbo就是想体验下分布式开发,学习下和工作没有关系。并没有不紧随潮流的想法,关于项目中的技术选型-合适的都是最好的,团队中熟悉dubbo并能解决问题就用dubbo。

Spring cloud 和dubbo有嘛区别呢?dubbo是解决服务之间的调用问题,是rpc框架。而springcloud是一个分布式的整体解决方案。

一、springcloud

springcloud为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全局锁,leader选举,分布式session,集群状态)中快速构建的工具,使用springcloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

Springcloud 中文网:https://springcloud.cc/

springcloud分布式开发五大常用组件(五大神兽)

1.服务发现—Netflix Eureka

2.客户端负载均衡—Netflix Ribbon

3.断路器—Netflix Hystrix

4.服务网关—Netflix Zuul

5.分布式配置—springcloud config

本文主要聊springboot整合Eureka做服务发现和服务使用。

二、springboot+EurekaServer 创建注册中心

①使用idea的spring boot向导创建clould discovery-Eureka server项目。

②application.yml文件:

server:
 port: 8761#服务端口
eureka:
 instance:
 hostname: eureka-server # eureka实例的主机名
 client:
 register-with-eureka: false #不把自己注册到eureka上
 fetch-registry: false #不从eureka上来获取服务的注册信息
 service-url:
 defaultZone: http://localhost:8761/eureka/

③为主程序添加@EnableEurekaServer标签,运行主程序即可。

三、编写服务提供者

①使用idea的spring boot向导创建clould discovery-Eureka discovery项目。

②application.yml配置:

server:
 port: 8002
spring:
 application:
 name: provider-ticket
?
?
eureka:
 instance:
 prefer-ip-address: true # 注册服务的时候使用服务的ip地址
 client:
 service-url:
 defaultZone: http://localhost:8761/eureka/

③使用restful类型的controller请求来暴露服务即可。此时注册中心就有了这个服务。

四、编写服务消费者(Eureka discovery项目)

application配置:

spring:
 application:
 name: consumer-user
server:
 port: 8200
?
eureka:
 instance:
 prefer-ip-address: true # 注册服务的时候使用服务的ip地址
 client:
 service-url:
 defaultZone: http://localhost:8761/eureka/
 

启动程序:

@EnableDiscoveryClient
@SpringBootApplication
public class ClientApplication {
 
 public static void main(String[] args) {
 SpringApplication.run(ClientApplication.class, args);
 }
 
 
 @LoadBalanced
 @Bean
 RestTemplate restTemplate() {
 return new RestTemplate();
 }
}

调用服务:

@Autowired
RestTemplate restTemplate;
?
@GetMapping("/do")
public String dothing(){
 String s = restTemplate.getForObject("http://PROVIDER1/do",String.class);
 return s;
}

启动项目,访问URL。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表