弄浪的鱼

上一篇文章 RestTemplate实现服务之间的调用中调到了使用 RestTemplate 跨应用调用 Restful 形式的接口。这样的方式存在两个弊端:一是 URL 需要硬编码,二是服务挂掉之后没有备用措施。

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。

Eureka的服务注册与发现

如上图所示,Eureka 中有三种角色

  • Eureka Server:注册中心,提供服务的注册和发现
  • Service Provide:服务提供者,将自身的服务注册到 Eureka Server
  • Service Consumer:服务消费者,从 Eureka Server 中获取注册表,调用 Provider 的服务

开始系统学习微服务相关的知识点,现在微服务中的主流框架是 Spring Cloud 和 Dubbo,因为公司用的是 Spring Cloud,我就从 Spring Cloud 着手实战微服务。

先来看两个服务之间的调用,Spring Boot 是怎么帮我们做的?存在什么弊端?要如何解决?

RestTemplate

Spring Boot 在 org.springframework.web.client.RestTemplate 中提供了 RestTemplate 能够帮助我们调用 Restful 形式的服务接口。

记得一年前 Spring Cloud、Docker + k8s 才刚才火起来呀,当时公司的系统刚转成 Docker 部署,使用的分布式框架任然是 Dubbo。

现在也就相隔一年半, JD 上 Spring Cloud 已经成标配了,份额看着比 Dubbo 还大。Docker + k8s 也已经是一个加分项被写在 JD 上了。

为了知识体系的完整性,今天撸了一个 Spring Cloud 的 Demo。