标签: microservices

芭蕾舞女演员与其他语言有何不同?

Ballerina是一种通用的,并发的和强类型的编程语言,具有文本和图形语法,可以更好地集成

  1. 芭蕾舞女演员是一种解释语言吗?
  2. 如何建立芭蕾舞女演员计划?我们需要设置Ballerina Home或任何其他系统变量吗?
  3. 芭蕾舞女演员如何支持依赖管理?有没有推荐的构建工具?
  4. 建议与芭蕾舞女演员做什么样的任务?是否只适合做各种系统集成等特定任务?
  5. 我在哪里可以找到语言规范以及芭蕾舞女演员支持的类型是什么?

wso2 microservices ballerina

35
推荐指数
4
解决办法
3400
查看次数

微服务与共享数据库?使用多个ORM?

我正在学习微服务,我将构建一个带有微服务架构的项目.

问题是,我的一个队友希望为所有服务使用一个数据库,共享所有表,以便"数据不会重复",每个服务都将使用不同的框架和语言构建,如django和rails使用非常不同的ORM标准.

什么是正确的方法?因为我认为使用一个数据库会涉及很多"黑客攻击"ORM,以使它们正常工作.

database architecture orm database-design microservices

34
推荐指数
2
解决办法
2万
查看次数

微服务:什么是利弊?

与替代架构相比,使用微服务的优缺点是什么?应该使用微服务时有经验法则吗?

architecture microservices

33
推荐指数
2
解决办法
2万
查看次数

什么是简单的REST,RESTFul,SOA和微服务?

我以为我知道REST /"RESTFul",restfulservices,webservices,SOA和微服务是什么,但我遇到了很多不同的定义,我得出的结论是这些术语被过度使用,误用或者只是定义得很糟糕.

我希望能清楚地理解上述术语代表什么,它们的具体定义,它们的共性和差异,优点和缺点,最重要的是底线 - 为了适当地使用这些术语而要记住的最重要的事情.

rest soa microservices

31
推荐指数
1
解决办法
2万
查看次数

微服务之间的数据共享

当前架构:

在此输入图像描述

问题:

我们在前端和后端层之间有两步流程.

  • 第一步:前端在微服务1(MS1)上验证用户的输入I1
  • 第二步:前端向微服务2 提交I1和更多信息

微服务2(MS2)需要验证来自前端的I1的完整性.如何避免对MS1的新查询?什么是最好的方法?

流程我正在尝试优化删除步骤1.3和2.3

流程1:

  • 1.1用户X从MS2请求数据(MS2_Data)
  • 1.2用户X在MS1上保留数据(MS2_Data + MS1_Data)
  • 1.3 MS1使用B2B HTTP请求检查MS2_Data的完整性
  • 1.4 MS1使用MS2_Data和MS1_Data来持久化数据库1并构建HTTP响应.

流程2:

  • 2.1用户X已经存储在本地/会话存储器中的数据(MS2_Data)
  • 2.2用户X在MS1上保留数据(MS2_Data + MS1_Data)
  • 2.3 MS1使用B2B HTTP请求检查MS2_Data的完整性
  • 2.4 MS1使用MS2_Data和MS1_Data来持久化数据库1并构建HTTP响应.

途径

一种可能的方法是在MS2和MS1之间使用B2B HTTP请求,但我们将在第一步中复制验证.另一种方法是将数据从MS1复制到MS2.然而,由于数据量和它的波动性,这是令人望而却步的.复制似乎不是一个可行的选择.

我认为更合适的解决方案是前端有责任获取微服务2上的微服务1所需的所有信息并将其传递给微服务2.这将避免所有这些B2B HTTP请求.

问题是微服务1如何信​​任前端发送的信息.也许使用JWT以某种方式对来自微服务1的数据进行签名,并且微服务2将能够验证该消息.

注意 每次微服务2需要来自微服务1的信息时,执行B2B http请求.(HTTP请求使用ETAG缓存控制:max-age).怎么避免这个?

建筑目标

在此输入图像描述

微服务1需要来自微服务2的数据,以便能够在MS1数据库上保持MS1_Data和MS2_Data,因此使用代理的ASYNC方法不适用于此.

我的问题是,是否存在设计模式,最佳实践或框架,以实现这种推力沟通.

当前体系结构的缺点是在每个微服务之间执行的B2B HTTP请求的数量.即使我使用缓存控制机制,每个微服务的响应时间也会受到影响.每个微服务的响应时间至关重要.这里的目标是存档更好的性能,以及如何使用前端作为网关在多个微服务之间分配数据,但使用推力通信.

MS2_Data只是MS1必须用于维护数据完整性的产品SID或供应商SID的实体SID.

可能解决方案

在此输入图像描述

这个想法是使用网关作为api网关请求处理,它将缓存来自MS1和MS2的一些HTTP响应,并将它们用作对MS2 SDK和MS1 SDK的响应.这样,在MS1和MS2之间不直接进行通信(SYNC或ASYNC),也避免了数据复制.

当然,上述解决方案仅适用于跨微服务的共享UUID/GUID.对于完整数据,事件总线用于以异步方式(事件源模式)跨微服务分发事件和数据.

灵感:https://aws.amazon.com/api-gateway/https://getkong.org/

相关问题和文档:

architecture design-patterns data-sharing microservices aws-api-gateway

30
推荐指数
1
解决办法
9996
查看次数

如何让docker工具箱与.net core 2.0项目一起工作

我试图在我的.NET核心2.0项目中使用Docker功能时遇到错误.我一直在收到一条错误消息

Visual Studio容器工具要求在构建,调试或运行容器化项目之前运行Docker.有关详细信息,请参阅:http://aka.ms/DockerToolsTroubleshooting

我按照链接,一旦意识到我有Windows 10 Home x64,并且不得不安装Docker Toolbox,而不是Docker For Windows.现在它安装了这个可执行文件

Docker快速入门终端

这是应该启动Docker服务的方式吗?我试过运行这个可执行文件,它似乎正在工作.我的容器正在运行,但Visual Studio容器工具的错误仍然存​​在.

我错过了什么?为了在Visual Studio 2017中使用Docker容器支持,是否有高于Home所需的Windows版本?

更新:

我试图遵循Quetzcoatl的建议,我仍然在视觉工作室中得到关于这些工具的相同错误.这是我在Docker快速启动终端中运行的内容.我尝试在Visual Studio成功打开项目后构建项目,并且仍然收到有关容器工具的上述错误.

我的devenv.exe文件位于

C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe

我的解决方案文件位于

D:\ Development\Visual Studio\Musify2\Musify2\Musify2.sln

在此输入图像描述

更新2:

我运行了一些建议的命令,试试docker quickstart终端,这里是quetz命令的结果在此输入图像描述

c# docker microservices asp.net-core visual-studio-2017

30
推荐指数
2
解决办法
1万
查看次数

数据库与微服务的一致性

在基于微服务的系统中实现数据库一致性的最佳方法是什么?

柏林GOTO,Martin Fowler谈论微服务,他提到的一个"规则"是保留"每服务"数据库,这意味着服务不能直接连接到另一个服务"拥有"的数据库.

这是超级优雅和优雅,但在实践中它变得有点棘手.假设您有一些服务:

  • 一个前端
  • 订单管理服务
  • 忠诚度计划服务

现在,客户在您的前端进行购买,这将调用订单管理服务,这将保存数据库中的所有内容 - 没问题.此时,还会拨打忠诚度计划服务,以便从您的帐户中记入/记入积分.

现在,当所有内容都在同一个DB/DB服务器上时,一切都变得简单,因为您可以在一个事务中运行所有内容:如果忠诚度计划服务无法写入数据库,我们可以回滚整个事情.

当我们在多个服务中执行数据库操作时,这是不可能的,因为我们不依赖于一个连接/利用运行单个事务.什么是保持事物一致并过上幸福生活的最佳模式?

我非常渴望听到你的建议!并提前致谢!

database soa microservices

29
推荐指数
2
解决办法
4350
查看次数

REST vs gRPC:我应该何时选择其中一个?

我看到越来越多的软件组织在面向服务的体系结构中使用gRPC,但人们仍然在使用REST.在什么用例中使用gRPC是有意义的,何时使用REST进行服务间通信是有意义的?

有趣的是,我遇到过使用REST和gRPC的开源项目.例如,Kubernetes和Docker Swarm都在某种程度上使用gRPC进行集群协调,但也公开REST API以与主/领导节点连接.为什么不上下使用gRPC?

rest kubernetes microservices grpc docker-swarm

29
推荐指数
3
解决办法
8816
查看次数

什么是服务发现,为什么需要它?

据我所知,"服务发现"是指客户端了解它想要连接的服务器(或服务器集群)的方法.

我构建了使用HTTP和AMQP等协议与其他后端进程通信的Web应用程序.在这些客户端中,每个客户端都有一个配置文件,其中包含主机名或连接到服务器所需的任何信息,这些信息在部署时使用Ansible等配置工具进行设置.这很简单,似乎工作得很好.

服务发现是否只是将服务器信息放在客户端的配置文件中?如果是这样,为什么它更好?如果没有,它解决了什么问题?

architecture configuration web-services microservices

28
推荐指数
3
解决办法
1万
查看次数

微服务为什么要使用RabbitMQ?

我没有找到一个现有的帖子问这个但是如果我错过它就道歉.

我试图让我的头部微服务,并遇到使用RabbitMQ的文章.我很困惑为什么需要RabbitMQ.服务是否意图使用web api与外界通信,RabbitMQ是否相互通信?

rabbitmq microservices

28
推荐指数
2
解决办法
1万
查看次数