如果您在组织中使用微服务架构,它们可以通过zookeeper或其等价物共享配置。但是,不同的服务应该如何共享一个公共的db模式呢?公共常数?和常用的公用设施?
在微服务之间共享代码和模式的一种可伸缩、高效、实用且有希望是美丽的方法是什么?
关于通用代码,最好使用打包系统。因此,如果您使用Java,那么使用maven,如果您使用Ruby,那么使用Gems,如果您使用python,那么使用pypi等等。理想情况下,打包系统增加的摩擦很小,因此您可以为一个公共lib(或者为不同主题的几个公共lib)拥有一个(比如说,git)存储库,并通过一个工件存储库(例如私有的maven/Gems/pypi)发布它们的工件。然后在微服务中,添加对所需libs的依赖关系,这样代码重用就很容易了。在某些情况下,打包系统确实会增加一些摩擦(比如maven),所以人们可能更喜欢使用单个git repo来处理所有事情和多模块项目设置。这不像第一种方法那样干净,但同样有效,也不太差。其他选择是使用git子模块(不太需要)或git子树(更好),以便将源代码包含在单个“父”存储库中。
关于模式--如果您想按部就班,那么每个微服务都有自己的数据库。他们不碰对方的数据。这是一个非常模块化的方法,起初似乎给您的过程增加了一些摩擦,但最终我想您会感谢我的。它将允许快速迭代您的微服务,例如,您可能希望用一个特定服务的另一个数据库实现替换一个数据库实现。想象一下,当您的所有服务都使用相同的数据库时,您会这样做!祝你好运...但是,如果每一个服务都使用自己的数据库,该服务将正确地抽象数据库(例如,它不接受API调用时的SQL查询;-)),那么将mysql改为Cassandra突然变得可行。拥有完全隔离的数据库还有其他好处,例如加载和伸缩,找出瓶颈,管理等。
因此,简而言之--公共代码(实用程序、常量等)--使用打包系统或一些源代码链接,如git-tree
数据库-你不碰我的,我也不碰你的。这是更好的解决办法。
HTH,Ran。
我正在设计一个微服务架构中的评审分析平台。 应用程序如下所示; null null 问题在于,验证服务需要获取site-a的所有评论,应用验证规则并生成错误(如果有的话)。我知道共享数据库模式和实体打破了微服务体系结构。 一个可能的解决方案是 每当验证服务需要对站点进行审查时,它就会请求网关,网关会将请求重定向到审查服务并采取响应。 这种方法的两个可能缺点是 验证服务是否知道网关?是否会带来依赖?
当前体系结构: 问题: 我们在前端和后端层之间有一个两步流程。 null 微服务2(MS2)需要验证I1的完整性,因为它来自前端。如何避免对MS1进行新的查询?最好的办法是什么? 我试图优化的流删除了步骤1.3和2.3 流程1: null 流程2: 2.1用户X已在本地/会话存储中存储了数据(MS2_Data) 2.2用户X在MS1上保留数据(MS2_Data+MS1_Data) 2.3 MS1使
我即将开始一个小的个人项目,将公开一个关于我的股票投资组合的API。为了实现这个目标,我必须在一个时间表上从3个API(我的股票经纪人,一个stats API和一个获得股票延长时间价格的API)中获取数据,然后计算某些统计并通过REST服务公开它们,这将是最终的目标。我计划将应用程序分为两个服务。第一个将与外部API通信并将它们的信息存储到数据库中,另一个将计算我需要的统计数据并公开REST服务。
我试图理解微服务。我想知道如何解决微服务架构中的一对多/多对多关系问题,以及最佳实践是什么。假设我想将学生课程应用程序转换为学生服务,将课程服务和学生服务对话转换为同一数据库中的学生表和课程服务对话课程表。 示例:学生可以注册许多课程,而且许多课程可以有许多学生(多对多关系)。我有2个微服务1:学生服务2:课程服务 学生服务有学生对象 课程服务具有课程对象 我知道学生服务部必须致电课程服务部才能获
微服务AppCity,实体类City城市 微服务AppCountry,实体类Country国家 在AppCountry的Service层中写一个接口 那这个City应该放在哪,所有的微服务都把自己的实体类放在common模块中不太合适吧,那这两个微服务之间怎么传递这个City呢?DTO和Converter又该怎么写
问题内容: 我实际上是在阅读有关微服务体系结构的文章, 但是,似乎他们正在以最简单的方式处理这些事情, 而无需进行深入的解释。 为了向您解释我的问题,我将向您展示我的实际小体系结构: 在此处输入图片说明 所以,这就是我要使用的。在技术上做任何事情之前,我需要更多的 理论信息。 我的网域描述 我有一些基于移动和浏览器的客户,他们能够在 应用程序上建立联系,获得他们的用户信息,并能够查询 有关所购