自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 NATS中文开发文档:监控连接

管理与服务器的交互主要是客户机库的工作,但大多数库也提供了一些对幕后发生的事情的了解。例如,客户端库可以提供一种机制来获取连接的当前状态:nc, err := nats.Connect("demo.nats.io", nats.Name("API Example"))if err != nil { log.Fatal(err)}defer nc.Close()getStatu...

2020-03-29 15:54:26 1379

原创 NATS中文开发文档:发送消息

NATS使用包含目标主题、可选回复主题和字节数组的协议发送和接收消息。有些库可以提供帮助程序来将其他数据格式转换为字节或从字节转换为字节,但是NATS服务器将把所有消息视为不透明的字节数组。所有的NATS客户机都是为了简化消息的发送。例如,要将字符串“All is Well”作为UTF-8字节字符串发送到“updates”主题,您需要执行以下操作:nc, err := nats.Connect...

2020-03-29 15:27:16 1223

原创 NATS中文开发文档:接收消息

通常,应用程序可以异步或同步接收消息。使用NAT接收消息依赖于库的实现。一些语言,如Go或Java,提供同步和异步api,而另一些语言可能只支持一种类型的订阅。在所有情况下,订阅过程包括让客户端库告诉NATS系统应用程序对某个特定主题感兴趣。当应用程序完成订阅时,它会取消订阅,告诉服务器停止发送消息。客户端将为每个匹配的订阅接收一条消息,因此,如果连接具有使用相同或重叠主题(例如foo和&g...

2020-03-29 11:06:00 1453 1

原创 NATS中文开发文档:自动重连

出于任何原因断开连接,大多数(如果不是全部)客户端库将重新连接到NATS系统。重新连接逻辑可能因库而异,因此请查看客户端库的文档。通常,客户机将尝试通过connect调用中提供的url或NATS系统在早期连接期间提供的url,重新连接到它所知道的服务器。此功能允许NATS应用程序和NATS系统本身进行自我修复和重新配置,而无需其他配置或干预。该库可以有几个选项来帮助控制重新连接行为、通知重新连接...

2020-03-28 22:41:47 1619 1

原创 NATS中文开发文档:连接

NATS系统通常由一个带有nats或tls协议的标准URL标识,例如nats://demo.nats.io。NATS系统可以是单个服务器、小型集群或全局超级集群。在这些示例中,我们将依赖nats.io提供的单个测试服务器,位于nats://demo.nats.io,使用4222作为默认端口。NATS还支持通过TLS协议使用安全连接。大多数客户端支持使用URL协议tls自动检测安全连接。在tls:...

2020-03-28 16:49:17 2112

翻译 NATS中文文档:序列号

一对多消息的一个常见问题是,由于网络故障,消息可能丢失或丢弃。解决这种情况的一个简单模式是在消息中包含序列id。接收者可以检查序列id以查看是否遗漏了任何内容。在没有新数据的情况下,序列号与心跳信号结合,形成了一个强大而有弹性的模式来检测丢失。存储和持久化消息的系统也可以解决这个问题,但有时会对手头的问题造成过大的破坏,并且通常会导致额外的管理和操作成本。为了真正利用序列id,需要记住以下几点:...

2020-03-26 12:24:57 280

翻译 NATS中文文档:消息回复

在一个最多只有一次语义的系统中,有时会丢失消息。如果您的应用程序正在执行请求-答复,它应该使用超时来处理任何网络或应用程序故障。对请求设置超时并使用处理超时的代码总是一个好主意。发布事件或数据流时,确保消息传递的一种方法是将其转换为带有确认消息(ACKs)概念的请求-答复。在NATS中,ACK可以是一个空消息,一个没有有效负载的消息。因为ACK可以是空的,它可以占用很少的网络带宽,但是ACK的思...

2020-03-26 12:23:48 740

原创 NATS中文文档:队列组

NATS提供了一个内置的负载平衡特性,称为分发队列。使用队列订阅服务器将在一组订阅服务器之间平衡消息传递,这些订阅服务器可用于提供应用程序容错和扩展工作负载。若要创建队列订阅,订阅服务器将注册队列名称。具有相同队列名称的所有订阅服务器构成队列组。这不需要配置。在发布注册主题的消息时,将随机选择组中的一个成员来接收消息。尽管队列组有多个订阅服务器,但每个消息仅由一个使用。队列组名称遵循与主题相同...

2020-03-26 12:21:53 773

原创 NATS中文文档:请求与应答

请求-应答是现代分布式系统中常见的一种模式。一个请求被发送,应用程序要么等待具有特定超时的响应,要么异步接收响应。现代系统日益复杂,要求具有位置透明、上下缩放、可观测性等特性。许多技术需要额外的组件、sidecars模式和代理来完成完整的功能集。NATS以其核心通信机制publish和subscribe支持这种模式。一个请求被发布到一个给定的主题上,并带有一个应答主题,响应者监听该主题并将响应发...

2020-03-26 12:21:26 741

原创 NATS中文文档:发布与订阅

NATS实现了一个一对多通信的发布-订阅消息分发模型。发布者发送有关某个主题的消息,而侦听该主题的任何活跃的订阅服务器都将接收该消息。订阅者还可以注册感兴趣的有通配符主题,这些主题的工作方式有点像正则表达式(仅有一点像)。这种一对多的模式有时称为扇出。通过浏览pub-sub教程,使用live服务器,尝试自己使用NATS发布订阅。...

2020-03-26 12:21:03 462

原创 NATS中文文档:基于主题的消息传递

本质上,NATS就是消息的发布和监听。这两者在很大程度上都依赖于将消息映射为流或话题的主题。简单来说,主题只是一个字符串,作为发布者和订阅者可以用来查找彼此的名称。NATS服务器保留了一些特殊的字符,规范规定在主题名中只能使用“字母数字”和“.”。主题区分大小写,不能包含空格。为了跨客户端的安全起见,应该使用ASCII字符,尽管将来可能会有所更改。主题层次结构这个.字符用于创建主题层次结构。...

2020-03-26 12:20:32 679

原创 NATS中文文档:什么是NATS

NATS消息传递允许在计算机应用程序和服务之间交换分割为消息的数据。这些消息由主题寻址,不依赖于网络位置。这在应用程序或服务和底层物理网络之间提供了一个抽象层。数据被编码和以帧作封装为消息并由发布者发送。消息由一个或多个订阅者接收、解码和处理。NATS使程序能够轻松地跨不同的环境、语言、云提供商和本地系统进行通信。客户端通常通过一个URL连接到NATS系统,然后对主题进行订阅或发布。通过这种简单...

2020-03-26 12:19:08 3894

原创 三分钟读懂ZeroMQ

为什么需要ZeroMQZeroMQ可以分开来看Zero MQ,MQ就是Message Queue消息队列。Zero是零,它代表零中间件(None-Broker)、零延迟,同时,它又有了新的含义:零管理、零成本、零浪费。总的来说,零表示最小、最简,这是贯穿于该项目的哲理。致力于减少复杂程度,提高易用性。消息队列有四个典型应用场景:异步处理:任务并行,减少响应时间应用解耦:无上下文,无状态,...

2020-03-23 19:34:56 2292

原创 go语言:给map上锁

map不是goroutine safe的,在多goroutine并发时需要上锁。不上锁会出现什么问题呢?资源竞争:会出现脏读,丢失更新等一系列状况。如读到的是旧数据或是读出来的对象已经被删除了,引发panic。锁用的不对会发生什么呢?第一种情况:死锁(dead lock),卡住。使用时lock了,但没有unlock,就锁死了。另外,注册copy对象里带锁时,注意是不是带锁状态一起拷贝了,...

2020-03-01 12:30:10 1880

原创 go语言:内嵌二义性(ambiguous selector )

内嵌两个结构体中有相同字段会发生二义性。先看代码:package mainimport "fmt"type Shape struct { id int}type Object struct { id int}type Color struct { //Object id int}type Rect struct { Shape *Color}fu...

2020-03-01 12:20:00 1339

原创 go语言:带缓冲和不带缓冲通道的区别

不带缓冲的通道这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能完成发送和接收操作。package mainimport ( "fmt" "time")func main() { c := make(chan int, 0) go func() { defer func() { fmt.Println("recycle")...

2020-03-01 12:18:45 408

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除