spring cloud (一)服务治理

版权声明:版权没有,盗用不究 https://blog.csdn.net/liman65727/article/details/82226380

前言

spring cloud在官网的定义非常抽象,并没有一个通俗的描述。其实简单点说,spring cloud 是基于spring boot的,最适合用于管理spring boot创建的各个微服务应用。spring cloud使用的eureka server,然后所有需要访问的应用都作为一个eureka client注册上去。eureka是一个高可用组件,没有后端缓存,每一个实例注册之后需要向注册中心发送心跳。一个eureka server也是一个eureka client。

这里依旧只是实现hello world级别的程序,遇到的深入的问题,需要后面深入以后再做总结。

相关概念

服务注册

在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机端口号,版本号,通信协议等一些附加信息告知注册中心。注册中心按服务名分类组织服务清单。

另外服务中心还会以心跳的方式去监测清单中的服务是否可用,若不可用需要从服务清单中剔除,达到排除故障服务的效果。

服务发现

在服务治理框架下,服务间的调用不再是通过制定具体的实例地址来实现(原来的web service貌似就是这种方式),而是通过向服务名发起请求调用来是实现。所以,服务调用方在调用服务提供方接口的时候,并不知道具体的服务实例地址。因此调用方需要向服务注册中心咨询服务,并获得所有服务的实例清单,以实现对具体服务的访问。

spring cloud Eureka

使用Netflix Eureka来实现服务注册与发现,它包含了服务端组件也包含了客户端组件。通用性还可以(对不兼容JVM的语言,需要自己编写客户端程序)。

Eureka服务端——可以理解为服务注册中心

Eureka客户端——想注册中心注册自己提供的服务并周期性的发送心跳来更新他的服务租约。同时,也能从服务端查询当前注册的服务信息并把他们缓存到本地并周期性的刷新服务状态。

上述概念暂时简单理解就行,下面进行相关实例的搭建

搭建服务注册中心

1、进入start.spring.io构建spring boot

需要添加eureka

2、在配置文件中加入如下属性

server.port=8898
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

server.port是设置服务注册中心的端口号

eureka.client.register-with-eureka=false:由于该应用为注册中心,所以设置为false。表示不想注册中心注册自己

eureka.client.fetch-registry=false:注册中心的职责就是维护服务实例,并不需要去检索服务,因此也设置为false。

3、在主类中打上@EnableEurekaServer注解

@EnableEurekaServer
@SpringBootApplication
public class Application {

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

运行程序,访问配置的服务地址,localhost:8898/,即可看到注册中心的页面。

搭建服务注册者

这一步与之前的步骤无二,只是需要在主类中加上@EnableEurekaClient,注解即可

在配置文件中将那个端口改成与注册中心不同的端口,如下所示:

#指定服务注册中心的地址
eureka.client.service-url.defaultZone:http://localhost:8898/eureka/

#指定服务的名称
spring.application.name=service-helloworld

#消费端端口号
server.port=8897

访问localhost:8897/

注册中心可以看到服务已经注册

 总结

hello world级别的,还有什么好总结的,low爆了,后面加入高可用的注册中心......

猜你喜欢

转载自blog.csdn.net/liman65727/article/details/82226380