构建Spring Eureka服务(学习笔记)

这篇博客详细介绍了如何构建Spring Eureka服务,包括服务的构建、通过Eureka进行服务注册以及使用服务发现查找服务。在服务注册过程中,提到了Eureka的配置和实例ID的设定。此外,还讲解了如何利用Ribbon进行服务间调用,并介绍了Spring DiscoveryClient和Netflix Feign客户端的使用方法。
摘要由CSDN通过智能技术生成

一、构建服务。

构建SPring Eureka服务
目录结构:
在这里插入图片描述
yml配置:
在这里插入图片描述
笔记:
1.waitTimeInMsWhenSyncEmpty表示在服务器接收请求之前等待的初始时间,如果不设置的话,默认等待5分。。
2.每次服务注册需要30s的时间才能在Eureka中显示,因为需要Eureka需要从服务中接收三次连续心跳包ping,每次间隔10s,然后才能用这个服务。
然后,要有注解:
在这里插入图片描述
运行即可:
在这里插入图片描述

二、通过Eureka注册服务。

以组织服务来举例:
同样也需要引入Eureka。
在这里插入图片描述
配置yml,首先是关于Eureka的:
在这里插入图片描述
然后Spring:
在这里插入图片描述
笔记:
1.每个通过Eureka注册的服务都会有两个与之相关的组件:应用程序ID和实例ID。应用程序ID用于表示一组服务实例。应用程序ID由spring.application.name来指定。
2.为什么偏向于ip地址?
在默认情况下,Eureka在尝试注册服务时,都会使用主机名让外界跟他进行联系。一般主机名要经过DNS解析,所以如果是在容器的环境下,主机名都是随机生成的,没有DNS记录,所以IP地址更适合这些类型的服务,所以我们始终把这个属性设置为true。
3.开启缓存后,注册表会被缓存在本地,查找服务以缓存优先,且每隔30s就会主动联系Eureka服务,以便查看有没有任何更新。
4.defaultzone可以包含列表,逗号隔开,这里只有一个。
5.建立Eureka列表并没有实现高可用,初次之外还要建立集群才可以。建立集群是另外的知识点,这里先不展开讨论。
接下来运行组织服务
服务启动后,记得耐心等待30s。
然后用postman请求http://localhost:8761/eureka/apps/organizationservice
在这里插入图片描述
到目前为止,就已经有了一个通过Eureka注册的服务了。
笔记:
1.默认返回是xml格式的,也可以作为json返回,将Accept设置为application/json即可。
在这里插入图片描述

三、使用服务发现来查找服务。

现在组织服务已经注册到Eureka里了,接下来许可证服务(另一个单独的服务)将通过Eureka来调用组织服务。
牵扯到三个客户端库,从低到高包含了不同的与Ribbon进行交互的抽象层次(Ribbon是客户端缓存,可以把发现的服务的位置缓存在本地)。

  • Spring DiscoveryClient
  • 启用了RestTemplate的Spring DiscoveryClient
  • Netflix Feign客户端
    作者根据clientType字段来选择用哪个客户端来查找,比如controller里的这个方法:
    在这里插入图片描述
    查找的代码也很清晰明了:
    在这里插入图片描述
    1.拿discoveryClient来说:
    在这里插入图片描述
    在这里插入图片描述
    这里又有一个上一章的知识点,就是配置文件是用的配置服务来搞定的,也就是数据库的配置文件都在配置服务里存放着,这里要启动自己的数据库服务,配置好配置服务的默认文件:
#启动数据库
docker run --name postgres1 -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgres:9.1

连上试试:
在这里插入图片描述
这个表的数据,有sql语句的,直接运行就行。在这里插入图片描述
配置default:
在这里插入图片描述
然后运行起来配置服务。

2.增加Ribbon缓存:
在这里插入图片描述
笔记:Spring cloud早期版本Ribbon是默认支持的,而现在的都得明确声明才可以。
然后这样去使用它:
在这里插入图片描述
在使用支持ribbon的情况下,使用Eureka服务ID来构建目标URL。

3.使用Netflix Feign客户端来调用服务
这种是第二种的替代方案。
只需要写个接口就可了,Spring Cloud框架将生成代理类。
在这里插入图片描述
在这里插入图片描述
笔记:在使用传统的Rest时,所有服务调用的HTPP状态码都可以获取到,而Feign客户端将http状态码映射到了Exception,也提供了编写错误码解析类的功能,具体不展开讨论了。
最后试着运行一下许可证服务:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值