
架构
文章平均质量分 89
gglinux
这个作者很懒,什么都没留下…
展开
-
Redis数据结构(二)
压缩列表1:压缩列表是为了节省内存而设计的,是一种线性的数据结构。主要用在哈希和列表两种数据类型中。2:压缩列表包含主要包含五个部分,这五个部分顺序排列组合在一起。 结构如下图所示。 表节点,有三个域组成。previous_entry_length,用来记录前一个节点的长度。encoding,记录下一个域的数据类型和长度。content,保存节点的值。 3:压缩列表有一种极端情况,会导致性原创 2016-01-03 17:56:16 · 524 阅读 · 0 评论 -
Redis数据结构(一)
SDS简单动态字符串结构:1:SDS是在C语言字符串的基础上,构造的一种简单的动态字符串(simple daynamic string)。SDS结构体包含三个变量,len用来记录长度,free用来记录未使用字节的数量,buf存储实际的字符串数组。 2:SDS不以‘\0’为结束符,而是以len的长度标识 优点1:O(1)获取字符串长度。sdshdr结构体中,直接存储了字符串的长度。因此直接以sds原创 2015-12-19 16:13:40 · 579 阅读 · 0 评论 -
App首屏接口性能优化
目前所在项目组开发的是一款母婴产品,集工具和社区属性。截止本文发布,注册用户接近7000万,首屏接口日访问量过百万。在首屏中,会给用户展现不同的数据,比如每日任务,宝宝(婴儿)每日概述,胎教音乐,运动视频,热帖等模块。首屏接口性能的好坏,将直接影响到app的使用体验。我们服务端RPC框架采用RESTful,其底层是curl实现的。curl采用http协议的,另外我们服务端的技术栈是PHP。我们都知道原创 2017-02-26 15:37:00 · 3376 阅读 · 0 评论 -
Feed设计与实现
Feed,在社交和信息推荐的App与网站中,基本都会用到的。例如常用的新浪微博,用户登录进入后,展现给我们的就是feed信息流。新浪微博的信息,来自于你关注人所发布的内容。还有微信的朋友圈,今日头条的信息流,好友发布的美拍等,这些都是Feed。玩过知乎的人应该知道,在知乎Feed中,会显示某某关注了某某话题,某某点赞或者赞同了某个回答。广义来讲,这些也算是一种Feed。本文会先介绍几种不同的Feed原创 2017-03-07 14:13:33 · 8050 阅读 · 0 评论 -
用户系统设计
用户系统,主要分为账号体系和用户信息两大类。账号体系包括,登陆验证、注册、第三方授权、以及权限管理。用户信息包括,用户地理位置、用户属性、用户设备信息、还有用户日志信息。本文会介绍用户系统的具体落地方案。登陆验证在一般项目账号体系中,一般会要求支持手机、邮箱、账号、QQ、微信、微博实现登陆。后面三种方式都是基于第三方授权后,完成的身份验证。手机、邮箱、账号则是相对传统的登录方式。用户身份与登录的授权原创 2017-04-01 23:42:30 · 21788 阅读 · 3 评论 -
IM系统设计
即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。实现方式有两种。 第一种基于Server转发的,Client双方通信会经过Server转发来完成消息传递。例如QQ、微信。第二种是基于P2P(点对点)的。P2P的实现依赖于客户端之间的互联,但由于NAT与防火墙的存在,客户端无法直接互联,需要coturn服务器原创 2017-04-15 18:16:22 · 7607 阅读 · 0 评论 -
老树发新芽-前后端分离实践
最早从Web2.0 Ajax技术开始兴起,就有提前后端分离了。从Gmail的单页应用,到现在的单页应用层出不穷。浏览器渲染引擎也一直在突破,越来越多的交互、计算放在了浏览器这一层。传统后端MVC架构,变成了前后端的MVC。后台的接口变成了模型层,逻辑处理层从CGI变成了JavaScript,展示层则还是标记语言HTML和CSS。为什么要做前后端分离当前项目从立项到2018年,已经有...原创 2018-09-11 14:36:52 · 259 阅读 · 0 评论