对比:
- Eureka - JAVA - AP - HTTP
- Consul - Go - CP - HTTP / DNS
- Zookeeper - Java - CP - 客户端
- Nacos - Java - 支持 AP / CP 切换 - HTTP
Eureka 基础架构:
Eureka Server 需要手动搭建一个工程,并引入相关依赖,进行对应的配置文件设置 。?Renew 心跳 / 心跳检测:服务注册默认 30s 续约,默认 90s 没有收到续约就会将 Client 实例从服务列表中剔除 。?ApplicationService 服务提供者 ----> Eureka Client --注册服务--> Eureka Server 注册中心?Eureka Server 注册中心 --服务列表-缓存--> Eureka Client ----> ApplicationClient 客户端消费者?ApplicationClient 客户端消费者 --调用服务--> ApplicationService 服务提供者
Eureka 交互流程及原理:不同的 Eureka Server 会互相同步复制(Replicate)服务实例列表;每个 Eureka Server 是一个集群;Eureka Server 搭建集群来保持高可用服务注册中心;每个 Eureka Server 可能处于不同地域不同的机房 。?Eureka 服务注册中心:[Eureka Server 1, Eureka Server 2, Eureka Server 3]?Appllication Service 服务提供者 - 含有 Eureka ClientApplication Client 服务消费者 - 含有 Eureka Client?服务提供者可以进行 Register, Renew, Cancel, Get Registry 于服务注册中心 。服务消费者可以进行 Get Registry 于服务注册中心 。?服务消费者 Make Remote Call 于服务提供者 。
Eureka 包含两个组件 - Eureka Server 和 Eureka Client:- Eureka Client 是一个 Java 客户端,用于简化与 Eureka Server 的交互;Eureka Server 提供服务发现的能力 。
- 各个微服务启动时,会通过 Eureka Client 向 Eureka Server 进行注册自己的信息(如网络信息),Eureka Server 会存储该服务的信息 。
- Application Service 作为服务提供者向 Eureka Server 中注册服务,Eureka Server 接受到注册事件会在集群和分区中进行数据同步,Application Client 作为消费端(服务消费者)可以从 Eureka Server 中获取到服务注册信息,进行服务调用 。
- 微服务启动后,会周期性地向 Eureka Server 发送心跳以续约自己的信息; Eureka Server 默认心跳续约周期为 30s,默认 90s 后会将还没有续约的 Client 给剔除 。
- 如果 Eureka Server 在一定时间内没有接收到某个微服务节点的心跳,将会注销该微服务节点(默认 90 秒) 。
- 每个 Eureka Server 同时也是 Eureka Client,多个 Eureka Server 之间通过复制的方式完成服务注册列表的同步 。
- Eureka Client 会缓存 Eureka Server 中的信息 。即使所有的 Eureka Server 节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者 。
搭建单例 Eureka Server 服务注册中心实现过程:
- 单实例 Eureka Server -> 访问管理界面 。
- 服务提供者(商品微服务注册到集群) 。
- 服务消费者(页面静态化微服务注册到 Eureka / 从 Eureka Server 获取服务信息) 。
- 完成调用。
lagou-parent 中增加 Spring Cloud 版本号依赖管理;Spring Cloud 是一个综合的项目,下面有很多子项目,比如 eureka 子项目;Greemwich 对应的 Spring Boot 是 2.0.x 版本 。
<dependencyManagement><dependencies><!-- SCN --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Greenwich.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
2)lagou-cloud-eureka 工程 pom.xml 中引入依赖<dependencies><!-- Eureka server 依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies>
注意:在父工程的 pom 文件中手动引入 jaxb 的 jar,因为 Jdk 9 之后默认没有加载该模块,但是 Eureka Server 使用到,所以需要手动导入,否则 Eureka Server 服务无法启动 。父工程 lagou-parent 的 pom 中增加依赖:
<!-- 引入 Jaxb,开始 --><dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-core</artifactId><version>2.2.11</version></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId></dependency><dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>2.2.11</version></dependency><dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.2.10-b140310.1920</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency><!-- 引入 Jaxb,结束 -->
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 5分钟搭建公网https网页文件服务器,免费权威TLS证书
- 一个比 Nginx 功能更强大的 Web 服务器
- 2021寒假儿童关爱服务四送活动总结?2021寒假儿童关爱服务观后感
- 微型投影仪选购及保养技巧
- 一般公司或者团队是怎么进行代码开发并且部署到服务器上的?
- 微信拉黑后再拉回来对方有提示吗?
- 家用无线路由器DHCP服务器配置方法
- 500行代码,教你用python写个微信飞机大战
- 什么是微内核架构设计?
- 云计算核心技术Docker教程:docker-compose控制服务启动和关闭顺序