随笔分类 -  系统架构

摘要:怎么理解缓存雪崩? 举个简单的例子:如果所有首页的Key失效时间都是12个小时,中午13点刷新的,我零点有个秒杀活动大量用户涌入,假设当时每秒6000个请求,本来缓存在可以抗住每秒5000个请求,但是缓存当时所有的Key都失效了。此时1秒6000个请求全部落数据库,数据库必然扛不住,它会报警一下,真 阅读全文
posted @ 2021-08-10 13:52 周国伟 阅读(80) 评论(0) 推荐(0)
摘要:时间复杂度是衡量算法好坏的一个重要指标。 衡量代码好坏,包括两个非常重要的指标: 1、运行时间; 2、占用空间; 由于运行环境和输入规模的影响,代码的绝对执行时间是无法评估的,但我们却可以预估代码基本操作执行次数。 基本操作次数 场景一:一条长10寸的面包,每3天吃掉1寸,那么吃掉整个面包需要几天? 阅读全文
posted @ 2021-08-10 11:43 周国伟 阅读(332) 评论(0) 推荐(0)
摘要:事务 严格意义上的事务实现应该是具备原子性、一致性、隔离性和持久性,简称ACID。 1、原子性:可以理解为一个事务内的所有操作要么都执行,要么都不执行。 2、一致性:可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我打200块,此时你的账上应该 阅读全文
posted @ 2021-08-10 11:33 周国伟 阅读(64) 评论(0) 推荐(0)
摘要:消息队列,一般我们会简称它为MQ(Message Queue),嗯,就是很直白的简写。 队列是一种先进先出的数据结构。 消息队列可以简单理解为:把要传输的数据放在队列中。 把数据放到消息队列叫做生产者,从消息队列里边取数据叫做消费者。 为什么要用消息队列? 解耦、异步、削峰/限流 阅读全文
posted @ 2021-08-10 10:11 周国伟 阅读(172) 评论(0) 推荐(0)
摘要:在互联网早期时候,单体架构就足以支撑起日常的业务需求,大家的所有业务服务都在一个项目里,部署在一台物理机器上。所有的业务包括你的交易系统、会员信息、库存、商品等都夹杂在一起,当流量一旦起来之后,单体架构的问题就暴漏出来了,机器挂了所有的业务全部无法使用了。 于是,集群架构的架构开始,单机无法抗住的压 阅读全文
posted @ 2021-08-10 10:09 周国伟 阅读(63) 评论(0) 推荐(0)
摘要:面对业务急剧增长你怎么处理? 业务量增长10倍、100倍怎么处理? 你们那系统怎么支撑高并发的? 怎么设计一个高并发系统? 高并发系统都有什么特点? 诸如此类,问法很多。 我想大多数人比不知道怎么回答,这种类型的问题,看着很难无处入手,但是我们可以有一个常规的思路去回答,就是围绕支撑高并发的业务场景 阅读全文
posted @ 2021-08-10 10:04 周国伟 阅读(70) 评论(0) 推荐(0)
摘要:现在基本每个公司都做APP,所以大家都面临 APP接口版本兼容的问题。 iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改。新的APP和接口开发后,接口如何兼容老的APP? 有的公司 每次发布完APP,就强制用户更新到最新版本。不推荐这样,因为用户体验太差。 就算 阅读全文
posted @ 2018-09-28 11:42 周国伟 阅读(3302) 评论(0) 推荐(0)
摘要:背景 最近做了一个有意思的功能《官网内容订阅》,用户在官网扫码后可以订阅官网栏目,订阅栏目后发送模版消息提醒用户订阅成功,模版消息关联了小程序,然后做了一个小程序来管理用户订阅的栏目,小程序提供订阅和新闻列表阅读功能。 实现技术调研分析 通过背景描述我们知道需要实现两块登录:1、官网扫码二维码登录; 阅读全文
posted @ 2018-09-28 09:50 周国伟 阅读(10014) 评论(0) 推荐(0)
摘要:越来越多的人开始意识到,网站即软件,而且是一种新型的软件。 这种“互联网软件”采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。 网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对 阅读全文
posted @ 2018-09-13 15:36 周国伟 阅读(162) 评论(0) 推荐(0)
摘要:网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备.....)。 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API架构的流行,甚至出现“API First”的设计思想。RESTFUL API是目前比较成熟的一套互联 阅读全文
posted @ 2018-09-12 11:40 周国伟 阅读(228) 评论(0) 推荐(0)
摘要:一、秒杀业务为什么难做 1)、im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息); 2)、微博系统,每个人读你关注人的数据,一个人多多个人的数据; 3)、秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据; 例如:小米手机每周二的秒杀,可能手机只 阅读全文
posted @ 2018-09-12 11:37 周国伟 阅读(347) 评论(0) 推荐(0)
摘要:1、什么是Session/Cookie? 用户使用网站的服务,基本上需要浏览器与Web服务器的多次交互。HTTP协议本身是无状态的,当用户的第一次访问请求结束后,后端服务器就无法知道下一次来访问的还是不是上次访问的用户。我们需要基于HTTP协议支持会话状态的机制,这样的机制可以使Web服务器从多次单 阅读全文
posted @ 2018-07-27 17:23 周国伟 阅读(1011) 评论(0) 推荐(0)
摘要:Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 阅读全文
posted @ 2016-03-24 16:19 周国伟 阅读(286) 评论(0) 推荐(0)
摘要:App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉。 安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都 阅读全文
posted @ 2016-03-11 10:58 周国伟 阅读(15137) 评论(1) 推荐(1)
摘要:一、正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下: 正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A 阅读全文
posted @ 2016-03-10 13:39 周国伟 阅读(578) 评论(0) 推荐(0)