我一直在网上搜索,但对什么是 Java 微服务有点困惑。我的意思是我知道 Web 服务是什么,我告诉我微服务是每个 wiki 的以下内容:
In computing, microservices is a software architecture style in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs.
微服务的属性是:
Properties of microservices architecture:
It's a kind of architecture The services are easy to replace Services are organized around capabilities, e.g. user interface front-end, recommendation, logistics, billing, etc Services can be implemented using different programming languages, databases, hardware and software environment, depending on what fits best Architectures are symmetrical rather than hierarchical (producer - consumer)
但我需要一个具体的 Java 示例来了解我如何制作微服务。有没有人可以提供示例?
最佳答案
微服务顾名思义。这是一项执行非常简单功能的微型服务。
是的,就代码而言,您可能正在查看 REST 服务。请注意,任何其他 API 样式都可以。它不一定是 REST,但它必须语言不可知才能让您获得所有好处。
但这个想法远不止于此。其背后的想法是它们非常专业,并且没有附加到它们的大型业务工作流程。例如,如果您有一项处理付款的服务,然后写入审计日志,然后通知客户。我不会将其视为微服务。写一个审计日志,这可能是一个微服务,也通知客户,处理信用卡。您的系统将通过调用 3 个必要的微服务来协调该业务工作流(上述 3 个步骤)。因此,您的系统是一个协调器,您不必担心业务功能的实现。
微服务不会想太多,它们只是按照指令执行,但它们执行的很快。
简而言之。拿一个很简单的业务功能,在它前面放一个REST API。你有一个微服务。
微服务有几个有趣的属性:
- 它们可以独立部署。这很好,因为您可以部署您的应用程序的各个部分,而无需一次关闭所有内容。
- 他们可以在自己的孤岛中运行。因此,如果您有一个非常需要内存的微服务,它可以部署在单独的服务器上,这样就不会影响系统的其余部分。
- 他们可以使用不同的技术。您可能有 Java 微服务,一些在 .Net 上
- 他们控制依赖关系。当开发人员住在一起时,他们倾向于将一个组件的依赖关系转移到下一个组件。在这里你不能。
但是你也应该考虑一些缺点
在所有这些调用中保持一致的事务要困难得多。如果需要回滚,则需要 JTA 来回滚所有 REST 调用。这可能会很痛苦,而且根据我的经验,效果不是很好。
如果您没有一致的日志记录和一致的交易 ID,通过系统跟踪交易以进行故障排除可能会非常困难
如果由于部署可能会产生副作用而不断发生变化,则可能很难找到引入缺陷的位置。
显然,所有这些 REST 调用累积起来都会非常昂贵。我不一定要谈论传输,因为您的所有微服务很可能都位于同一个数据中心。但是每次通过网络进行调用时,您都必须编码/解码数据,这可能会很快导致 CPU 开销过大。
关于java - 什么是 Java 微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680497/