我读过萨姆·纽曼的《微服务》一书,在关于分裂整体的一章中,他举了一个“打破外键关系”的例子,他承认跨API进行连接会更慢--但他接着说,如果你的应用程序足够快,它比以前慢有关系吗?
这似乎有点油嘴滑舌?人的经历是什么?您使用了哪些技术来使API联接执行得令人满意?
>
当性能或延迟不太重要时(是的,我们并不总是需要它们),使用简单的RESTful API查询所需的其他数据是完全可以的。如果需要对不同的微服务进行多次调用并返回一个结果,可以使用API网关模式。
在多语言持久化环境中有冗余是完全可以的。例如,您可以为微服务使用消息队列,并在每次更改时发送“更新”事件。其他微服务将监听所需事件并在本地保存数据。因此,不需要查询,而是将所有所需数据保存在特定微服务的适当存储中。
另外,不要忘记缓存:)您可以使用Redis或Memcached这样的工具来避免太频繁地查询其他数据库。
如果一个微服务只知道它自己的领域,但是有一个数据流需要多个服务以某种方式交互,那该怎么做呢? 假设我们有这样的东西: 为论证起见,假设一个订单发货后,就应该创建发票。 我确实知道这可以被认为是高度基于意见的。但它也有具体的一面,因为微服务不应该做上述的事情。因此,必须有一个“根据定义它应该做什么”,这不是基于意见的。 开枪啊。
我有一个微服务,在几个小时的工作时间后,无法连接到数据库,出现以下错误
我们正在尝试将我们的单片应用程序转换为基于微服务的体系结构。我们使用Postgresql作为单一应用程序中的数据库之一,并使用BoneCP进行连接池。 当这个整体被拆分为多个独立的微服务,每个服务都运行在不同的JVM中时,我可以考虑两种连接池选项 BoneCP或任何适合每个微服务的连接池-我的初步研究表明,这是主要选择。可以对每个服务的连接需求进行细粒度控制。但是,不利的一面是,随着服务数量的增加
我正在开发一个具有微服务架构的网站,每个服务都拥有一个数据库。数据库存储微服务所需的数据。 、服务都需要用户信息,所以这两个服务都订阅了。 当有新用户注册时,将触发。 一旦服务收到,它们就会将传入的用户信息放入它们自己的数据库中。因此,他们可以在不询问服务的情况下做事。 到目前为止还不错。但问题来了: 如果我要创建一个新服务呢?如何获取注册用户信息并将其放入新服务 也许我可以从现有服务中获取信息。
我正在使用spring boot spring cloud spring JDBC为单片应用程序开发微服务。目前,应用程序正在通过tomcat JNDI连接池连接到单个数据库。 我们在这里遇到了一个瓶颈,由于各种原因,比如大量的数据库对象、与其他系统的紧密依赖性等,目前无法更改数据库体系结构。 因此,我们基于应用程序特性隔离了微服务。我担心的是,如果我们开发的微服务每个都有自己的连接池,那么到数据
我刚刚开始将我的项目分离到小微服务中。我有一个处理 API 授权的微服务(检查 API 请求中提供的 apiKey 是否有效),因此为此,我有一个单独的 API 授权数据库,其中包含下表和以下架构: APIKey: ApiKey (VARCHAR, PK) TenantID (INT, FK) 租户:租户ID(INT, PK)名称(VARCHAR) 如您所见,APIKey表链接到租户表。 我有另一