昨天使用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。
本文暂时没有评论,来添加一个吧(●'◡'●)