服务发现

服务发现用于动态感知服务提供方地址,并提供服务路由分发策略能力。

客户端发现

客户端从注册中心获取服务列表,客户端监听服务列表的变化,客户端通过路由策略选择合适的服务端地址。

服务端在停服务时,需要先通知客户端不要发送新请求过来,等服务端把当前请求处理完后,才断开连接。

代理端发现

代理端对外提供服务,主要用于对外请求路由。代理端(比如nginx/haproxy)转发请求到后端服务。后端服务暴露地址到注册中心,代理程序动态获取服务地址。

nginx可以试试nginx-upsync-module

在k8s内部,采用nginx+dns+k8s proxy实现。

Service Wiring with Spring Cloud

https://www.infoq.com/articles/spring-cloud-service-wiring

这篇文章聊到了spring cloud如何提供配置管理、服务发现、服务路由能力。结合我们的现状谈谈:

  1. 有些应用没有做到cloud-ready,依赖服务地址配置信息写死。。
  2. 内部请求用dubbo,实现了服务发现,服务路由,大多数问题已经hold住了
  3. 自研的配置管理系统可以做到配置动态更新,比spring cloud 下的Enabling Dynamic Refresh做法优雅多不少
  4. 还需要提供http服务的服务注册、发现能力。为外部http负载均衡、内部http服务依赖提供服务发现、服务路由能力

NGINX Plus vs. F5 BIG-IP: A Price-Performance Comparison

当通用硬件的处理能力越来越强,专有芯片的使用场景会越来越少,硬件提供商会逐步转型为软件提供商。以前也听到不少声音,比如某硬件负载设备,通用cpu中集成了LVS.

未来我们可能、会、应该废弃掉大部分负载均衡设备吧。

Microservices + Oracle: A Bright Future

这篇文章对微服务的讲述很全面。部分观点不谋而合…

Microservices + Oracle: A Bright Future from Kelly Goetsch