架构-设计

Swagger - 前后端分离后的契约

来自 破狼

接口限流算法总结

曾经在一个大神的博客里看到这样一句话:在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了 1 个 G 的流量,用完了就没了。通过限流,我们可以很好地控制系统的 qps,从而达到保护系统的目的。本篇文章将会介绍一下常用的限流算法以及他们各自的特点。

装逼必备:大型分布式网站术语分析

1、I/O优化

1、增加缓存,减少磁盘的访问次数。

2、优化磁盘的管理系统,设计最优的磁盘方式策略,以及磁盘的寻址策略,这是在底层操作系统层面考虑的。

3、设计合理的磁盘存储数据块,以及访问这些数据库的策略,这是在应用层面考虑的。例如,我们可以给存放的数据设计索引,通过寻址

秒杀系统设计中的数据处理

前两篇文章,从业务端和技术端分析了秒杀系统的构建中我们可以采用的思路。收到部分同学的留言,问了一些细节上的问题,今天会集中整理一下这些问题,作为秒杀系列的一个收尾。 昨天提到了商品详情页要做静态化的问题。实际上,页面上还是有一些动态数据,例如购买人数,购买比例这样的动态数据(见下…

什么是闭包,我的理解

首先,我觉得,一个概念,如果不理解也不影响使用的话,那么,就没必要去理解它、去学习它。闭包就是这样一个概念,你不理解它也能很好的用它。俺这两年写as3程序,是天天在和它打交道,甚至有过一个function套一个,一个方法中套了20多个function的极端例子,但从未深究过它是…

聊聊数据库和缓存同步机制

之前写了三篇关于秒杀的文章,里面提到了通过分布式缓存来缓解数据库压力。最近有朋友私信回复问,缓存和数据库是如何进行同步的,通过大家的问题,让我感到这个点确实可以聊一下,所以今天准备写一写,供大家做一个参考。 缓存同步的常用模式 缓存同步的模式,可以按照缓存的用途(主要用于读或者…

从设计者的角度理解Java IO流

Java I/O是Java技术体系中非常基础的部分,它是学习Java NIO的基础。而深入理解Java NIO则是学习现代高性能网络通信框架(比如Netty)的基础。本文试图从设计者的角度去理解Java I/O流,从Java I/O的最初概念输入流/输出流开始,通过使用面向对象…

服务降级与动态扩展的执行方案

昨天讲了一下服务流量控制的可行性方案,这只讲了应对大流量解决方案的上半部分,今天将讲一下下半部分,如何来执行服务降级和动态扩展。并且在实际工作中,我们是将流量控制和服务降级混合使用的,所以今天的话题会建立在昨天的讨论之上。 什么是服务降级 服务降级是在服务器压力陡增的情况下,利…

服务端流量控制的可行性方案

今天这个话题,我相信对于做互联网业务的朋友不会陌生,特别是电商或者互金领域。一碰到做大规模促销活动,访问量会有十倍乃至百倍的增加,比如现在正在做的618。做技术的童鞋都知道,每次在做大型活动前,我们都会整备物资,查漏补缺,拉标语打口号,各种活动演练,期待打一个大胜仗。但是实际上…

谈谈API版本控制的策略

上篇写《聊聊数据库和缓存同步机制》的时候,收到一份读者留言,希望我来谈谈API开发过程中的版本控制。这是一个很好的话题,对于任何互联网产品,随着需求的改进,都会遇到同样的问题,我自己也被这个问题困扰过。所以今天我尝试来做一个总结,将我过去不同项目中遇到的API版本控制方案罗列出…

浅谈前后端分离与实践 之 nodejs 中间层服务(二)

书接上文,浅谈前后端分离与实践(一) 我们用mock服务器搭建起来了自己的前端数据模拟服务,前后端开发过程中只需定义好接口规范,便可以相互进行各自的开发任务。联调的时候,按照之前定义的开发规范进行数据联调便可以了。前后端的职能更加清晰: 也就是说服务端和客户端各层职责重叠,大家…

值类型与引用类型,可变与不可变

a : 0x0004,int 32位,那么 a 的范围是 [0x0004, 0x0006) 值类型:变量对应的内存地址的内容当做数值。
例如 int a = 0; a 的范围取出来,按照int的方式转出来,当做值,&a 可以取到 a 的地址。
引用类型:变量对应的内存地址的内容…

图形验证码在携程的实践之路

本文将分享携程信息业务安全团队在这几年里,对图形验证码服务所做的一些大大小小的改变。各位可以将本文作为自身网站图形验证码搭建的小攻略,减少重复踩坑的情况。

构建 Java 应用内存级缓存

这篇文章讲的是如何使用 Guava Cache 构建 Java 内存基本的缓存,Guava Cache 缓存类似于 ConcurrentMap,但不完全相同。

京东亿级商品搜索核心技术解密

京东商品搜索引擎是搜索推荐部自主研发的商品搜索引擎,主要功能是为海量京东用户提供精准、快速的购物体验。目前入口主要有 PC / 移动 / 微信 / 手 Q 搜索、移动列表页、店铺搜索、店铺列表等。虽然只有短短几年的时间,系统已经能够支持日均 PV 过亿的请求,并且经过了多次 618 店庆和双 11 的考验。

分布式系列文章 - 从 ACID 到 CAP/BASE

本文先介绍传统关系数据库中事务的 ACID 特性,再介绍分布式系统中的经典理论——CAP 定理和 BASE 理论。

小白科普:服务那点事儿

服务那点事儿

以交易系统为例,看分布式事务架构的五大演进

在支付、交易、订单等强一致性系统中,我们需要使用分布式事务来保证各个数据库或各个系统之间的数据一致性。

唯品会数据库备份恢复容器化项目实践经验总结

本文分享了唯品会数据库 Docker 的异地容灾项目实践经验,项目中针对用户数据库的异地恢复场景的需求进行开发和测试,整合了网络,存储、调度、监控,镜像等多个模块。在实施完成后,从技术上总结关于选型、开发、踩坑、测试等方面的经验。

分布式架构实践——负载均衡

在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。

微服务架构扩展FreeStyle

随着越来越多的互联网技术团队开始采用微服务实施系统架构,伴随着业务的扩大,系统扩容的问题就会摆上议程,那么微服务架构该如何扩容呢?今天本文就尝试将从上到下扩容方案梳理一下,供大家做为一个参考。 一个常见的微服务架构如下: 微服务基于Dubbo + Zookeeper的组合,缓存…

Stack-oriented programming language

"Stack-based" redirects here. For other uses, see Stack-based memory allocation.
A stack-oriented programming language is one that relies o…

以消息队列为中心的服务端架构

讨论下如何用一个具体的消息队列中间件实现服务端的服务化。

日均PV千万的后台是如何形成的

新书Java并发编程系统与模型已上线,欢迎拜读。 一个日均PV在千万以上的移动客户端,大概有20w-50w的注册用户数。为了简单起见,将一次PV来代表一次Http请求。在移动客户端下,这些是纯逻辑的,不包含静态页面的访问和图片的访问。 并发量 并发量的计算公式是pv/时间。无论…

Javascript, Pass by Value or Pass by Reference?

This is something you don’t have to question until you need to pass the contents of an object around or pass the same exact reference aroun…

淘宝架构发架

在经历了另外一些有趣的事情之后(这些有趣的事情包括 “淘宝” 这个名字的由来,员工花名的由来等等,由于本文主要描述技术方面的故事,对这些有兴趣的可以去网上找),淘宝网站开始上线运行了。

基于代理服务的接口合并方案

过多的接口请求是 web 前端的主要性能瓶颈之一,接口合并是刚需。后台的接口设计有其既有粒度,对每个功能场景额外的增加合并的接口,工作量巨大,且场景难以覆盖。增加一台离接口服务器很近的代理服务器,定义一套接口合并的规则,代理服务器解析前端发来的规则,对接口服务器发起近距离请求,合并…

实时刷新缓存-处理mysql主从延迟的一些设计方案

在项目开发当中,经常有这样一种场景,对数据库进行添加、修改、删除操作的应用直接连接master库,只对数据库进行查询的应用,会先建立一个中央缓存,例如redis或者memcache,如果缓存没有命中,那么直接访问slave库。下文会介绍一下在刷新中央缓存时,如果发生主从延迟,应…

数据异构的武器-BINGLOG+MQ

何谓数据异构,上周交易部门商品的同事过来做分享,又看到这个词,他的PPT里面是 数据库异构。其实我们以前做的事情,也是可以成为数据异构。比如我们将DB里面的数据持久化到REDIS里面去,就是一种数据异构的方式。如果要下个定义的话:把数据按需(数据结构、存取方式、存取形式)异地构建存储。

一次模拟简单秒杀场景的实践 Docker + Nodejs + Kafka + Redis + MySQL

秒杀活动可以说在互联网上随处可见,从 12306 抢票,到聚划算抢购,我们生活的方方面面都可以看到秒杀的身影。秒杀的架构设计也是对于一个架构师架构设计能力的一次考验。本文的目的并不在于提供一个可以直接落地的设计方案,而是意在提供一个简单的方法,一个思路,使大家能够对于秒杀背后的一些设计有更感性的认识, 并且可以自己亲自动手实践一下。所有的配置及源码都在本文最后的 GitHub repository 中可以找到。

浅谈前后端分离与实践(一)

一、起源(故事纯属虚构,如有雷同,纯属巧合)传说在很久很久以前,我们有志之士有了个创业的想法,于是乎开始了自己的创业之梦,但是人手不足啊,于是乎所有角色老子一个人全包了:Roles: PM, DBA, RD, FED, Designer, ...Skills: Linux, M…

微服务下的数据一致性思考

之前讲到了数据库层和缓存层的改造思路,而对于业务层的改造,采用了集中式服务转微服务的架构方案。既然是微服务,就意味着面临大量的服务间的内部调用及服务依赖,这就意味着,如果一次请求的调用涉及到两个或多个微服务之间的调用,恰好有下游的微服务调用失败,我们就必须要考虑到回滚及服务间保…

谈谈互联网后端基础设施

来自 飒然Hang in work

小白科普:分布式和集群

分布式,集群,单点失效,负载均衡

从读写分离到CQRS,张大胖是如何解决性能问题的?

架构那点儿事

关于服务高可用的一些理解

系统不是7*24小时提供服务,那么用户体验就特别差了,可能用户下次不用了,留不住用户。 当系统不可用的时候,对公司的形象是有所影响的,BAT类似这种技术都是象征的。 最重要的一点,当系统不可用的时候,直接损失就是金钱!!!基本都是秒算损失的,依稀记得2015年5月28日携程网瘫…

秒杀系统设计中的业务性思考

秒杀不是一个新鲜事物,特别是过去几年电商和互金业务的蓬勃发展,各种电商节的兴起,促使秒杀已经变成了非常重要的业务功能。我这几年也没少和“秒杀”打交道,和团队共同经历了各种挣扎后,积累了一些想法,今天想利用这个机会来写一写。但今天不是来教大家如何做一个秒杀系统的,而是从业务的角度…

消息队列设计精要

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、M…

DRY原则的误区(来自 王垠)

很多编程的人,喜欢鼓吹各种各样的“原则”,比如KISS原则,DRY原则…… 总有人把这些所谓原则奉为教条或者秘方,以为兢兢业业地遵循这些,空喊几个口号,就可以写出好的代码。同时,他们对违反这些原则的人嗤之以鼻——你不知道,不遵循或者藐视这些原则,那么你就是菜鸟。所谓“DRY原则…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值