草庐IT

一致性总线

全部标签

go - 使用 Jaeger 在分布式应用程序中跟踪 Kafka 总线

我分发了包含多个Go服务的应用程序。其中一些使用Kafka作为数据总线。我能够使用Jaeger的opentracing追踪服务之间的调用。我在图表上绘制Kafka跨度时遇到问题,它们显示为间隙。这是我能做的。初始跨度由gRPC中间件创建。生产方:...kafkaMsg:=kafka.Message{Key:[]byte(key),Value:msgBytes}headers:=make(map[string]string)ifspan:=opentracing.SpanFromContext(ctx);span!=nil{opentracing.GlobalTracer().Injec

go - 使用 golang channel 的结果不一致

我用Go编写了一个任务,用于从一堆文本文件中获取唯一列表。我使用channel进行了一些并行化,现在结果不一致-每次使用相同的输入文件输出/不输出5条记录的差异。我正在用gorunprocess.go|测试它wc-l在Fedorax86_64、go1.1.2、8核amd上。代码是:packagemainimport("fmt""os""io""encoding/csv""regexp""log")var(cleanRe*regexp.Regexp=regexp.MustCompile("[^0-9]+")commarune='\t'fieldsPerRecord=-1)funcclea

syntax - 为什么这个 Go-Lang IntelliJ 插件和 Go 的语法不一致?

我对Go有点陌生,所以这可能是一个Go问题,而不是一个IntelliJ问题:我刚刚设置了https://github.com/go-lang-plugin-org/go-lang-idea-plugin/来自IntelliJ14中的zipfile。我发现编译器和语法高亮不一致。world,err:=redis.String(c.Do("GET","message1"))iferr!=nil{fmt.Println("keynotfound")}产生以下错误信息。*notenoughargumentsincalltoRedis.String.仔细观察对Redis.String的调用,它似

go - Couchbase View 一致性

以下代码保证任何给定文档将以持久的方式保存到Couchbase集群中的事件节点,并复制到1个附加节点:cas,err:=myBucket.UpsertDura(docToStore,valueToStore,1,1)考虑到CouchbaseView最终是一致的,在编写文档后调用View(确保文档出现在View中)时保证一致性方面,我似乎有2个选项:选项1将上述代码中的replicateTo值更改为等于集群中附加节点的总数(减去事件节点),确保每个节点都包含文档的副本:cas,err:=myBucket.UpsertDura(docToStore,valueToStore,3,4)选项2

go - 从二进制文件中一致地构建/删除个人信息

我现在意识到Go会在二进制文件中保存源代码的绝对路径,以便打印堆栈跟踪等。我不想完全删除这些信息,但是,这也意味着每个构建相同程序的开发人员都会生成具有不同校验和的可执行文件。在我尝试使用chroot或类似的东西重新实现构建之前:没有任何方法可以告诉Go不要为此目的使用绝对路径吗? 最佳答案 我知道它不会直接解决您的问题,但@JimB的建议确实指出了针对您似乎遇到的问题的一类解决方案。(我认为)更简单的方法之一是让您的开发人员安装Docker并创建一个别名以便go命令运行:dockerrun--rm--tty--volume$GOP

MySQL 到 JSON 不一致提取

我有一个包含6个表和大约200万行的MySQL数据库。我想将所有数据迁移到MongoDB。我决定通过将SQL表转换为JSON并将其导入MongoDB来实现此目的。我用Golang编写了一个程序来提取数据并将其输出为JSON。这是程序的主要功能:funcmain(){//Openadatabaseconnectionvarerrerrordb,err=sql.Open("mysql","root:password@tcp(127.0.0.1:3306)/employees")checkErr(err)//Checkifreachableiferr=db.Ping();err!=nil{l

用于遍历 map 的 Golang 不会返回不一致的值

这个问题在这里已经有了答案:Howtoiteratemapsininsertionorder?(2个答案)关闭4年前。我正在编写一个概率模型,它将接受任意数量的“结果”,然后当一个数字被滚动并传递到模型中时,将返回正确的“结果”;从本质上讲,该逻辑是一张结果图,其中的索引代表该结果的特定权重。成果一25%结果二25%成果三50%这些值将转化为;outcomes:=make(map[int]Outcome)outcomes[25]=Outcome{"OutcomeOne",25}outcomes[50]=Outcome{"OutcomeOne",25}outcomes[100]=Outc

azure - 从服务总线队列检索消息时出错

我尝试使用Go从Azure服务总线队列中提取消息,但在运行代码时出现错误。这是我的代码。funcExample_queue_receive(){ctx,cancel:=context.WithTimeout(context.Background(),10*time.Second)defercancel()connectionString:="Endpoint=sb://{my_service_name}.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey={my_sh

unit-testing - 使用 aetest.NewContext 代替 endpoints.NewContext 以强一致性测试 go-endpoints

我有一个搜索方法:func(sa*SearchApi)Search(cendpoints.Context,r*SearchQuery)(*SearchResults,error){..}如您所见,它需要一个端点。上下文例如:ctx:=endpoints.NewContext(req1)但是对于aetest,我使用的是不同的上下文:otherCtx,err:=aetest.NewContext(&aetest.Options{"",true})特别是这个上下文有额外的强一致性选项-因为我正在设置数据所以我可以测试一个只读的api。我无法将otherCxt传递给我的Search方法,因为它

go - 我应该如何组织我的 go 文件以支持跨平台构建和强制一致性?

我目前正在使用一种方法,其中我有一个“基本”文件,该文件定义了包的类型、接口(interface)和基本API。然后我创建一个_windows.go和_linux.go文件并添加我可以应用该接口(interface)的平台特定类型。设置基本上是这样的:http://play.golang.org/p/2DJxTuSAIh.这被认为是最佳做法吗?这是否有助于一些开发人员专注于Linux而一些开发人员专注于Windows的团队设置,即如果界面发生变化,两个团队都将通过构建失败得到通知? 最佳答案 接口(interface)的使用是一个正