Go语言中文网 为您找到相关结果 11

如何实现支持数亿用户的长连消息系统 | Golang高并发案例

360消息系统介绍 360消息系统更确切的说是长连接push系统,目前服务于360内部多个产品,开发平台数千款app,也支持部分聊天业务场景,单通道多app复用,支持上行数据,提供接入方不同粒度的上行数据和用户状态回调服务。 目前整个系统按不同业务分成9个功能完整的集群,部署在多个idc上(每个集群覆盖不同的idc),实时在线数亿量级。通常情况下,pc,手机,甚至是智能硬件上的360产品的push消息,基本上是从我们系统发出的。 关于push系统对比与性能指标的讨论 很多同行比较关心go语言在实现push系统上的性能问题,单机性能究竟如何,能否和其他语言实现的类似系统做对比么?甚至问如果是创业,第三方云推送平台,推荐哪个? 其实各大厂都有类似的push系统,市场上也有类似功能的云服务。包括我...阅读全文

博文 2016-01-31 01:00:10 RandyLeonard

如何实现支持数亿用户的长连消息系统 | Golang高并发案例

此文是根据周洋在【高可用架构群】中的分享内容整理而成,转发请注明出处。周洋,360手机助手技术经理及架构师,负责360长连接消息系统,360手机助手架构的开发与维护。不知道咱们群名什么时候改为“Python高可用架构群”了,所以不得不说,很荣幸能在接下来的一个小时里在Python群里讨论golang....360消息系统介绍360消息系统更确切的说是长连接push系统,目前服务于360内部多个产品,开发平台数千款app,也支持部分聊天业务场景,单通道多app复用,支持上行数据,提供接入方不同粒度的上行数据和用户状态回调服务。目前整个系统按不同业务分成9个功能完整的集群,部署在多个idc上(每个集群覆盖不同的idc),实时在线数亿量级。通常情况下,pc,手机,甚至是智能硬件上的360产品的pu...阅读全文

博文 2015-10-24 11:38:56 周洋

golang控制channel的出入口

golang控制channel的出入口 我们常常使用channel来在多个goroutine之间做数据通讯,但是chan作为函数的入参我们应该怎么写呢?也许有人觉得这个问题比较傻,不过这个还真的是我今天才知道的. 首先我们看看下面的代码: func main() { c := make(chan int) go in(c) go out(c) time.Sleep(time.Second) } func in(c chan int) { for i := 0; i < 10; i++ { c <- i } close(c) fmt.Println("int end") } func out(c chan int) { for i := range c { fmt.Printf("%d\n",...阅读全文

博文 2015-05-02 00:00:12 coffee_hc

如何实现支持数亿用户的长连消息系统 | Golang高并发案例

360消息系统介绍 360消息系统更确切的说是长连接push系统,目前服务于360内部多个产品,开发平台数千款app,也支持部分聊天业务场景,单通道多app复用,支持上行数据,提供接入方不同粒度的上行数据和用户状态回调服务。 目前整个系统按不同业务分成9个功能完整的集群,部署在多个idc上(每个集群覆盖不同的idc),实时在线数亿量级。通常情况下,pc,手机,甚至是智能硬件上的360产品的push消息,基本上是从我们系统发出的。 关于push系统对比与性能指标的讨论 很多同行比较关心go语言在实现push系统上的性能问题,单机性能究竟如何,能否和其他语言实现的类似系统做对比么?甚至问如果是创业,第三方云推送平台,推荐哪个? 其实各大厂都有类似的push系统,市场上也有类似功能的云服务。包括我...阅读全文

博文 2016-02-23 10:00:01 abcd1f2

如何实现支持数亿用户的长连消息系统 | Golang高并发案例

此文是根据周洋在【高可用架构群】中的分享内容整理而成,转发请注明出处。 周洋,360手机助手技术经理及架构师,负责360长连接消息系统,360手机助手架构的开发与维护。 不知道咱们群名什么时候改为“Python高可用架构群”了,所以不得不说,很荣幸能在接下来的一个小时里在Python群里讨论golang.... 360消息系统介绍 360消息系统更确切的说是长连接push系统,目前服务于360内部多个产品,开发平台数千款app,也支持部分聊天业务场景,单通道多app复用,支持上行数据,提供接入方不同粒度的上行数据和用户状态回调服务。 目前整个系统按不同业务分成9个功能完整的集群,部署在多个idc上(每个集群覆盖不同的idc),实时在线数亿量级。通常情况下,pc,手机,甚至是智能硬件上的360...阅读全文

博文 2016-02-29 23:00:01 bytxl

Websocket与Socker.IO比较与分析

大家参与的项目里多少都会有web server与browser需要长连接互联的场景,当然我也是,之前没有进行太多方案的调研(比如深入理解通信协议和通用的一些解决方案),所以websocket就不假思索地直接用了,包括去年写的框架xframe里也是直接嵌入了官方websocket的library来实现的。 两周前遇到个场景,前端大佬提需求说能否支持socket.io,之前写的websocket的server组件不能用,当然是欣然答应,花了半天的时间重写了之前的websocket server支持socket.io的协议。但是为什么socketio不能兼容websocket呢?作为一名合格的工程师,不能知其然而不知其所以然,websocket是什么,它与socket.io有什么区别呢?他们又分别...阅读全文

博文 2019-01-30 04:34:45 诶jax

散落在link包中的一些细节

最近有几位同行朋友比较热心的帮忙测试和review了link包的代码,从大家的反馈中,我受益颇多,其中最有感触的是,很多设计的细节是无法通过接口观察出来的,其他人通过阅读代码也不一定能理解理解代码的意图,但是这些细节又是极为有用的,比如使用异步发送与否,对程序的吞吐量影响可以达到接近100%,也就是可以提升或降低一倍的吞吐量,所以我整理这篇文章,分析一下link包当中的一些细节,和设计时候的思路,让大家在使用link包或者开发自己通讯底层的时候有个参考。 首先就从异步和同步收发说起,link包的Session有两个类型的消息发送接口,Send和AsyncSend,分别对应同步和异步发送。使用link包的benchmark工具配合echo server做测试,异步消息发送的吞吐量可以接近于同步...阅读全文

博文 2017-02-10 16:33:58 达达

商业化游戏服务器引擎自定义框架设计思路

文:https://blog.csdn.net/matchvs/article/details/83311574 Matchvs作为国内首款落地的商业化游戏服务器引擎,本文将以它的GameServer”的自定义服务端框架作为例子进行分享。 与skynet等游戏服务器开源框架不同,作为一款商业版的游戏服务器引擎,由于Matchvs本质上是将一整套联网功能集成为一个高可用的SDK,开发者只需根据游戏逻辑,通过SDK提供的API接口来调整所需要的参数即可。但封装的API也带来了拓展性不足的局限性。为此,Matchvs除了提供SDK基础联网服务外,还提供一套名为“GameServer”的自定义服务端框架,以满足更为复杂的联网需求。 GameServer架构 GameServer和引擎的高交互性,以及...阅读全文

博文 2019-01-21 10:34:45 Golang语言社区

websocket借助Redis实现实时双工通信

最近在梳理一些知识点,已脱敏并去除公司实现,做一些自己理解上的实践。 结构 本次打算模拟下一个实时双工交互的业务实践,先来张图。 模式结构图 可以看出,实时双工通信的基础在于Redis部分,核心就在于Pub/Sub模型,其余部分在此基础上丰富了交互内容。 Server端 ,用于模拟平时业务机器,对来自客户端的Request给予Response。 WebSocket Server端,比如直播业务中在直播间内聊天,肯定要用websocket来维系链接状态,这里可以做到语言无关,既可以用Java,也可以用golang。原理都是类似的。根据双工的特征,websocket服务器与客户端发生信息交互的场景无非主动和被动,场景如下: 主动触发, 指的是来自另一个客户端的action,触发了websocke...阅读全文

博文 2019-06-21 21:32:48 尽情的嘲笑我吧

Golang通过TCP与远端服务器交互

C/S构架中,客户端与服务端一般通过TCP通信。建立连接后即验证身份验证,若账户密码正确,TCP连接保持,然后client和server全双工通信。 在B/S构架下,若希望用户通过浏览器也能实现客户端相同的功能,我们可以开发一个中间层为webserver,用户浏览器与webserver交互,webserver再通过tcp连接与真正的server交互。 首先需要明确client与server通信格式。包括如何登陆,如何实现对资源的CURD。通过Wireshark可以抓取明文消息,对于加密消息,需要查阅源代码了解加密方式。 消息体格式 业务消息采用明文,敏感登录信息采用非对称加密RSA结合对称加密DES。 TCP连接登陆需要四个字段,分别为 用户名 密码 desKey desIV 针对以上字段内...阅读全文

博文 2019-02-15 09:34:45 ogood