什么是Java MicroService

j2e*_*nue 4 java microservices

我一直在网上搜索,但我对java微服务究竟是什么感到困惑.我的意思是我知道什么是Web服务,并且我告诉每个维基的微服务如下:

在计算中,微服务是一种软件架构风格,其中复杂的应用程序由使用与语言无关的API相互通信的小型独立进程组成.

并且微服务的属性是:

微服务架构的属性:

它是一种体系结构服务易于替换服务围绕功能组织,例如用户界面前端,推荐,后勤,计费等服务可以使用不同的编程语言,数据库,硬件和软件环境来实现,具体取决于什么最合适的架构是对称的而不是分层的(生产者 - 消费者)

但我需要一个具体的java示例来了解我如何制作微服务.有没有人有你可以提供的例子?

mpr*_*vat 9

微服务就像它的名字所暗示的那样.这是一项小巧的服务,可以执行非常简单的功能.

所以是的,就代码而言,您可能正在寻找REST服务.请注意,任何其他API样式都可以.它不一定是REST,但它必须与语言无关才能获得所有好处.

但这个想法比那更重要.它背后的想法是,它们非常专业,没有大的业务工作流程.例如,如果您有一个处理付款的服务,则写入审核日志,然后通知客户.我不认为这是一个微服务.编写审计日志,这可能是一个微服务,也通知客户,也处理信用卡.您的系统将通过调用3个必要的微服务来协调该业务工作流程(上述3个步骤).因此,您的系统是协调员,您不必担心实现业务功能.

微服务不会试图想太多,他们只是按照他们的说法去做,但是他们很快就做到了.

所以简而言之.采用一个非常简单的业务功能,在它前面放置一个REST API.你有一个微服务.

微服务有几个有趣的属性:

  1. 它们可以独立部署.这很好,因为您可以部署应用程序的各个部分,而无需一次性完成所有操作.
  2. 他们可以在自己的仓库中运行.因此,如果您的微服务非常耗费内存,则可以将其部署在单独的服务器上,这样就不会影响系统的其余部分.
  3. 他们可以使用不同的技术.你可能有Java的微服务,有些是.Net
  4. 他们保持依赖关系.当开发人员生活在一起时,他们倾向于将依赖关系从一个组件流向另一个组件.在这里你不能.

但你也应该考虑一些缺点

  1. 在所有这些调用中维护一致的事务要困难得多.如果需要回滚,则需要JTA来回滚所有REST调用.这可能是一种痛苦,在我的经历中表现不佳.

  2. 如果您没有一致的日志记录和一致的事务ID,那么通过系统跟踪事务以进行故障排除可能非常粗糙

  3. 如果地面由于可能产生副作用的部署而不断变化,那么找到缺陷的位置可能会变得棘手.

  4. 显然,所有这些REST调用都可能非常昂贵.我不一定会谈论传输,因为很可能所有的微服务都存在于同一个数据中心.但是每次通过网络进行呼叫时,您都必须整理/解组数据,这可能很快就会降低CPU的成本.