1.创建服务注册中心的步骤
a、创建一个maven主工程,命名为spring-cloud
b、创建一个Module子工程,该工程作为服务注册中心,命名为Eureka-server
c、创建一个服务提供者,即一个Module子工程,命名为service-hello, 在配置文件中,将该服务注册在Eureka-server中
d、测试服务的多端口同时启动,观察Eureka-server中的信息
e、了解高可用性的服务注册中心。
一、Maven主工程创建
创建一个Maven主工程,命名为Spring-Cloud,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。
主工程pom文件中添加spring-boot-starter和spring-boot-starter-test两个依赖包,添加一个spring-boot-maven-plugin的插件,添加一个依赖版本管理器。
二、搭建服务注册中心子项目Eureka-server
右键工程->创建model-> 选择spring initialir
点击next ,Group填写包名 artifact填写项目名,命名为eureka-server
点击next,选中spring cloud discovery,在中间选项中勾选上Eureka server
在pom文件中,继承主工程pom文件,添加spring-cloud-starter-netflix-eureka-server依赖包。
项目创建好后,结构如下,其中EurekaServiceApplication为springboot启动类,在该启动类中添加一个注解@EnableEurekaServer
项目配置文件采用yml的配置语法:
其中spring.application.name是唯一的,表明自己的服务名
Server.port是唯一的,表示启动该项目所用的tomcat端口
Eureka.instance.hostname表明该注册中心的ip地址
完成上面所有配置后,启动EurekaServerApplication启动类,在浏览器中访问http://localhost:8761/
其中Application处是所有注册在注册中心的服务列表,当前没有任何服务注册
General info是key-value格式的当前注册中心的相关信息
Instance info是当前所有在运行的注册中心实例的信息
三、开发一个微服务
创建一个子项目Module,命名为service-hello,
创建过程和eureka-server类似,但不需要勾选eureka-server选项。
pom文件继承主工程pom文件,并添加两个依赖:spring-cloud-starter-netflix-eureka-client和spring-boot-starter-web
配置文件如下:
Server.port指明当前项目的端口为8005
Spring.application.name指明当前服务的名称,服务与服务间的调用,后面的客户端调用服务,都是根据该名称
Eureka.client.serviceUrl.defaultZone指明该服务注册中心地址,即是我们刚刚部署启动的eureka-server
在spring-boot启动类中,加上一个注解@EnableEurekaClient,表明自己是一个服务提供方。 在启动类的子目录或同级目录下,编写HelloController,代码如下:
启动service-hello,访问服务注册中心地址: http://localhost:8761/ 可以看到我们的service-hello微服务已经注册在eureka-server中,这时可以直接访问微服务的地址端口,并附带参数gcm http://localhost:8005/hello?name=gcm 可以看到浏览器打印出控制器返回的信息
四、一个微服务,启动并注册多个实例
在idea的启动管理器中,取消service-hello的单例限制,同时修改service-hello项目配置文件中的端口为8006,再次启动,可以看到在注册中心中,SERVICE-HELLO服务已经注册了两个不同端口的实例,你可以通过对应的地址分别访问这两个服务。
通过微服务的拷贝,可以将一个微服务部署在多个不同的计算机上,通过统一的注册中心进行管理,如果某一个微服务宕机了,仍然有其他相同的微服务可供客户端进行调用,这就是分布式的雏形。
拓展:高可用性的注册中心
除了微服务可以通过拷贝部署在多台计算机上实现分布式以外,Eureka Server还支持自身的分布式部署,当有服务注册时,多个Eureka-eserver是对等的,它们都存有相同的信息,这就是通过服务器的冗余来增加可靠性,当有一台服务器宕机了,服务并不会终止,因为另一台服务存有相同的数据。
持续更新中…,如果遇到问题欢迎联系我,在文章最后评论区【留言和讨论】