记录一下吧,为什么接触分布式。因为裸辞之后没有找到工作,好的公司都要求有分布式经验,但是我完全没有。在一次面试的时候,面试官说如果你会分布式架构的话,我可以把工资给你开高2.5,我就考虑着给我点时间,让我学习这个狗东西。一个月后看学习效果再看我能不能拿到多了2.5的工资,面试官也就答应了。分布式之路就此开始。
首先分布式的基础应该就是服务的注册和发现了吧,目前只是了解了Eureka作为服务注册和发现的组件,采用Spring Boot(简称SB) 和Spring Cloud(简称SC,后面统一使用简称)。
服务的注册与发现功能的实现这里采用Eurake组件吧,手写Demo,这里采用父子工程的形式,采用Maven继承(记录一下,现在我对这玩意还不是太理解,后续专门做一篇进行解读)的方式对项目的SB和SC集成和依赖的jar包的版本进行管理。主要依赖的jar包是
spring-cloud-starter-netflix-eureka-server ,包导入完成就在SB项目的主方法添加@EnableEurakeServer 注解
Eurake组件的后端是没有缓存的,所以注册对象与注册中心之间需要发送心跳,默认情况下
Eurake Server 也是一个Eurake Client,所以必须在配置文件中指定一个server。application.properties
server: port: 8889 #注册中心开启的端口 eureka: instance: hostname: localhost #注册地址 client: registerWithEureka: false #声明Eurake以server的方式建立 fetchRegistry: false serviceUrl: #图形化界面地址 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
这时候启动项目,服务注册中心就创建完成了。
接下来创建服务提供者,与服务注册中心依赖的jar包基本是一样的,不过这个是以client结尾的
spring-cloud-starter-netflix-eureka-client, 服务提供者与消费者都是 client,注册中心才是 server,这个要搞清楚。
在启动类上添加@EnableEurekaClient注解实现,在服务提供者服务的配置文件做修改,
1 spring.application.name=config-server #服务名 2 server.port=8888 #服务端口 3 #注册中心地址 4 eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
剩下就是在服务上添加对应的请求方法,进行请求发送