Jakarta ee 微服务中的代码共享

Jakarta ee 微服务中的代码共享,jakarta-ee,architecture,jax-rs,microservices,Jakarta Ee,Architecture,Jax Rs,Microservices,我们有两种服务。然而,在过去,这两项服务是一项服务,但由于不同的交通需求而被拆分 服务由两类客户消费;其他服务和UI客户端(web、桌面和移动) 服务消费者1:服务 使用数量非常有限的公开端点(addInput,removeInput) 产生高流量 服务2的使用者:UI客户端 使用大量公开的端点 产生更少的流量 目前,他们正在共享代码,但据我所知,微服务不应该共享基本代码。因此,我们认为使用这种方法是错误的 要解决这种微服务架构问题,需要了解哪些关键问题?什么是微服务不应该共享代码。你会故意去搜

我们有两种服务。然而,在过去,这两项服务是一项服务,但由于不同的交通需求而被拆分

服务由两类客户消费;其他服务和UI客户端(web、桌面和移动)

服务消费者1:服务

  • 使用数量非常有限的公开端点(
    addInput
    removeInput
  • 产生高流量
  • 服务2的使用者:UI客户端

  • 使用大量公开的端点
  • 产生更少的流量
  • 目前,他们正在共享代码,但据我所知,微服务不应该共享基本代码。因此,我们认为使用这种方法是错误的


    要解决这种微服务架构问题,需要了解哪些关键问题?

    什么是微服务不应该共享代码。你会故意去搜索两个不同的TCP协议栈吗?如果你用Java写了一个,你必须用Go写另一个吗

    服务可以共享代码,不管是第三方代码还是第一方代码。和在服务的其他方面一样,您不想做的是确保自主性。自主性是给你改变的灵活性。就共享代码而言,自治意味着如果您更新了一个共享组件,比如说处理授权的位,您不需要在其他服务中自动更新该位


    随着时间的推移和需求的变化,服务也将不断发展。当需要更改时,它们可能会在使用的代码中出现分歧,也许您仍然能够重用位。请注意,重用和共享代码本身并不是目的,您会很好

    代码是如何共享的?你用的是npm还是maven?或者您只是手动共享二进制文件?目前,我们正在维护一个类似域的库,以便访问(读写)共享数据库。两个服务都应该(或不应该)共享这个库这可能是一个重复的问题,或者我个人认为,只要两个服务都属于同一个业务域,共享域库就不是问题。但是,您肯定希望避免在域外共享。是的,服务属于同一个业务域,但是,此共享域库当前包含持久性代码,是否应替换此代码?