在微服务架构中,将服务的URL硬编码在代码或配置中不是一个好习惯,因为这可能会发生变化。为此,我们使用服务发现模式。但是使用AWS ELB可以实现相同的目的。一旦我在ELB中注册了服务,并且如果我对它的URL进行了硬编码,那么由于ELB URL保持不变,就不会出现更改服务的Ip的情况。
那么,在代码配置中硬编码AWS ELB URL 和使用服务注册表工具(例如Eureka,Istio )有什么区别?
答案 0 :(得分:1)
我看到通过Eureka,Istio或AWS ELB之类的工具进行服务发现有两个主要区别
在使用AWS ELB时,您是从属或云实施或云提供商。 现在,您的部署已与Cloud Provide结合在一起。现在,将来如果您必须更改云(例如,出于某种原因要迁移到Azure),则迁移将导致额外的工作量,因为您需要在新云上设置云服务发现的重要部分。但是,如果直接使用Eureka或istio,则只需在新的云平台上部署工件和相应的配置即可。
第二个区别是客户端在内部如何发现目标服务。
有两种发现服务的模式:
Istio的尤里卡客户端服务发现 客户端直接与服务注册表对话,并获取要调用的服务的完整地址(主机和端口)。因此,最终,客户端知道服务的主机和端口,并且客户端是对目标服务提出最终请求的客户端,因此,这称为客户端发现。
AWS ELB 是服务器端服务发现 客户端与负载均衡器(或路由器)对话。路由器通过服务注册表在内部发现服务地址,然后进一步调用以目标服务为目标。
主要区别 –
答案 1 :(得分:0)
像Eureka这样的Service Registry是客户端服务发现的一个示例。 AWS ELB表示服务器端服务发现。
请通过-https://microservices.io/patterns/service-registry.html进行深潜。