开发者社区 > 云原生 > 正文

服务发现(Service Discovery)是指什么?

服务发现(Service Discovery)是指什么?

展开
收起
1358896759097293 2021-03-17 14:09:47 3037 0
2 条回答
写回答
取消 提交回答
  • 45271990@qq.com

    服务发现(Service Discovery) 概述 从 Internet 刚开始兴起,如何动态感知后端服务的地址变化就是一个必须要面对的问 题,为此人们定义了 DNS 协议,基于此协议,调用方只需要记住由固定字符串组成的域 名,就能轻松完成对后端服务的访问,而不用担心流量最终会访问到哪些机器 IP,因为有 代理组件会基于 DNS 地址解析后的地址列表,将流量透明的、均匀的分发到不同的后端 机器上。在使用微服务构建复杂的分布式系统时,如何感知 backend 服务实例的动态上下线, 也是微服务框架最需要关心并解决的问题之一。业界将这个问题称之为 - 微服务的地址发 现(Service Discovery),业界比较有代表性的微服务框架如 SpringCloud、 Microservices、Dubbo 等都抽象了强大的动态地址发现能力,并且为了满足微服务业务 场景的需求,绝大多数框架的地址发现都是基于自己设计的一套机制来实现,因此在能力、 灵活性上都要比传统 DNS 丰富得多。如 SpringCloud 中常用的 Eureka, Dubbo 中 常用的 Zookeeper、Nacos 等,这些注册中心实现不止能够传递地址(IP + Port), 还包括一些微服务的 Metadata 信息,如实例序列化类型、实例方法列表、各个方法级的 定制化配置等。

    2021-03-18 23:14:42
    赞同 展开评论 打赏
  • 对于微服务架构来说,每个服务都可以单独地管理和部署。比如把服务部署在多个节点上,前端请求过来之后采用负载均衡策略把流量打到具体的机器上。如果某个节点宕机(比如最常见的原因Out of Memory),这时候用户的请求达到了宕机的机器上就会造成很不好的用户体验。又比如说横向扩展的时候,手动添加配置也很繁杂。

    服务注册与发现就是用来解决这些问题的。所有服务的IP地址以及端口都存放在一个强一致性的数据中心。对于服务宕机以及添加能够自动发现,不再需要人工干预。

    2021-03-18 00:31:24
    赞同 展开评论 打赏
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
《基于 Service Worker 实现在线代理》 立即下载
开源广进,用service cataloq构造k8s服务能力中心 立即下载
Kubernetes在大规模场景下的service性能优化实战 立即下载