探索 Nano 分布式(集群)示例(Distributed Chat)

简介: 探索 Nano 分布式(集群)示例(Distributed Chat)

示例仓库


笔者改过的官方示例:distributed-chat


探索


我们进入 3-distributed-chat


启动主服务器


用来管理或者调度集群中的其他服务器。

首先编译一下:


go build -o distributed


然后:


# 它的监听地址是 127.0.0.1:34567,同时也是 gRPC 服务器地址
# 它对外提供了两个服务:
# TopicService.NewUser ->> 处理来自网关的新用户请求的公共逻辑等
# TopicService.Stats ->> 集群机器服务调用统计等等
# 说白了就是 Component 里面的两个 hanlder
./distributed master --listen "127.0.0.1:34567"


启动聊天服务器并让它加入到 cluster


真正的游戏业务逻辑服务


# --master 127.0.0.1:34567 远程主服务器地址
# 它的监听地址是 127.0.0.1:34580,同时也是 gRPC 服务器地址
# 它对外提供了两个服务:
# RoomService.JoinRoom ->> 将客户端的 session 加入 Group 统一管理
# RoomService.SyncMessage ->> 广播消息,就是调用 Group 管理的 session,写信息到它们给自的 websocket 连接
./distributed chat --master "127.0.0.1:34567" --listen "127.0.0.1:34580"


启动网关服务器并让它加入到 cluster


客户端真正要连接的入口地址:


# -gate-address "127.0.0.1:34590" 这个就是客户端 websocket 连接要连接的地址
# 它的监听地址是 127.0.0.1:34570,同时也是 gRPC 服务器地址
# 它对外提供了两个服务:
# BindService.Login # 鉴权方面到处理
# BindService.BindChatServer # 直接绑定到具体到聊天服务器
./distributed gate --master "127.0.0.1:34567" --listen "127.0.0.1:34570" --gate-address "127.0.0.1:34590"


远程服务 Remote Service


集群上的每台服务器,通过 Master 节点注册后,都会把除自己以外的集群中其它节点提供的服务注册为自己的 Remote Service。


所以当我们客户端调用 starx.notify('RoomService.SyncMessage'...,其实网关服务器会调用它的 Remote Service,最终会转到 Chat Server 节点。


具体流程


http://127.0.0.1:12345/web/

用户加入房间:BindService.Login(Gate Server) -> TopicService.NewUser(Master Server) -> RoomService.JoinRoom(Chat Server)

用户发送消息:Gate Server -> RoomService.SyncMessage(Chat Server)


相关文章
|
3月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
317 2
|
8月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
机器学习/深度学习 边缘计算 人工智能
第二届边缘计算与并行、分布式计算国际学术会议(ECPDC 2025) 2025 2nd international Conference on Edge Computing, Parallel and Distributed Computing
第二届边缘计算与并行、分布式计算国际学术会议(ECPDC 2025) 2025 2nd international Conference on Edge Computing, Parallel and Distributed Computing 机器学习 计算学习理论 数据挖掘 科学计算 计算应用 数字图像处理 人工智能
258 6
|
7月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
8月前
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
708 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
451 62
|
11月前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
257 1
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
181 1
|
存储 监控 大数据
构建高可用性ClickHouse集群:从单节点到分布式
【10月更文挑战第26天】随着业务的不断增长,单一的数据存储解决方案可能无法满足日益增加的数据处理需求。在大数据时代,数据库的性能、可扩展性和稳定性成为企业关注的重点。ClickHouse 是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS),以其卓越的查询性能和高吞吐量而闻名。本文将从我的个人角度出发,分享如何将单节点 ClickHouse 扩展为高可用性的分布式集群,以提升系统的稳定性和可靠性。
1163 0

热门文章

最新文章

下一篇
oss云网关配置