美文网首页
2021-04-26 使用通信来共享内存

2021-04-26 使用通信来共享内存

作者: 江江江123 | 来源:发表于2021-04-26 20:22 被阅读0次

遇到问题:
使用k8s部署netty服务,想利用k8s的伸缩性部署多个容器。
当用户tcp连接过来时会分发给不同的容器中,所以多个容器中每个都有一些用户的channel
这个时候广播消息就成了问题,因为不同的容器服务拿不到其它容器中的channel

一个不成熟的想法:
当时第一个想法就是用redis存用户信息及channel ,这样就共享信息了。由于channel是有状态的类,所以虽然它可以被序列化存储,但是无法被反序列

一个成熟的想法:
百度之后看到了本文这个标题:用通信来共享内存,我可以不知道哪个用户在哪个容器中,但是每个容器都要订阅消息事件,比如消息中有用户id和发送内容。当触发事件,每个容器都执行查找用户,发送消息的任务。这样总有一个容器服务会完成任务。

具体的订阅发布方式就很多了,如redis,zookeeper,mq.

相关文章

  • 2021-04-26 使用通信来共享内存

    遇到问题:使用k8s部署netty服务,想利用k8s的伸缩性部署多个容器。当用户tcp连接过来时会分发给不同的容器...

  • Go语言并发之道

    使用通信来共享内存,而不是通过共享内存来通信。 关键概念: 原子性: 在它的运行环境,它是不可分割、不可中断。 临...

  • Go的Goroutine的使用

    并发 concurrency Goroutine 通过通信来共享内存,而不是通过共享内存来通信 Channel是G...

  • Go 语言基础—— 通道(channel)

    通过通信来共享内存(Java是通过共享内存来通信的) 定义 通道创建语法: make(chan 元素类型, 容量)...

  • Go channel-1

    不要以共享内存的方式去通信,而是以通信的方式共享内存 sync 鼓励使用channel channel的声明 ch...

  • Handler

    Handler,共享内存的方案,与wait/notify相比使用非常简单 内存共享,线程之间的通信就是共享内存 H...

  • jvm内存模型

    线程通信:线程之间通过共享内存,消息传递的方式进行通信:共享内存通过读取内存中的公共状态来达到彼此间的通信 - 其...

  • go并发通信

    go并发编程时,请记住:“不要通过共享内存来通信,而应该通过通信来共享内存” channel是Go语言在语言级别提...

  • golang并发总结

    golang并发模型 go在语言层面提供了内置的并发支持 不要通过共享内存来通信,而应该通过通信来共享内存 并发与...

  • Go 临界资源

    出现临界资源访问问题的代码 不要以共享内存的方式去通信,而是以通信的方式共享内存 sync 鼓励使用channel...

网友评论

      本文标题:2021-04-26 使用通信来共享内存

      本文链接:https://www.haomeiwen.com/subject/izaerltx.html