这篇文章先讲述一下Eureka的应用场景、代码实现案例,多个服务模块注册到Euraka中,服务之间的调用实现我会再下一篇文章中进行讲解!
Eureka主要是做:
注册发现中心
服务注册与发现的组件
说到Eureka不得不提到了CAP,那么什么是CAP原则呢,下面一起来看下!
CAP 原则:
又称 CAP 定理,指的是在一个分布式系统中。
CAP原则三大特性:
一致性 (Consistency):
在集群中,三个机器的数据是一致的。
可用性I(Availability):
当有一个节点挂掉了整个集群可以继续对外提供服务。
分区容错性 (Partition tolerance):
由于机房网络或者分区等原因会导致各个机器中的数据短暂不一致。
(这个特性是不可避免的)CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
说到这里再提一下Eureka
和Zookeeper
的区别?
Zookeeper:
遵循CP原则
Eureka:
AP原则:注重AP高可用
下面我来通过代码的方式详细的看下如何来快速实现Eureka的使用
只需要建我标记红色框的项目,其它的不需要建,我这边是之前做的服务注册中心集群所以会有好几个注册中心
首先把目录结构给建起来,Maven项目
注意:新增项目的时候选择Java8
按照我图上的这个建,新建项目流程这边我不一一去说了,不明白的可以私信我!
第一步
先去新建注册中心01-eureka-server
第二步
修改EurekaServerApplication
启动类,添加@EnableEurekaServer
注解,意思是开启Eureka的注册中心的,启动类里面只需要修改一个地方添加开启Eureka注解
功能。
源码如下:
package com.powernode;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer //开启Eureka的注册中心的功能
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
第三步
修改yml文件(配置文件)
源码如下:
每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。
#单机
server:
port: 8761 # eureka的默认端口
spring:
application:
name: eureka-server # 应用名称 不要使用特殊字符
eureka: #Eureka的配置分三类 server client 实例的 eureka-server既是服务端又是客户端
server: #服务端每间隔多少毫秒定期删除的操作(默认是30000(30秒))
eviction-interval-timer-in-ms: 10000
renewal-percent-threshold: 0.85 # 续约百分比 超过85的应用没有和你续约 那么erueka不会踢除任何应用
instance: # 实例的配置
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}} # 主机名称 : 应用名称 : 端口号
# hostname: localhost # 主机名称 或者 服务的IP
# prefer-ip-address: true #以IP的形式显示具体的服务信息
# lease-renewal-interval-in-seconds: 5 # 服务实例的续约的时间间隔
第四步
修改pom文件
注意:
是01-eureka-server的pom文件
,因为这块要去指定spring Cloud以及spring Boot版本。
按照我标红色的框去修改
服务A对应的项目名称是:02-eureka-client-a
,千万不要改错地方哈!
第一步
先去修改yml配置文件。
源码如下:
每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。
server:
port: 8702 # 客户端端口没有要求
spring:
application:
name: eureka-client-a
# 注册 发送信息
eureka:
client:
service-url: # 指定注册地址
defaultZone: http://localhost:8761/eureka
register-with-eureka: true # 可以不往eureka-server注册
fetch-registry: true # 应用是否去拉取服务列表到本地
# 每个10秒中去注册中心重新进行拉取 时间越短脏毒越少 性能消耗大
registry-fetch-interval-seconds: 10 # 为了缓解服务列表的脏毒问题
instance:
hostname: localhost # 应用的主机名称 最好谢主机ip
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
prefer-ip-address: true # 显示ip
lease-renewal-interval-in-seconds: 10 # 实例续约的时间
服务A对应的项目名称是:02-eureka-client-b
,千万不要改错地方哈!
和服务A类似
第一步
先去修改yml配置文件。
源码如下:
每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。
server:
port: 8703 # 客户端端口没有要求
spring:
application:
name: eureka-client-b
# 注册 发送信息
eureka:
client:
service-url: # 指定注册地址
defaultZone: http://localhost:8761/eureka
先启动注册中心01-eureka-server
,在启动服用A和服务B
,
启动方式:点击启动文件,然后点击绿色的三角选择运行模式或者调试模式都可以
看到下图这个,说明就已经启动成功了,返回状态码为204。
注意:重点来了非常重点
,在浏览器地址栏中直接输入http://localhost:8761/
如果你输入完http://localhost:8761/
给你返回的是这个页面,恭喜你Eureka注册中心启动成功!
,接着再去启动服务。
还是这种方式去启动,运行模式和调试模式都可以。
启动成功后会显示如下图所示,状态显示204。
注意:重点来了非常重点
,在浏览器地址栏中直接输入http://localhost:8761/
,或者是刚才已经打开这个地址了,直接F5刷新页面。
可以清除的看到在注册中心上方有一个应用名称为:EUREKA-CLIENT-A
的服务注册进来了,很好,继续启动服务B。
服务B还是按照服务A的方式去启动,我们可以清楚的看到目前有三个服务正在运行
,分别是注册中心、服务A和服务B,回到浏览器,还是那个网址下,F5刷新。
很好
,可以看到服务B也注册进来了。
至此就完成了一个注册中心和两个服务模块的注册功能的实现,按照我的这种方式去搭建项目和代码实现,不明白的博主私信,大家可以看到我还有其他的组件
这是常用的Spring Cloud组件
,还有第二张图的各个组件的服务,nacos文件配置中心搭建、手写网关、熔断器等等,都是源码,有需要的博主可以私信我,不收取任何费用,如果你有不明白的地方我还会免费为你进行解答,希望能帮助到大家!
本期分享就到这里咯,下期分享rabbon实现远程调用。