标签: microservices

Go:具有共享代码的微服务的存储库布局

我们最近开始使用 Go 来开发新的微服务。每个微服务都是一个 Go 模块,我们将它们作为单一存储库进行管理:

/
  services/
    s1/
      go.mod
      main.go
    s2/
      go.mod
      main.go
Run Code Online (Sandbox Code Playgroud)

这工作正常,但现在我们需要在s1和之间共享一些代码s2- 两个服务使用的一些结构、上传到 S3 的函数等。

处理这种情况的正确方法是什么?common理想情况下,我会在存储库根目录( 的同级目录)中有一个目录,并将通用代码放在那里 - 但是 Go 在编译和 时services如何从那里获取代码?s1s2

go microservices monorepo

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

归档微服务:如何组织业务功能

我正在创建一个微服务,负责处理zip和tar文件的归档和解压缩.

我知道微服务应该专注于一个业务功能(BF).但是,当我想到业务功能时,我应该意味着存档和取消归档(1个BF),归档和单独的归档(2个BF)或压缩,去皮,解压缩,解压(4个BF)?

是否有理由更喜欢其中一种选择呢?

architecture soa microservices

0
推荐指数
1
解决办法
154
查看次数

单片(vs)微服务==>线程(vs)进程

我有一个单一的应用程序,单个进程有5个线程.每个线程完成某些特定任务.考虑使用docker将此应用程序移至微服务.如果我查看架构,每个工作线程将成为一个docker进程.因此,在我的案例中,Monolithic vs Microservices在某些方面变得更像Thread and Process讨论.

拥有单片的最初想法是拥有性能线程并共享相同的内存.现在有了微服务拱,我被推到了一个可能不适合从性能角度来看的流程模型.

我有点坚持如何处理这个问题.

multithreading process docker microservices

0
推荐指数
1
解决办法
2532
查看次数

在微服务之间共享海量数据

我正在设计微服务架构中的评论分析平台。

应用程序如下所示;

  • 从电子商务站点a(site-a)作为excel文件检索的所有产品评论
  • 评论用Excel上传到系统
  • 分析代理可以列出所有评论,对其进行编辑,删除或批准
  • 分析代理可以导出网站-a的所有评论
  • 基于自动正则表达式的检查将应用于上载和编辑的每个审阅。

我有3个微服务。

  • 评论:负责Review Crud操作以及类似于批准/拒绝的操作。
  • 验证:负责定义和应用审阅验证规则。
  • 导出/导入:导出服务在给定站点名称的情况下导出大型文件(例如site-a)

问题出在某个时候,验证服务需要获得站点a的所有评论,应用验证规则并生成错误(如果有)。我知道共享数据库架构和实体会破坏微服务架构。

一种可能的解决方案是

  • 每当验证服务需要对站点进行审阅时,它都会请求网关,网关会将请求重定向到“审阅”服务并采取响应。

这种方法的两个可能的缺点

  • 验证服务知道有关网关?它带来依赖吗?
  • 如果我对某个网站有1b条评论,那么通过其余请求获得所有评论可能是一个问题。(或者,我可以从验证服务到网关发出分页请求。)

那么,在没有服务的情况下在微服务之间共享海量数据的最佳实践是什么?

  • 共享实体
  • 和复制数据

我阅读了很多有关使用消息传递队列的信息,但是我认为使用消息传递队列共享千兆字节的数据并不好。


编辑1:除了共享实体,还可以将数据存储区与rest API一起使用是一种解决方案?假设我正在使用mongodb,而不是在微服务之间共享我的实体对象,我可以使用mongo的rest接口(http://restheart.org/)并尽可能查询数据。

microservices

0
推荐指数
1
解决办法
3955
查看次数

在微服务设计中打包ORM实体

我想建立一个微服务架构。我正在使用Java技术,例如Spring,Hibernate等。在这种情况下,我将实体作为Java类。例如,A微服务具有A实体,B微服务具有B实体,依此类推。因此,如果A和B之间存在一对多的关系,则需要将其中一个类导入其他类以进行声明。

// in A microservice
// need to import class of B like "import com.project.B", but can't
// because, it is different project.
@Entity
class A{
  @OneToMany
  B b;
}

//in B microservice
@Entity
class B{

}
Run Code Online (Sandbox Code Playgroud)

但是,由于微服务设计,它们都位于不同的包或服务中。我是否应该创建另一个项目作为共享库,包括其中的所有实体,然后将其包含在每个微服务中?您还有其他解决方案吗?

entity hibernate microservices

0
推荐指数
1
解决办法
1330
查看次数

微服务传递实体id guid或唯一代码

我们有两种不同的微服务客户服务和订单服务.客户服务商店有关客户的信息,即名称,DOB等.订单服务将管理客户所下的订单,即订单号,成本等.这是将客户唯一参考/ ID传递给订购服务的最佳方式.

解决方案1:客户ID是客户服务中唯一的GUID.这将传递给订单服务

解决方案2:在客户服务中生成业务/人员友好的唯一代码,并将其传递给订单服务

解决方案3:还有别的吗?

rest wcf domain-driven-design microservices

0
推荐指数
1
解决办法
264
查看次数

Docker容器中的微服务

我正在使用Spring Cloud来创建微服务架构.

我使用的是Spring Cloud中的以下功能

  • Zuul - 提供动态路由,监控,弹性,安全性等的API网关服务 -
  • 功能区 - 客户端负载均衡器
  • Feign - 声明式REST客户端
  • Eureka - 服务注册和发现
  • 侦探 - 通过日志分布式跟踪
  • Zipkin - 具有请求可视化的分布式跟踪系统.
  • Hystrix - 适用于所有API的断路器,容错,Hystrix仪表板

现在让我们说如果我有100个微服务,那么我们需要100个服务器来维护每个微服务.所以我想用Kubernetes通过在一个单独的泊坞窗容器部署每个微服务,所以现在因为Kubernetes照顾microserivice健康检查,自动缩放,负载平衡,所以我需要再次使用丝带,尤里卡和Zuul来解决这个问题.

任何人都可以帮我这个

java docker kubernetes microservices spring-cloud

0
推荐指数
1
解决办法
623
查看次数

Spring Cloud Service使用Discovery Server注册,但随后取消注册并停止

Nutshell解释:
构建一个非常基本的Eureka Discovery服务器spring boot 2.0.4.还创建了一个使用Eureka发现的基本Eureka服务.启动发现服务器,然后启动该服务.该服务向发现服务器注册,但随后立即取消注册并停止.

详细信息Discovery Server代码:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(DiscoveryServerApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)

服务:请注意,本例中我将Controller放在主启动应用程序中.

@EnableDiscoveryClient  //Want it to registger with the discovery 
@SpringBootApplication
@RestController  //Obviously not a best practice just an example
public class ServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceApplication.class, args);
    }

    @Value("${spring.application.name")
    private String instance;

    @RequestMapping("/")
    public String message() {
        return "hello from " + instance;
    }

}
Run Code Online (Sandbox Code Playgroud)

服务pom.xml:

<?xml …
Run Code Online (Sandbox Code Playgroud)

java cloud spring spring-boot microservices

0
推荐指数
1
解决办法
676
查看次数

Kubernetes - 部署是否包含服务?

刚读完Nigel Poulton的The Kubernetes Book,但我对服务有点不解.

是否可以以某种方式将服务添加到部署清单中?或者服务是否必须自行发布?部署的全部目的不是指定应用程序运行所需的所有内容吗?

apiVersion: apps/v1beta2
kind: Deployment
metadata: 
  name: hello-deploy
spec:
  replicas: 10
  selector:
    matchLabels:
      app: hello-world
  minReadySeconds: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-pod
        image: nigelpoulton/k8sbook : latest
        ports:
        - containerPort: 8080
Run Code Online (Sandbox Code Playgroud)

kubernetes microservices

0
推荐指数
1
解决办法
67
查看次数

工人-无法选择最佳技术

我想创建一个微服务来并行处理我通过pushAzure Service Bus 获得的一些任务。如果任务成功完成,此微服务将通知Azure服务总线。请参见下图:

图

我已经考虑了以下三个选项:

  1. 托管服务
  2. Azure Web作业
  3. Azure批处理

由于先决条件之一就是该微服务必须位于.NET Core 3中,因此是否有使用Web Jobs代替Hosted Services的正当理由?哪个选项可确保鲁棒性和可扩展性?

worker azureservicebus microservices .net-core-3.0

0
推荐指数
1
解决办法
74
查看次数