Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microservices 启动其他微服务的微服务_Microservices - Fatal编程技术网

Microservices 启动其他微服务的微服务

Microservices 启动其他微服务的微服务,microservices,Microservices,我目前有一个monolith应用程序,每个客户都有一个线程。每次新客户注册时,您都会启动一个新线程;每次他们发送信息(下订单、更改详细信息等)时,消息都会被路由到正确的线程;每次他们注销,线程就会自动关闭 我有一个执行线程和消息管理的路由线程 由于我对微服务的了解有限,这似乎是转换为微服务体系结构的主要候选方案——我有一组独立的进程(客户线程)在运行 当我开始研究它时,我正在考虑创建一个服务,它相当于“客户线程”-客户微服务实例 每次有新客户出现时,您将如何启动一个新的客户微服务实例?您可以使用

我目前有一个monolith应用程序,每个客户都有一个线程。每次新客户注册时,您都会启动一个新线程;每次他们发送信息(下订单、更改详细信息等)时,消息都会被路由到正确的线程;每次他们注销,线程就会自动关闭

我有一个执行线程和消息管理的路由线程

由于我对微服务的了解有限,这似乎是转换为微服务体系结构的主要候选方案——我有一组独立的进程(客户线程)在运行

当我开始研究它时,我正在考虑创建一个服务,它相当于“客户线程”-
客户微服务实例

每次有新客户出现时,您将如何启动一个新的
客户微服务实例?您可以使用某种
管理器微服务
,但考虑到想法是“在云中”分发
客户微服务实例(即,我们不应该关心它们在哪里?),这似乎与我读到的有关微服务及其工作方式的内容不太相符。还是我误解了什么?分发此系统的最佳方法是什么


我考虑过的一种方法是让
manager微服务
联系“流程启动者”服务循环。
processstarter
服务将在每个物理服务器(或每个容器)上运行一个实例,然后启动本地
客户微服务实例
s-但从我读到的内容来看,你不应该真正与多个微服务共享一个容器?

这可能会成为基于观点的堆栈溢出-但我会尝试一下

据我所知,微服务体系结构最常见的定义是“一组在有限环境中运行的小型、集中的服务,这些服务的组合旨在向业务流程提供端到端的功能。”这种方法几乎恰恰相反——线程似乎知道客户的一切,他们做什么以及如何做。线是一块巨石

在微服务体系结构中,您可以在业务域中为特定上下文提供服务,例如
客户档案
订单
发票
客户服务

在这个模型中,您仍然可以有一个“每个客户的线程”,但是线程调用一个微服务(可能通过HTTP)而不是将如何下订单的知识烘焙到线程本身中。线程负责状态管理和编排微服务,以实现端到端业务功能

每个微服务将尽可能独立;每个微服务通常都有自己的容器和部署体系结构

再说一次,主要是意见基础——如果您决定继续使用“每个客户线程”,我不想为每个客户提供新的服务——这将是非常浪费的。我想象你的大部分线程在它们的绝大多数生命中都处于睡眠状态;给他们自己的服务实例(和要运行的容器)没有多大意义


但是,“如何启动服务实例”的答案通常由负载平衡来处理(负载平衡器知道哪些实例可用,并根据您选择的可用性启发式路由请求)。您可以在大多数云提供商上自动扩展,也可以使用Kubernetes之类的工具来管理容器和服务器的供应。

这可能对堆栈溢出来说过于基于观点,但我会尝试一下

据我所知,微服务体系结构最常见的定义是“一组在有限环境中运行的小型、集中的服务,这些服务的组合旨在向业务流程提供端到端的功能。”这种方法几乎恰恰相反——线程似乎知道客户的一切,他们做什么以及如何做。线是一块巨石

在微服务体系结构中,您可以在业务域中为特定上下文提供服务,例如
客户档案
订单
发票
客户服务

在这个模型中,您仍然可以有一个“每个客户的线程”,但是线程调用一个微服务(可能通过HTTP)而不是将如何下订单的知识烘焙到线程本身中。线程负责状态管理和编排微服务,以实现端到端业务功能

每个微服务将尽可能独立;每个微服务通常都有自己的容器和部署体系结构

再说一次,主要是意见基础——如果您决定继续使用“每个客户线程”,我不想为每个客户提供新的服务——这将是非常浪费的。我想象你的大部分线程在它们的绝大多数生命中都处于睡眠状态;给他们自己的服务实例(和要运行的容器)没有多大意义


但是,“如何启动服务实例”的答案通常由负载平衡来处理(负载平衡器知道哪些实例可用,并根据您选择的可用性启发式路由请求)。您可以在大多数云提供商上自动扩展,也可以使用Kubernetes等工具来管理容器和服务器的供应。

好的,那么我想做的可能不符合微服务的理念。我想这是一个正确的答案:)在这种情况下,也许我需要将我的问题范围缩小到
一个服务如何在另一台服务器上启动另一个服务?
-或者考虑如何分解