服务发现概述
简单来说,服务发现就是服务或者应用之间互相定位的过程。不过,服务发现并非新概念,传统的单体应用架构也会用到,只不过单体应用的动态性不强,更新和重新发布的频率较低,通常以月甚至以年计,基本上不会进行自动伸缩,因此服务发现的概念无须显性强调。
微服务意味着存在更多的独立服务,但它们并非独立的个体,而是存在这复杂的依赖关系且彼此之间通常需要进行非常频繁地交互和通信的群体。然而,建立通信之前,服务和服务之间该如何获知彼此的地址呢~ 在Kubernetes系统上,Service为Pod中的服务类应用提供了一个稳定的访问入口,但Pod客户端中的应用如何得知某个特定Service资源的IP和端口呢? 这个时候就需要引用服务(Service Discovery)发现的机制~
服务发现机制的基本实现,一般是实现部署好一个网络位置较为稳定的服务注册中心(也称为服务总线),服务提供者(服务端)向注册中心注册自己的位置信息,并在变动后及时予以更新,相应地,服务消费者则周期性地从注册中心获取服务者地最新位置信息从而“发现”要访问的目标服务资源。复杂的服务发现机制还能够让服务提供者提供其描述信息、状态信息及资源使用信息等,以供消费者实现更为复杂的服务选择逻辑。
服务发现方式
- 实践中根据服务发现过程的实现方式,服务发现还可分为两种类型:客户端发现和服务端发现。
服务端发现:由客户端到服务注册中心发现其依赖到的服务的相关信息,因此,它需要内置特定的服务发现程序和发现逻辑。
客户端发现:这种方式需要额外用到一个成为中央路由器或服务均衡器的组件;服务消费者将请求发往中央路由器或者负载均衡器,由它们负责调查询服务注册中心获取服务提供者的位置信息,并将服务消费者的请求转发给服务提供者。
由此可见,服务注册中心是服务发现得以落地的核心组件。
标签:发现,服务,Kubernetes,--,信息,注册,服务提供者,客户端 From: https://www.cnblogs.com/zhangxin9/p/16751104.html