| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Eureka注册中心 -> 正文阅读 |
|
[大数据]Eureka注册中心 |
让我们看看没有注册中心的时候,服务的调用 ?order-service服务发起一个请求调用user-service服务,我们硬编码写死了user-service,IP地址的信息,倘若user-service横向扩展成集群 ? 如果你一直写死8081地址,那么其他三台怎么调用呢,倘若某天,user-service换了服务器,地址发生变更,你还得回来修改代码的IP地址 继续打包部署,非常的麻烦,那么我们服务消费者该如何获取服务提供者的地址信息呢??我该挑选哪一台进行访问呢?我挑选的那台是否没有宕机呢? 于是后面就有了我们的Eureka注册中心 order-service 如何得知 user-service 实例地址?
order-service 如何从多个 user-service 实例中选择具体的实例? order-service从实例列表中利用负载均衡算法选中一个实例地址,向该实例地址发起远程调用 order-service 如何得知某个 user-service 实例是否依然健康,是不是已经宕机?
所以以上未使用注册中心的三个问题,使用注册中心后就都解决了。说白了,注册中心就是为了管理众多服务,方便服务于服务间的调用,以及服务的状态监测。 注册中心使用的步骤: 搭建Eureka注册中心1、利用SpringBoot创建项目eureka-server,引入pom.xml依赖
2、编写配置application.yml
3、启动类添加注解 @EnableEurekaServer,开启Eureka的注册中心功能
其中? 启动完成后,访问?http://localhost:7001/? ? ?就可以看到Eureka注册中心界面了。 其实步骤都是几步: 1、导入依赖 2、编写配置文件 3、开启这个功能 @EnableXXXX 4、配置类 那么我们编写了注册中心之后,我们还需要编写服务,注册到注册中心中。注意:这里是用client 1、利用SpringBoot创建项目user-service,引入pom.xml依赖
2、编写配置application.yml
3、启动类上添加注解:@EnableEurekaClient user-service 和 order-service同理,3个项目启动后,访问?http://localhost:7001/ 服务拉取? ?在order-service中完成服务拉取,然后通过负载均衡挑选一个服务,实现远程调用,让order-service向eureka-server拉取user-service的信息,实现服务发现。 首先给RestTemplate这个Bean添加一个@LoadBalanced注解,用于开启负载均衡。
修改 OrderService 访问的url路径,用服务名代替ip、端口:
Spring会自动帮助我们从Eureka-server中,根据userservice这个服务名称,获取实例列表后去完成负载均衡。 Ribbon负载均衡我们添加了? 源码跟踪为什么我们只输入了 service 名称就可以访问了呢?为什么不需要获取ip和端口,这显然有人帮我们根据 service 名称,获取到了服务实例的ip和端口。它就是 我们进行源码跟踪: 这里的?
这里的? 继续跟入?
可以看到获取服务时,通过一个? 我们继续跟入: 继续跟踪源码? 我们看看这个? 这里的 rule 默认值是一个? 负载均衡默认使用了轮训算法,当然我们也可以自定义。 流程总结SpringCloud Ribbon 底层采用了一个拦截器,拦截了 RestTemplate 发出的请求,对地址做了修改。 基本流程如下:
负载均衡策略负载均衡的规则都定义在 IRule 接口中,而 IRule 有很多不同的实现类: 不同规则的含义如下:
默认的实现就是? 自定义策略通过定义 IRule 实现可以修改负载均衡规则,有两种方式: 1 代码方式在 order-service 中的 OrderApplication 类中,定义一个新的 IRule: 2 配置文件方式:在 order-service 的 application.yml 文件中,添加新的配置也可以修改规则:
注意:一般用默认的负载均衡规则,不做修改。 饥饿加载当我们启动 orderservice,第一次访问时,时间消耗会大很多,这是因为 Ribbon 懒加载的机制。 Ribbon 默认是采用懒加载,即第一次访问时才会去创建 LoadBalanceClient,拉取集群地址,所以请求时间会很长。 而饥饿加载则会在项目启动时创建 LoadBalanceClient,降低第一次访问的耗时,通过下面配置开启饥饿加载:
? ? ? ? 到这里注册中心算是讲完啦,但是我们实际项目中一般采取集群策略,所以注册中心不可能是一个,有可能三四台进行横向扩展,这样,当一台注册中心宕机的时候,另外几台也可以进行注册。注册中心与注册中心间的资源是共享的。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 0:20:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |