首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以通过微服务使用不同的语言构建项目吗?

可以通过微服务使用不同的语言构建项目吗?
EN

Stack Overflow用户
提问于 2021-01-25 13:13:22
回答 3查看 132关注 0票数 1

可以通过微服务使用不同的语言构建项目吗?例如,我想要构建一个酒店管理系统,我可以在不同的模块中同时使用asp.net核心和nodejs吗?假设我想使用nodejs获取数据,并使用.net核心发布数据。提亚

EN

回答 3

Stack Overflow用户

发布于 2021-01-26 00:33:04

可以,您可以为不同的微服务选择不同的语言/工具/技术。但更好的选择是选择团队完全熟悉的一种语言。如果你选择了另一种语言,那么你应该有具体的理由。例如,在我的一个项目中,大多数服务都是用Node JS编写的。我们用Go语言编写了一个服务,因为我们需要性能。

票数 4
EN

Stack Overflow用户

发布于 2021-01-31 03:15:57

是的,对不同的微服务使用不同的语言是可能的。例如,您可以在C#( Java )中编写微服务-A,在.NET中编写微服务-B,在NodeJS中编写微服务-C,等等(您可以在此处从许多语言中选择)。但通常不建议这样做。如果你没有很好的理由,至少不会。

微服务架构的优势

事实上,这是微服务的好处之一,能够为每个微服务使用不同的语言、技术、库、数据库和其他组件。但是,你应该注意不要做的太多,并且只在需要的时候做。在现实中,公司和他们的开发团队坚持使用一两个技术堆栈,并使用它开发所有的服务。

选择不同语言和技术的推理

在这样做之前,你应该考虑以下几件事:

  • Developers skills。使用其中一种技术堆栈/语言检查您的开发人员的技能集和诀窍。如果您的大多数开发人员都精通.NET,那么切换到另一个堆栈/语言的成本就是.NET,这将需要时间和学习effort.
  • Business需求和域。在开始使用之前,请考虑检查语言的优点和缺点。例如,如果您有大量CPU密集型工作/负载的微服务,那么您可能希望避免使用NodeJs。也许在这种情况下,.NET核心或Golang将是更好的选择。大多数主要的技术堆栈将涵盖web开发的标准要求,但提前审查和分析始终是good.
  • Databases.您不仅可以灵活地使用编程语言,还可以灵活地使用数据库。选择最适合特定微服务领域或用例的数据库。例如,通常对于大多数具有标准CRUD类型操作的微服务,您可以使用一些关系数据库,如Postgresql或MySql。另一方面,如果您有一个特殊的案例,比如微服务,它有一些全文搜索需求,那么ElasticSearch将是一个很好的选择。这真的取决于你的needs.
  • To的许多技术。对于许多编程语言来说,技术、框架和数据库技术也意味着不同类型的维护问题。更新库,为多种数据库技术编写Repository类需要时间和effort.
  • Historical原因。一些公司有一些遗留系统,这些系统是用一些较老的技术开发的,如VB6或类似技术。例如,它们连接到它以提取一些数据。如果他们决定将系统的某些部分(或整个系统)迁移到微服务,他们会选择新的技术堆栈或多个技术堆栈(较新的技术将吸引开发人员;)。在迁移到较新的one.
  • Consider共享库(如npm、nuget等)之前,他们有一个具有多个堆栈/语言的系统。如果您的大部分微服务都是用相同的语言编写的,那么您可以创建和重用公共代码。这包括横切关注点,如:数据库访问代码(存储库、工作单元、ORM)、队列交互代码、测试基础设施(单元和集成测试基础设施/设置代码)、日志记录和其他常见代码。如果您为不同的微服务使用不同的语言,那么您将无法共享这些类型的代码。用多种语言编写和维护它会耗费大量的time.
  • Front-end.类似的情况也适用于前端。从技术上讲,如果您将前端模块化或拆分到微前端中,则可以使用不同的技术(库和框架)。通常,与后端微服务一样,您可以选择一个库,例如,React并坚持使用它,除非您有充分的理由使用它和/或将其与其他东西结合使用。

结论

我的建议是选择一种技术堆栈/语言,并用该语言开发所有或几乎所有的微服务。数据库、缓存和FE框架/库也是如此。只有当你有很强的理由去选择不同的技术/语言,并且你的主要语言/堆栈不能很好地执行或适应时,才能选择不同的技术/语言。就像我在上面的Elastic Search示例中解释的那样。选择哪种语言取决于许多不同的因素。

票数 1
EN

Stack Overflow用户

发布于 2021-01-25 13:16:26

是。然后,您需要某种形式的进程间通信(IPC)。每种语言都存在于自己的过程中,无论操作系统的风格是什么,也不管您使用的是什么语言。通常进程实际上是通过API进行通信的。还有其他方法可以安排IPC,通过数据库、内存(RAM)、信号,甚至是普通文件(在某些共享介质上)。

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

https://stackoverflow.com/questions/65879328

复制
相关文章

相似问题

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