一、什么是服务注册中心
服务注册中心是服务实现服务化管理的核心组件,类似于目录服务的作用,主要用来存储服务信息,譬如提供者 url 串、路由信息等。服务注册中心是 SOA 架构中最基础的设 施之一。
1 、服务注册中心的作用
1)服务的注册
把QQ群理解为注册中心,Kevin为群主,当有其他的人(Q1)想申请加入此QQ群的时候,这个过程可理解为服务的注册;若群主接受申请,则为服务的注册成功,拒绝申请,则为服务的注册失败;
2)服务的发现
若群主接受申请,Q1进入群中,QQ群界面中的群成员可以理解为已注册的服务;
Q1可以在群中发送消息/传文件,这个过程称为服务的发现。
![c099d211f44f742dd750922a55a35c9b.png](https://i-blog.csdnimg.cn/blog_migrate/a38710c27dd9830f667ad2a67511d867.png)
2、常见的注册中心有哪些
1)Dubbo 的注册中心 Zookeeper
2)Sringcloud 的注册中心 Eureka
3、服务注册中心解决了什么问题
1)服务管理
2)服务的依赖关系管理
4、什么是 Eureka 注册中心
Eureka 是 Netflix 开发的服务发现组件,本身是一个基于 REST 的服务。Spring Cloud
将它集成在其子项目 spring-cloud-netflix 中,以实现 Spring Cloud 的服务注册与发现,同
时还提供了负载均衡、故障转移等能力。
5、Eureka 注册中心三种角色
1)Eureka Server(搭建的集群)
通过 Register、Get、Renew 等接口提供服务的注册和发现。
2)Application Service (Service Provider 生产者)
服务提供方
把自身的服务实例注册到 Eureka Server 中。
3)Application Client (Service Consumer 消费者)
服务调用方
通过 Eureka Server 获取服务列表,消费服务。
二、Eureka 入门案例
1、创建项目(idea)
![267c0392623c5ef1d97ad0ad6f1e0d5e.png](https://i-blog.csdnimg.cn/blog_migrate/e600e873cbe5efbb7604a24ebd8128ee.jpeg)
2、修改pom.xml文件添加依赖
注意:
1)官网中默认没有添加server单词默认为(spring-cloud-starter-eureka)所以需要手动添加server;
2)若不添加server则启动类中的@EnableEurekaServer无法添加,此注解默在server坐标下
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka- server</artifactId>
</dependency>
pom.xml类
<?xml version="1.0" encoding="UTF-8"?>
3 、修改启动类
在类上添加注解 @EnableEurekaServer --->表示启动是server端。
EurekaApplication.java类
package
4 、修改 application.properties 全局配置文件
application.properties全局配置文件
#搭建 Eureka 注册中心
#给当前应用起个名称
spring.application.name=eureka-server
#修改端口号默认为8080
server.port=8761
#是否将自己注册到Eureka-Server中,默认为true
eureka.client.registerWithEureka=false
#是否从Eureka-Server中获取注册信息,默认为true
eureka.client.fetchRegistry=false
5 通过浏览器访问 Eureka-Server 服务管理平台
1)首先开启启动类(EurekaApplication.java类),待控制台正常启动程序;
2)在浏览器地址栏中输入 localhost:8761
![54a5a3795bf677479f85e224755861bc.png](https://i-blog.csdnimg.cn/blog_migrate/350d97ad2590dc6ddbe7f0049e60d605.jpeg)
2)在浏览器地址栏中输入 localhost:8761 便可访问Eureka-Server 服务管理平台
![d3de5bb5fc9624609f6cc8c66d500fb4.png](https://i-blog.csdnimg.cn/blog_migrate/5b13624bc859d0f680628e393a028615.jpeg)
三、 搭建高可用 Eureka 注册中心(Eureka 集群)
以下操作在idea中步骤一样,唯一不同为导出jar包
idea把项目导出jar包的操作:
![29b9811b4a2f0c9920640b4f773473f6.png](https://i-blog.csdnimg.cn/blog_migrate/329a3dbae8720afe7c2adbf1be402c26.jpeg)
1、创建项目(myeclipse)
![53fb7985a423da79565032d3cc9f4c37.png](https://i-blog.csdnimg.cn/blog_migrate/44b72c0ef9604ddb7457ffc46d2bcc9e.jpeg)
2、配置文件
在搭建 Eureka 集群时,需要添加多个配置文件,并且使用 SpringBoot 的多环境配置方式。
集群中需要多少节点就添加多少个配置文件。
3、在配置文件中配置集群节点
application.eureka1.properties全局配置文件
#给当前应用起个名称
spring.application.name=eureka-server
#修改端口号默认为8080
server.port=8761
#设置eureka实例名称,与配置文件变量为主
eureka.instance.hostname=eureka1
#设置服务中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka2:8761/eureka/
application.eureka2.properties全局配置文件
#给当前应用起个名称
spring.application.name=eureka-server
#修改端口号默认为8080
server.port=8761
#设置eureka实例名称,与配置文件变量为主
eureka.instance.hostname=eureka2
#设置服务中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/
4、添加 logback.xml日志配置文件
logback.xml日志文件
![125617cb0000f259d54b4632b6093a3d.png](https://i-blog.csdnimg.cn/blog_migrate/8c3c53d25ecfa58e05af019a7ebbad69.jpeg)
logback.xml日志文件
<?xml version="1.0" encoding="UTF-8" ?>
5、虚拟机中的操作
192.168.2.128虚拟机
1)上传项目的jar包到linux虚拟机的(temp)指定目录中。
![8ce7cc3f1cfd63b1d333e6823d9a657e.png](https://i-blog.csdnimg.cn/blog_migrate/d67a85e4b7759aeb33b97c589b5e6cdb.jpeg)
2)创建运行注册中心的目标文件夹
![1a5eb43660ac62c088bc9c0ed51fdd14.png](https://i-blog.csdnimg.cn/blog_migrate/96689f7abf846de824e1e58ade7472f8.png)
3)把jar包复制到目标文件夹
![d1dd41dd8fde3002596b0bcbf15e64d7.png](https://i-blog.csdnimg.cn/blog_migrate/8f1fe3b97ae51a5fdbb27a1495de2df7.jpeg)
4)修改脚本
![69fba2bcbcb1da65c9372b0221fc2ee5.png](https://i-blog.csdnimg.cn/blog_migrate/6952905e3b58e9223df5f6557a3ffc3e.png)
注意粘贴到server.sh(脚本名)后只需要修改 项目名称 和 配置文件变量名称。
a)项目名称-->springcloud-eureka-server-jq-0.0.1-SNAPSHOT.jar
b)配置文件变量名称--->eureka1
编写一个启动脚本文件
server.sh脚本
&1
5)给脚本分配执行权限
给脚本分配权限的命令
chmod -R 755 加脚本名称
Chmod -R 755 server.sh
![8e1d9c0055f0f931db2b1ec8165abf28.png](https://i-blog.csdnimg.cn/blog_migrate/55af347852fe335db04da8c1c8477df9.jpeg)
6)修改 linux 的 host 文件
修改 linux 的 host 文件
Vim /etc/hosts
直接添加-->
192.168.2.128 eureka1
192.168.2.126 eureka2
注意:IP和单词间是空格
7)启动 eureka 注册中心
./server.sh start 启动
./server.sh stop 停止
8)通过浏览器访问注册中心的管理页面
192.168.2.128:eureka1
192.168.2.126:eureka2
![6b05e7c502fdbfdc84d64c975d8ea9e9.png](https://i-blog.csdnimg.cn/blog_migrate/4eb9679583d6e2d51ce49676d67e0ffb.jpeg)
9)192.168.2.126虚拟机的操作
操作同192.168.2.128虚拟机操作相同,唯一不同的是修改脚本。
1)修改脚本
a)项目名称-->springcloud-eureka-server-jq-0.0.1-SNAPSHOT.jar
b)配置文件变量名称--->eureka2
四、 在高可用的 Eureka 注册中心中构建 provider 服务
1、创建项目(myeclipse)
复制springcloud-eureka-server项目
![9a94758ee9e7efb546270ab42a7d5d65.png](https://i-blog.csdnimg.cn/blog_migrate/64740973890933a967e6f1725c9af717.jpeg)
2、修改 pom 文件
修改
去掉坐标中的-server
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka -server</artifactId>
</dependency>
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
3、修改启动类
添加注解-----> @EnableEurekaClient //表示服务的客户端
EurekaApplication.java类
package
4、修改 provider 的配置文件
application.properties全局配置文件
#给当前应用起个名称
spring.application.name=eureka-provider
#修改端口号默认为8080
server.port=9090
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8761/eureka/
5、修改 windows 的 host 文件
host所在路径:C:WindowsSystem32driversetchost
添加以下内容----->
192.168.70.134 eureka1
192.168.70.135 eureka2
6、编写服务接口
6.1、创建 pojo
User.java 类
package
6.2、创建接口
UserController.java类
package
7、测试provider
7.1、首先启动注册中心,再去启动provider项目的启动类
![e918fe17d93b507ba180ff4b42e8916c.png](https://i-blog.csdnimg.cn/blog_migrate/8e3d39d87d7e748596050ca433c699d2.jpeg)
7.2、在注册中心查看注册信息
由下图可知,provider已经注册成功,便可调用其接口。
![abcad859ba0153e715b786f755eb799d.png](https://i-blog.csdnimg.cn/blog_migrate/6e2f94a8d9506ada165c93721066988f.jpeg)
7.3、在网页中调用接口中的数据
访问地址为-----> localhost:9090/user
拿到信息表示服务可用,调用接口没有问题
![b290e3929a781c90c1dd6671b15209dc.png](https://i-blog.csdnimg.cn/blog_migrate/3fbd489df5f31d4e1e159b91391c346d.jpeg)
五、 在高可用的 Eureka 注册中心中构建 consumer 服务
1、创建项目
复制上面的provider项目
![8982e88940da01323f62c081c69d4688.png](https://i-blog.csdnimg.cn/blog_migrate/e60570fa9a76216b614f2f9406d232f4.jpeg)
注意:
服务的消费者与提供者都需要在 Eureka 注册中心注册。
2、修改全局配置文件
端口改为-----> 9091 (防止端口抢占)
application.properties全局配置文件
#给当前应用起个名称
spring.application.name=eureka-consumer
#修改端口号默认为8080
server.port=9091
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8761/eureka/
3、添加业务层(在 Service 中完成服务的调用)
UserService.java类
package
4、修改Controller
UserController.java类
package
5、测试 consumer 访问 provider
首先启动服务的提供者(17-springcloud-eureka-provider)的启动类,然后启动服务的消费者(17-springcloud-eureka-consumer)的启动类。
5.1、在网页上访问注册中心-----> 192.168.2.128:8761
观察 provider 和consumer是否注册。
![93bf43977456d3807f54b4d177ca875b.png](https://i-blog.csdnimg.cn/blog_migrate/c6762c5fb6c82a99043d7a9a7c781197.jpeg)
5.2、在网页中通过consumer调用provider
访问地址-----> localhost:9091
![6defa7d7c906614126bb8b8784215463.png](https://i-blog.csdnimg.cn/blog_migrate/ff0fc0aa94000201e3762773824334dd.jpeg)