首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向微服务提供可伸缩性和可靠性?

如何向微服务提供可伸缩性和可靠性?
EN

Software Engineering用户
提问于 2020-11-02 17:00:38
回答 2查看 196关注 0票数 0

下午好,

我进入了微服务领域--事实上,我成功地完成了几个基于这个体系结构的完整项目--但它们并不是很强大,所以我无法充分利用微服务。

我正在为与可伸缩性和可靠性相关的两个概念而奋斗,我希望得到一个简单的外行人术语解释。

  1. 可靠性,假设我有Docker,并使用它来运行3个相同映像(服务)的实例。它们不能都绑定到同一个端口,所以生成的端口通常是n+1 (9000、9001、9002) --我需要实现一个服务发现来检查三个端口中的一个是否可用吗?还是Docker有一些实现允许我定义一个端口(9000),将流量重定向到一个可用且负载最低的服务实例?
  2. 可伸缩性,假设我有3种不同的服务:苹果、橘子和香蕉。现在,让我们假设Orange是使用最多的,并且需要通过添加几个实例而在另一个服务器上进行缩放。这个过程是如何工作的?我只是在另一台服务器上创建实例吗?但是他们是如何连接到其他服务的?

耽误您时间,实在对不起!

EN

回答 2

Software Engineering用户

发布于 2022-06-20 02:56:33

在您的服务面前,您通常会有一个API网关,或者反向代理。本质上,您是将URL的部分路由到服务实例。通过适当配置的系统,API网关了解服务和实例的类型。用这样的方式来思考:

  • 您的所有服务(苹果、桔子和香蕉)都在服务发现层注册。
  • 您的API网关从为每个服务运行的发现层查找实例,并在它们之间进行负载平衡(就像一个简单的循环发行版)
  • 给定URL到服务的映射,可以保证得到正确的服务,但不能保证每个请求都得到相同的实例

Spring生态系统有用于服务发现的工具"Eureka“和用于.嗯..。API网关。

其中许多功能也可以在Kubernetes集群中处理。例如,"service“表示您的服务之一,负载平衡从一个已知名称/端口到运行您的微服务的特定"pod”之间的流量。kubernetes中的"ingress“服务处理服务映射的URL。

简而言之,有很多方法来解决这个问题。如果您的系统需要自我管理,那么您不仅需要能够拆分和删除服务实例,而且还需要根据需要将互联网流量路由到这些实例。

这通常是从前端到后端的同步调用的可伸缩性工作方式。

票数 1
EN

Software Engineering用户

发布于 2020-11-02 18:05:14

一个有用的模式是消息代理. ,尽管最初创建这些模式是为了方便应用程序之间的通信,但是可以使用消息代理的轻量级版本来确保可靠的消息传递(例如,您可能对消息转换功能不感兴趣)。

这样的中介可能会排队,甚至会持久化消息,从而允许单个服务再次被删除和备份。该中介还可以支持发布/订阅概念,将消息路由给感兴趣的各方,而不必知道实际的端点。中介可以在服务副本之间进行负载平衡,而无需其他微服务了解复制/可伸缩性。

看看卡夫卡,RabbitMQ,Redis等等。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/418608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档