首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

6年架构师带你学习微服务的注册与发现:服务发现的意义

服务发现的意义

服务发现,意味着用户发布的服务可以让其他人找得到。在互联网里面,最常用的服务发现机制莫过于域名。通过域名,用户可以发现该域名所对应的IP,继而能够找到发布到这个IP的服务。

域名和主机的关系并非是一对一的,有可能多个域名都映射到了同一个IP下面。DNS ( DomainName System, 域名系统)是因特网的一项核心服务 ,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址串。

那么,在局域网内,是否也可以通过设置相应的主机名来让其他主机访问到呢?答案是肯定的。

通过URI来访问服务

用户要访问某个服务,势必要通过URI来找到那个服务。URI ( Uniform Resource Identifier,统一资源标识符)是一个用于标识某- -互联网资源名称的字符串。例如,调用天气数据API,用户将发送一个GET请求到所发布的URI。

那么,这么做会存在什么问题呢?

通过IP访问服务的弊端

首先,一个比较大的问题是,IP 是与一台特定的主机关联的。IP 必须唯- - ,不然会产生混淆。

其次,要让服务的调用方记住服务方的IP地址很难。特别是当双方都还没有正式上线部署的时候,根本无法提前获知服务提供方的IP地址。IP 地址是相对变化的!

最后一点是,通过IP地址很难做到负载均衡。设想下,服务提供方提供了两个服务实例,分别部署到两台主机里面,那么用户要访问哪个IP呢?固定-一个IP,那么另一个主机对用户来说,就没有任何作用,因为根本没有实现负载均衡。

需要服务的注册和发现

知道了上面的问题,用户就能更好地理解需要服务的注册和发现机制的原因。服务注册和发现正像互联网上的DNS,可以让用户启动的每个微服务都把自己注册进-一个服务注册表(或称为注册中心),当其他微服务需要调用这个服务的时候,就通过服务的名称来获取到这个服务。因为多个服务实例都是映射到同--个服务名称的,所以通过服务名称来访问,就可以使用其中的任何-一个服务实例,也就可以实现负载均衡了。

使用Eureka

在Spring Cloud技术栈中,Eureka 作为服务注册中心,对整个微服务架构起着最核心的整合作用。Eureka是Netflix开源的一 款提供服务注册和发现的产品。

Eureka的项目主页为htps:p:/ithub.com/spring-cloud/spring-cloud-netafix,有兴趣的读者也可以去查看源码。

本节将着重讲解如何通过Eureka 来实现微服务的注册与发现。选择使用Eureka 的原因,大致总结了以下几个方面。

1.完整的服务注册和发现机制

Eureka提供了完整的服务注册和发现机制,并且也经受住了Netflix自己的生产环境考验,使用起来相对会比较省心。

2.和Spring Cloud无缝集成

Spring Cloud有一套非常 完善的开源代码来整合Eureka,所以在Spring Boot中应用起来非常方便,与Spring框架兼容性好。

3.高可用性

Eureka还支持在应用自身的容器中启动,也就是说应用启动之后,既充当了Eureka客户端的角色,同时也是服务的提供者。这样就极大地提高了服务的可用性,同时也尽可能地减少了外部依赖。

4.开源

由于代码是开源的,因此非常便于开发人员了解它的实现原理和排查问题。同时,广“大开发者也能持续为该项目进行贡献。

本篇文章给大家讲解的内容是服务发现的意义

下篇文章给大家讲解如何集成Eureka Server;

觉得文章不错的朋友可以转发此文关注小编;

感谢大家的支持!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201116A0GCEI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券