今天我们一起聊一聊SpringCloud的一个核心:服务治理,看一看如何搭建注册中心,玩转服务注册和发现。
通用语言
微服务:把一个个系统拆分成可独立部署的应用,比系统的颗粒度更小,实现方式更灵活,可使用不同的编程语言。
服务提供者:提供接口的微服务。
服务消费者:调用接口的微服务。
服务名:微服务对外的称呼,比如订单服务。
同一个服务即可是服务提供者,也可是调用其它系统的服务消费者,具体根据服务所处的角色和完成的事情来确定。
服务治理
简化理解就是服务把自己访问信息告诉注册中心,在服务调用时,服务消费者不需要真正知道服务提供者实际地址(IP),而是通过服务提供者的服务名去调用,理论上可以无限横向扩展。
比如说在Http或Webservice请求的时候,URL地址必须是域名或者是IP地址,而现在只需要是服务名即可,不需要关注提供者的实际地址。服务提供者的实际地址对消费者而言是透明的,这样有一个很明显的好处。无论提供者是切换网络修改了IP或者是新增了服务器配置,消费者都无须知道,也不需要做任何改动。
由于Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架,比如:Netflix Eureka、Consul、Zookeeper。在Spring Cloud服务治理抽象层的作用下,我们可以无缝地切换服务治理实现,并且不影响任何其他的服务注册、服务发现、服务调用等逻辑。
下面介绍如何搭建Eureka的注册中心。
创建“注册中心”
(1) 创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容:
(2) 在application中增加注解@EnableEurekaServer,启动一个服务注册中心提供给其他应用进行对话。
@EnableEurekaServer @SpringBootApplication public class EurekaApplication { public static void main(String[] args) { new SpringApplicationBuilder(EurekaApplication.class).run(args); } }
(3) 默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.yaml配置文件中增加如下信息:
eureka: client: registerWithEureka: false # 此客户端是否获取eureka服务器注册表上的注册信息,默认是true fetch-registry: false instance: preferIpAddress: true
(4) 浏览器输入127.0.0.1:1001,可以看到页面,其中还没有发现任何服务。
创建“服务生产者”
(1) 创建一个基础的Spring Boot工程,命名为producer-client,并在pom.xml中引入需要的依赖内容:
2) 在application中增加注解@EnableDiscoveryClient,启动后会将当前服务注册到eureka-server。
@EnableDiscoveryClient @SpringBootApplication public class ProducerApplication{ public static void main(String[] args) { new SpringApplicationBuilder(ProducerApplication.class).run(args); } }
(3) 创建application.properties,配置如下:
spring.application.name= producer-client server.port= 2001 eureka.client.serviceUrl.defaultZone= http://127.0.0.1:1001/eureka/
(4) 浏览器输入127.0.0.1:1001,可以看到页面,其中producer-client 服务已注册成功。
综上已经搭建了一个注册中心,一个服务提供者,并完成服务注册,大家可以模拟搭建一个服务消费者。在SpringCloud中由于服务发现和服务调用集成Ribbon,完成客户端负载均衡,所以在下面的文章中会逐步讲解Ribbon如何实现服务发现和服务调用的。
大家觉得还可以的,可关注我,有什么建议可以直接留言。
本文暂时没有评论,来添加一个吧(●'◡'●)