
系统架构师
文章平均质量分 86
shankusu2017
go lua c 服务器开发 shankusu2017.github.io
展开
-
千万同时在线直播聊天室架构演进
以下内容转载自https://www.toutiao.com/i6940139685289132582/腾讯技术工程2021-03-16 18:02:00作者:kellyliang聊天室概述随着直播和类直播场景在微信内的增长,业务对临时消息通道的需求日益增长,聊天室组件应运而生。聊天室组件是一个基于房间的临时消息信道,主要提供消息收发、在线状态统计等功能。1500w在线的挑战视频号直播上线后,在产品上提出了直播后台需要有单房间支撑1500w在线的技术能力。接到这个...转载 2021-03-22 20:04:05 · 770 阅读 · 0 评论 -
读扩散和写扩散的理解
以下内容转载自https://blog.youkuaiyun.com/aaa821/article/details/72550767今天看一篇文章时,提到了微信的群聊是写扩散的,第一次接触到写扩散这个名词,于是去查了下资料,有写扩散就有读扩散嘛定义如下:根据上面的定义,我是这样理解的,什么是写扩散,什么是读扩散,要怎么区分他们,区别之处就在于“主动”写扩散是主动把消息写到订阅者的消息列表里,这样订阅者就不用去我的outbox拉取消息 ,所以当我要是有很多订阅者时,我就要写很多次,这就是上面定义..转载 2021-03-22 11:04:58 · 338 阅读 · 0 评论 -
垃圾回收(GC)浅谈
以下内容转载自https://juejin.cn/post/6844903857609244685关于内存计算机通过两个机制,去实现内存的高效使用。第一种机制是虚拟内存。硬盘的容量其实是远远大于内存的(RAM),虚拟内存会在内存不足的时候,把不经常访问的内存的数据写到硬盘里。虽然说硬盘容量比较大,但是它的访问速度却很慢。如果内存和硬盘交换数据过于频繁,处理速度就会下降,计算机就会看上去像卡死了一样,这种现象被叫做抖动(Thrushing)。造成电脑蓝屏的主要原因之一就是抖动。第二种机制就是.转载 2021-03-15 17:05:58 · 245 阅读 · 0 评论 -
WebSocket :用WebSocket实现推送你必须考虑的几个问题
以下内容转载自https://blog.youkuaiyun.com/shangmingtao/article/details/758100992.项目背景、硬件环境及客户端支持本项目通过WebSocket实现同时在线用户量几千的推送服务器(可内网运行)。且可实时查看用户在线状态。服务器:centos 6.5、tomcat 7客户端:移动端(安卓、IOS)、网页端。服务端第三方库 :javax.websocket3.本文研究内容应用的线上环境后各种异常情况处理:使用WebSocket时,依赖TC.转载 2021-03-09 11:24:28 · 780 阅读 · 0 评论 -
高性能服务器架构思路「不仅是思路」
以下内容转载自https://www.toutiao.com/i6701482392374215182/阿里云云栖号2019-06-12 14:17:19在服务器端程序开发领域,性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而,服务器端程序在性能问题上应该有何种基本思路,这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问题的基本策略和经典实践,并分为几个部分来说明:1.缓存策略的概念和实例2.缓存策略的难点:不同特点的缓存数据的清理.转载 2021-03-05 17:02:36 · 221 阅读 · 0 评论 -
MQ不丢消息,究竟是怎么实现的?
以下内容转载自https://www.toutiao.com/i6834090029292192264/技术联盟总坛2020-06-03 19:59:40作者: 58沈剑 架构师之路前几天有水友提问:通过消息队列(MsgQueue,MQ)发送任务和消息,万一MQ重启了怎么办?能否保证MQ不丢消息?今天就聊聊MQ的消息必达性架构与流程。不丢消息,MQ架构设计的核心方向是什么?MQ要想消息必达,架构上有两个核心设计点:(1)消息落地;(2)消息超时、重传、确认;...转载 2021-03-05 11:50:25 · 169 阅读 · 0 评论 -
linux下高并发服务器实现
以下内容转载自https://www.toutiao.com/i6833343822131364364/在做网络服务的时候tcp并发服务端程序的编写必不可少。tcp并发通常有几种固定的设计模式套路,他们各有优点,也各有应用之处。下面就简单的讨论下这几种模式的差异:单进程,单线程在accept之后,就开始在这一个连接连接上的数据收接收,收到之后处理,发送,不再接收新的连接,除非这个连接的处理结束。优点: 简单。缺点: 因为只给一个客户端服务,所以不存在并发的可能。应用: 用在只给一个.转载 2021-03-05 11:32:02 · 498 阅读 · 0 评论 -
什么才是真正的架构设计?
以下内容转载自https://www.toutiao.com/i6803176165226840589/Java技术架构2020-03-12 12:38:05作者:规速一. 什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。Linux有架构,MySQL有架构,JVM也.转载 2021-03-05 11:29:17 · 219 阅读 · 2 评论 -
主流的消息队列MQ比较,详解MQ的4类应用场景
以下内容转载自https://www.toutiao.com/i6746452046032945675/企业驱动2019-10-11 15:59:32上篇文章详细介绍了大名鼎鼎的RPC和MQ之间的区别与联系,下面从实践角度看看目前用的尤其多的MQ实践情况。消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Ka.转载 2021-03-05 11:15:49 · 663 阅读 · 0 评论 -
go 单例模式
以下内容转载自https://mp.weixin.qq.com/s/JAlt0JQt8hkPCxYbmOMFJwGo语言中的单例模式在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python、PHP、Ruby)转向Go语言的跨语言学习者。在过去的很长时间里,很多开发人员和初创公司都习惯使用Python、PHP或Ruby快速开发功能强大的系统,并且大多数情况下都不需要担心内部事务如何工作,也不需要担心线程安全性和并发性。直到最近几年,多线程高并发的系统开始流行起来,我们现在不.转载 2021-03-04 16:19:53 · 2494 阅读 · 1 评论 -
C语言开发工程师一定要熟读的5个开源项目
以下内容转自https://www.toutiao.com/i6661021082251690508/如果大家详细的分析一下自己所从事过的项目,或者分析一下目前热门招聘岗位,就可以抽取一些公共的技术(或者基础技术),如果能熟练掌握这些基础技术,对开发工作将达到事半功倍的效果,同时对以后跳槽也有很大的帮助。如果本文直接说出这些技术概念,大家肯定非常清楚,但达到熟悉的程度确实难上加难。因此,本文搜集了目前比较流行的几个开源项目,这些项目中基本上包含了这些技术,如果大家能把这些开源项目学透,在以后的开发工作.转载 2021-02-22 23:55:29 · 466 阅读 · 0 评论 -
linux后台开发具备能力集锦
以下内容转载自https://www.toutiao.com/i6852947509183152651/Hu先生Linux后台开发2020-07-24 15:36:20Linux后台开发应该具备技能给大家分享一篇:C/C++ Linux 后台服务器开发高级架构师学习路线一、linux和os:1、命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验Netstat 命令用于显示各种网络相关信息,如网络连接,路..转载 2021-02-17 21:35:29 · 250 阅读 · 0 评论 -
Reactor模型 介绍
以下内容转载自https://www.toutiao.com/i6808729994718609934/要无障碍阅读本文,需要对NIO有一个大概的了解,起码要可以写一个NIO的Hello World。说到NIO、Netty,Reactor模型一定是绕不开的,因为这种模式架构太经典了,但是好多人在学习的时候,往往会忽视基础的学习,一上来就是Netty,各种高大上,但是却没有静下心来好好看看Netty的基石——Reactor模型。本文就带着大家看看Reactor模型,让大家对Reactor模型有个浅显.转载 2021-02-17 20:57:38 · 627 阅读 · 0 评论 -
面试官:磁盘 IO 变高,你怎么分析?
以下内容转载自https://www.toutiao.com/i6888943114816324103/java互联网架构2020-10-29 15:37:39工具准备:iotop: http://guichaz.free.fr/iotop/pt-ioprofile: http://www.percona.com/downloads/percona-toolkit/2.2.1/IO高分析方法:1、查看磁盘使用率 df -lh2、安装iostat 安装命令: yum instal.转载 2021-02-17 20:42:11 · 157 阅读 · 0 评论 -
如何快速定位 Redis 热 key?
以下内容转载自https://mp.weixin.qq.com/s/rZs-oWBGGYtNKLMpI0-tXw咔咔侃技术2020-03-31 18:21:53背景在 Redis 中,热 key 指的是那些在一段时间内访问频次比较高的键值,具体到业务上,商品的限时抢购、瞬时的新闻热点或某个全局性的资源,都极有可能产生热点 key。热点 key 的出现可能会对系统的稳定性和可用性造成影响,比如对应节点的网卡带宽被打满,出现丢包重传,请求波动耗时大幅上升,甚至影响到业务的正常使用,...转载 2021-02-17 20:40:53 · 492 阅读 · 0 评论 -
Redis的哨兵 (sentinal) 机制的工作原理
以下内容转载自https://www.toutiao.com/i6748596176645259790/什么是哨兵机制?Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。 自动故.转载 2021-02-17 19:57:54 · 370 阅读 · 0 评论 -
微服务在微信的架构实践
以下内容转载自作者|许家滔编辑|田光微服务的理念与腾讯一直倡导的“大系统小做”有很多相通之处,本文将分享微信后台架构的服务发现、通信机制、集群管理等基础能力与其上层服务划分原则、代码管理规则等。背景介绍首先,我们需要敏捷开发。过去几年,微信都是很敏捷地在开发一些业务。所以我们的底层架构需要支撑业务的快速发展,会有一些特殊的需求。另外,目前整个微信团队已经有一千多人了,开发人员也有好几百。整个微信底层框架是统一的,微信后台有千级模块的系统。比如说某某服务,有上千个微服务在跑,而集群...翻译 2021-02-16 00:32:31 · 296 阅读 · 0 评论 -
深度理解select、poll和epoll,IO多路复用模型实现机制
以下内容转载自https://www.toutiao.com/i6588439740461089287/在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。select()和poll() IO多路复用模型select的缺点:单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改.转载 2021-02-16 00:16:00 · 273 阅读 · 0 评论 -
IO模式和IO多路复用(阻塞IO、非阻塞IO、同步IO、异步IO等概念)
以下内容转载自https://www.toutiao.com/i6586081000172814856/网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人装13不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。回到顶部1 基础知识回顾注意:咱们下面说的都是Linux环境下,跟Windows不一样哈~~~1.1 用户空间和内核空间现在操作系统都采用虚拟寻址,处理器先产生一个虚拟地址,通过地址翻译成物理地址(内存的地址),再通过总线的传递,.转载 2021-02-16 00:14:15 · 413 阅读 · 0 评论 -
go golang 中使用protobuf
以下内容转载自https://segmentfault.com/a/1190000009277748golang使用protobufgolangprotobuf发布于 2017-05-03为什么要使用protobuf最近的项目中,一直使用Json做数据传输。Json用起来的确很方便。但相对于protobuf数据量更大些。做一个移动端应用,为用户省点流量还是很有必要的。正好也可以学习一下protobuf的使用跟Json相比protobuf性能更高,更加规范 编解码速度快,数.转载 2020-12-02 20:16:44 · 607 阅读 · 0 评论 -
[翻译] ProtoBuf 官方文档(二)- 语法指引(proto2)
以下内容转载自https://www.jianshu.com/p/6f68fb2c7d19翻译查阅外网资料过程中遇到的比较优秀的文章和资料,一是作为技术参考以便日后查阅,二是训练英文能力。此文翻译自Protocol Buffers 官方文档 Language Guide 部分翻译为意译,不会照本宣科的字字对照翻译以下为原文内容翻译语法指引(proto2)本指南介绍如何使用 protocol buffer 语言来构造 protocol buffer 数据,包括.proto文件...转载 2020-09-24 16:34:13 · 399 阅读 · 0 评论 -
[翻译] ProtoBuf 官方文档(一)- 开发者指南
以下内容转载自https://www.jianshu.com/p/bdd94a32fbd1翻译查阅外网资料过程中遇到的比较优秀的文章和资料,一是作为技术参考以便日后查阅,二是训练英文能力。此文翻译自 Protocol Buffers 官方文档 Developer Guide 部分翻译为意译,不会照本宣科的字字对照翻译以下为原文内容翻译开发者指南欢迎使用 protocol buffers 的开发者文档, protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构.转载 2020-09-24 16:31:45 · 257 阅读 · 0 评论 -
Facebook第三方登录流程总结
转载自https://cloud.tencent.com/developer/article/1620409Facebook第三方登录流程总结2020-04-24阅读1.8K0授权Facebook第三方登录流程有时候为了迅速获客,会在注册登录页支持第三方登录,比如国内一些小众论坛的qq登录简书的社交账号登录优快云的社交账号登录一些国际的软件/网站支持的比较多的第三方登录是Google第三方登录、Facebook第三方登录等。这里记录下Faceboo...转载 2020-10-22 16:15:48 · 6968 阅读 · 1 评论 -
理解 OAuth 2.0
转载自http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html作者:阮一峰日期:2014年5月12日OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。更新:我后来又写了一组三篇的《OAuth 2.0 教程》,更加通俗,并带有代码实例,欢迎阅读。一、应用场景...转载 2020-10-22 15:27:22 · 348 阅读 · 0 评论 -
apple帐号登录服务器端接入
原文转载自http://cwqqq.com/2020/09/27/apple_login_api_server_sideapple帐号登录服务器端接入最近有新产品要提交App Store,发现APP审核增加了接入apple帐号登录的要求。所以,借此机会研究下apple帐号登录,做一个分享。Sign In With Apple这是苹果推出一套标准接口,用户通过端上的Apple ID登录第三方APP。官方网址 https://developer.apple.com/document.转载 2020-10-15 16:34:00 · 6574 阅读 · 0 评论 -
Facebook登录服务器端接入
以下内容转载自http://cwqqq.com/2017/12/06/facebook_login_api_server-sideFacebook登录服务器端接入最近研究了下facebook登陆授权,发现他的API文档真的不尽人意,有点像是新手引导,很多API参数细节都没有说明,都是一笔带过。所以,我这里写了篇文章,专门讲Facebook登录服务器端接入。验证facebook账号授权客户端先拉起facebook授权页面,等用户授权登录后,取到玩家的facebook id 和 t.转载 2020-10-15 16:32:52 · 3416 阅读 · 0 评论 -
奔跑的微信,失控的张小龙
以下内容转载自https://www.toutiao.com/i6901087809692500487/钛媒体APP2020-12-01 09:05:162005年马化腾在收购Foxmail时,或许并没有想到张小龙会在几年后送给他一张最珍贵的移动互联网船票。他一方面看上了那500万个QQ所没有的高端用户,另一方面又隐约感觉这个穿着拖鞋打双升的程序员,有那么一点奇异的风骨。天生异象,必是奇人。收编张小龙,会不会等同于抄底诸葛亮?6年后,性感的来复枪声唤醒了年轻人的冲动。张小龙的天才之.转载 2020-12-01 19:57:26 · 861 阅读 · 0 评论 -
当你按下「随机播放」时,QQ音乐和网易云们都做了什么?
以下内容转载自https://zhuanlan.zhihu.com/p/303256600在音乐类应用中,随机播放应该是我们最常用的功能之一。而作为产品经理而言,大家有没有想过:随机播放的算法应该是怎样的呢?里面的歌曲,通过怎样的算法才能实现随机性?这篇文章,作者尝试给出自己的答案,推荐各位阅读。作者:李晨微信公众号:APPSO下班了,又一次走进熟悉的地铁站,听着已经听过无数遍哐当哐当的地铁轨道声,你突然觉得每天的日子有点乏味和单调,就像太阳每天从东边升起,又从西边落下。戴上耳机..转载 2020-11-26 23:14:32 · 1069 阅读 · 0 评论 -
node.js 安装详细步骤教程
以下内容转载自https://blog.youkuaiyun.com/antma/article/details/86104068本机环境:Windows 10 专业版 x641、下载安装包Node.js 官方网站下载:https://nodejs.org/en/选择操作系统对应的包:下载完成,安装包如下:2、安装打开安装,傻瓜式下一步即可:选择安装位置,我这里装在D盘下:安装成功,文件...转载 2020-11-06 09:56:15 · 6611 阅读 · 3 评论 -
关于程序内储池的一些想法
晚上下雨,有点燥热,想着一些内存池的事情。我打算弄一个固定大小的内存池分配器,主要是为了大量的Lua-Table,至于目前我们的服务器主程序中同时存在多少个Lua-Table,我预计有上W以上吧,我想着glibc的alloc模块可能对这这种大量的小内存的分配利用率不是很高,所以想自己弄一个内存池分配器。这是最近的想法,刚才找了一篇文章https://www.cnblogs.com/fin...原创 2019-05-26 02:26:02 · 134 阅读 · 0 评论 -
高性能IO之Reactor模式
以下内容转载自https://www.cnblogs.com/doit8791/p/7461479.html讲到高性能IO绕不开Reactor模式,它是大多数IO相关组件如Netty、Redis在使用的IO模式,为什么需要这种模式,它是如何设计来解决高性能并发的呢?最最原始的网络编程思路就是服务器用一个while循环,不断监听端口是否有新的套接字连接,如果有,那么就调用一个处理函数处...转载 2018-09-03 14:35:25 · 122 阅读 · 0 评论 -
写给非专业人士的服务器技术指南
以下内容转载或引用或参考http://geek.youkuaiyun.com/news/detail/237191译者注:当你遇到别人讨论关于服务器的内容时,你是否能够听得懂?本文作者向读者介绍了一些非技术类的内容,让读者对服务器有一个更好的理解。以下为译文。假设你在休息室里面碰到了一位软件开发的同事。她正准备去玩桌上足球,而你为了能够提提神,正在喝红牛。虽然你不是故意为了转载 2017-09-20 09:53:24 · 330 阅读 · 0 评论 -
服务端开发所需技能归纳
以下内容转载或引用或参考http://www.jianshu.com/p/40849a425846如果你没有接触过服务端开发,是否会好奇服务端的同学究竟做了什么?仅仅是做数据增删改查这样的事情吗?这篇文章告诉你,服务端的开发者都做了哪些事情,他们需要掌握和使用到哪方面的技术。本文适合有学习服务端开发想法或者初级的服务端开发者们阅读。不是技术干货但是希望能提供入门或初转载 2017-07-15 14:21:16 · 784 阅读 · 0 评论 -
游戏服务端开发探幽(一)
以下内容转载或引用或参考自http://www.jianshu.com/p/70e97ccb29f4引言游戏开发分为客户端和服务端,服务端和客户端的逻辑很相似,但是服务端更多在于数值计算和校验,客户端更多在于面向玩家的一些逻辑。C/S通信设计大多数的网络游戏的服务器都会选择非阻塞select这种结构,为什么呢?因为网络游戏的服务器需要处理的连接非常之多,转载 2017-07-15 14:17:26 · 433 阅读 · 0 评论 -
应届毕业生如何成为一名服务器端开发工程师(一)
以下内容转载或引用或参考http://www.jianshu.com/p/814d05ddb54a画个图很重要服务器端开发是开发者中技术性偏强,对逻辑思维要求更高的一个细分方向,不同于前端,移动端等等,后者很多在做偏UI的事情,而服务器端处理的只有逻辑和业务。所以从长远的职业规划来讲,从事服务端开发作为技术道路的起点对长期是很有利的。转载 2017-07-14 17:53:21 · 649 阅读 · 0 评论 -
写给那些傻傻的,想做服务器开发的应届生
以下内容转载或引用或参考http://blog.devtang.com/2015/10/07/why-fresh-wants-to-do-server-dev/写给那些傻傻的,想做服务器开发的应届生发表于 2015-10-07 12:05文章目录1.前言2.对服务器开发的误解3.服务器开发的苦3.1.永远只能半夜上线3.2.永转载 2017-07-14 15:05:10 · 904 阅读 · 1 评论 -
linux 线程同步 互斥锁、条件变量、读写锁、自旋锁、信号量
以下内容转载自https://www.toutiao.com/i6850002300325347843/linux技术栈2020-07-16 17:07:24一、互斥锁(同步) 在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话,打印出来的东西肯定是错乱的。 在线程里也有这么一把锁——互斥锁(mutex),互斥锁是一种简单的加锁的方法来控.转载 2021-02-14 23:13:26 · 260 阅读 · 0 评论 -
Kafka入门
以下内容转载自https://www.toutiao.com/i6766356279280534024/Java技术架构2019-12-04 07:18:07专注于Java领域优质技术,欢迎关注作者: Java3y 来自:Java3y前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y在这篇之前已经写过两篇基础文章了,强烈建议先去阅读:什么是ZooKeeper? 什么是消息队.转载 2021-02-14 18:54:32 · 146 阅读 · 0 评论 -
Redis从入门到精通,至少要看看这篇
以下内容转载自https://www.toutiao.com/i6747926805744730627/51CTO2019-10-15 15:22:21常用的 SQL 数据库的数据都是存在磁盘中的,虽然在数据库底层也做了对应的缓存来减少数据库的 IO 压力。图片来自 Pexels由于数据库的缓存一般是针对查询的内容,而且粒度也比较小,一般只有表中的数据没有发生变动的时候,数据库的缓存才会产生作用。但这并不能减少业务逻辑对数据库的增删改操作的 IO 压力,因此缓存技术应运而生,..转载 2021-02-14 18:47:28 · 152 阅读 · 0 评论 -
分布式系统原理
以下内容转载自https://www.toutiao.com/i6885896991071535619/懂点代码的程序员2020-01-17 06:22:001 概念1.1 模型节点在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。异常机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台..转载 2021-02-14 18:42:18 · 341 阅读 · 0 评论