
架构设计
文章平均质量分 72
涛濤
Hope for the best, prepare for the worst!
展开
-
深入浅出搜索架构(中篇)—就是这么迅猛的实现搜索需求
一、缘起《深入浅出搜索架构(上篇)》详细介绍了:(1)全网搜索引擎架构与流程(2)站内搜索引擎架构与流程(3)搜索原理与核心数据结构 本文重点介绍:(4)流量数据量由小到大,常见搜索方案与架构变迁(5)数据量、并发量、扩展性方案 只要业务有检索需求,本文一定对你有帮助。 二、检索需求的满足与架构演进转载 2017-04-23 10:24:11 · 754 阅读 · 0 评论 -
MySQL冗余数据的三种方案
一,为什么要冗余数据互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量。水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非patition key上的查询可能就需要扫描多个库了。此时常见的架构设计方案,是使用数据冗余这种反范式设计来满足分库后不同维度的查询需求。转载 2017-07-10 15:32:46 · 8247 阅读 · 0 评论 -
MySQL双主一致性架构优化
一、双主保证高可用MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。 在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方式来保证写库的高可用。 二、并发引发不一致数据冗余会引发数据的一致性问题,因为数据的同步有一个时间差,并发的写入可能导致数据同步失败,转载 2017-07-10 15:36:40 · 542 阅读 · 0 评论 -
CAS下ABA问题及优化方案
一、并发业务场景库存业务,stock(sid, num),其中:sid为库存idnum为库存值如上图所示,两个并发的查询库存操作,同时从数据库都得到了库存是5。 接下来用户发生了并发的库存扣减动作:如上图所示:用户1购买了3个库存,于是库存要设置为2用户2购买了2个库存,于是转载 2017-07-11 11:37:49 · 362 阅读 · 0 评论 -
浅谈CAS在分布式ID生成方案上的应用
近几篇文章聊CAS被骂得较多,今天还是聊CAS,谈谈CAS在一种“分布式ID生成方案”上的应用。 所谓“分布式ID生成方案”,是指在分布式环境下,生成全局唯一ID的方法。 可以利用DB自增键(auto inc id)来生成全局唯一ID,插入一条记录,生成一个ID:这个方案利用了数据库的单点特性,其优点为:无转载 2017-07-11 12:18:37 · 498 阅读 · 0 评论 -
单KEY业务,数据库水平切分架构实践
本文将以“用户中心”为例,介绍“单KEY”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践:如何来实施水平切分水平切分后常见的问题典型问题的优化思路及实践 一、用户中心用户中心是一个非常常见的业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:User(uid, login_n转载 2017-07-11 12:31:18 · 352 阅读 · 0 评论 -
多key业务,数据库水平切分架构一次搞定
数据库水平切分是一个很有意思的话题,不同业务类型,数据库水平切分的方法不同。本篇将以“订单中心”为例,介绍“多key”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。 一、什么是“多key”类业务所谓的“多key”,是指一条元数据中,有多个属性上存在前台在线查询需求。 订单中心业务分析订单中心是一个转载 2017-08-30 12:25:28 · 1197 阅读 · 0 评论 -
数据库耦合-解耦
随着业务越来越复杂,数据量越来越大,并发量越来越大,数据库的性能越来越低。好不容易找运维申请了两台机器,让DBA部署了几个实例,想把一些业务库拆分出来,却发现拆不出来,扩不了容,尴尬! 因为数据库强关联在一起,无法通过增加数据库实例扩容,就是一个耦合的典型案例。 场景还原有一个公共用户数据库DB_USER,里面table_user存放了通用的用户数据:转载 2017-11-29 09:19:46 · 10645 阅读 · 0 评论 -
数据库中间件cobar调研笔记
转自:https://mp.weixin.qq.com/s/nfTKSTpCvNcvNFAdl2J7mQ 58沈剑 架构师之路13年底负责数据库中间件设计时的调研笔记,拿出来和大家分享,轻拍。文章很长,可提前收藏,转发。一,cobar是什么阿里开源的mysql的中间件服务使用mysql协议对上游,cobar就是传统mys转载 2017-12-07 11:34:21 · 461 阅读 · 0 评论 -
数据库中间件TDDL调研笔记
转自:https://mp.weixin.qq.com/s/dVGSvUR9UCA-dIYVtr_G_w 架构师之路前篇:《数据库中间件cobar调研笔记》13年底负责数据库中间件设计时的调研笔记,拿出来和大家分享,轻拍。一,TDDL是什么TDDL是Taobao Distribute Data Layer转载 2017-12-07 11:37:59 · 1095 阅读 · 0 评论 -
假如让你来设计数据库中间件
转自:https://mp.weixin.qq.com/s/6kuVgdO7RBs9gs229wG3wA 架构师之路13年底负责数据库中间件设计时的设计文档,拿出来和大家分享:可以了解下数据库中间件技术可以了解下架构师系统设计的思路一、总体目标数据库中间层项目背景不再展开,根据前期的调研以及和公司同事的讨论,中间层的核转载 2017-12-07 11:45:40 · 354 阅读 · 0 评论 -
小小的IP,大大的耦合
转自:https://mp.weixin.qq.com/s/-kOYRHKPAKwjGS4jhSh-pA 架构师之路什么是耦合?耦合,是架构中,本来不相干的代码、模块、服务、系统因为某些原因联系在一起,各自独立性差,影响则相互影响,变动则相互变动的一种架构状态。感官上,怎么发现系统中的耦合?作为技术人,每每在心中骂上下游,骂兄弟部门,“这转载 2017-12-07 11:49:21 · 393 阅读 · 0 评论 -
小小的公共库,大大的耦合
转自:https://mp.weixin.qq.com/s/mjWCuYYbFs16esvkwZ-LKw 架构师之路什么是耦合?耦合,是架构中,本来不相干的代码、模块、服务、系统因为某些原因联系在一起,各自独立性差,影响则相互影响,变动则相互变动的一种架构状态。 感官上,怎么发现系统中的耦合?作为技术人,每每在心中骂上下游,骂兄弟部门,“这个东西跟我有什转载 2017-12-07 13:12:13 · 470 阅读 · 1 评论 -
数据库中间件Atlas调研笔记
转自:https://mp.weixin.qq.com/s/31WOensXaLdaAp9WRMW7PA 架构师之路前篇:《假如让你来设计数据库中间件》《数据库中间件TDDL调研笔记》《数据库中间件cobar调研笔记》《数据库中间件mysql-proxy调研笔记》13年底负责数据库中间件设计时的调研笔记,拿出来和大家分享,轻拍。转载 2017-12-07 13:14:43 · 400 阅读 · 0 评论 -
数据库中间件为何不支持join
转自: http://mp.weixin.qq.com/s/q4DmWjhVmMMSzIP3K_n4Hw 架构师之路有网友对《假如让你来设计数据库中间件》一文中,数据库中间件仅仅支持四类SQL存有疑问:partition key普通查询partition key上的IN查询非partition key上的查询有限功能的排序+分页转载 2017-12-07 13:20:03 · 488 阅读 · 0 评论 -
一分钟了解索引技巧
花1分钟时间,了解聚集索引,非聚集索引,联合索引,索引覆盖。 举例,业务场景,用户表,表结构为:t_user(uid primary key,login_name unique,passwd,login_time,age,…); 聚集索引(clustered index):聚集索引决定数据在磁盘上的转载 2017-07-10 15:29:47 · 331 阅读 · 0 评论 -
工作线程数究竟要设置为多少
一、需求缘起Web-Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。“工作线程数”的设置依据是什么,到底设置为多少能够最大化CPU性能,是本文要讨论的问题。 二、共性认知转载 2017-07-10 15:26:10 · 793 阅读 · 0 评论 -
百度如何能实时检索到15分钟前新生成的网页?
一、缘起《深入浅出搜索架构(上篇)》详细介绍了前三章:(1)全网搜索引擎架构与流程(2)站内搜索引擎架构与流程(3)搜索原理与核心数据结构 《深入浅出搜索架构(中篇)》介绍了:(4)流量数据量由小到大,常见搜索方案与架构变迁(5)数据量、并发量、扩展性架构方案 本篇将讨论:(6)百度为何能实时检索出15分钟转载 2017-04-23 10:34:35 · 755 阅读 · 0 评论 -
10w定时任务,如何高效触发超时
一、缘起很多时候,业务有定时任务或者定时超时的需求,当任务量很大时,可能需要维护大量的timer,或者进行低效的扫描。 例如:58到家APP实时消息通道系统,对每个用户会维护一个APP到服务器的TCP连接,用来实时收发消息,对这个TCP连接,有这样一个需求:“如果连续30s没有请求包(例如登录,消息,keepalive包),服务端就要将这个用户的状态置为离线”。转载 2017-04-23 10:45:00 · 1321 阅读 · 0 评论 -
1分钟实现“延迟消息”功能
一、缘起很多时候,业务有“在一段时间之后,完成一个工作任务”的需求。 例如:滴滴打车订单完成后,如果用户一直不评价,48小时后会将自动评价为5星。一般来说怎么实现这类“48小时后自动评价为5星”需求呢? 常见方案:启动一个cron定时任务,每小时跑一次,将完成时间超过48小时的订单取出,置为5星,并把评价状态置为已评价。假设订单表转载 2017-04-23 10:50:04 · 1548 阅读 · 3 评论 -
消息总线能否实现消息必达?
一、缘起上周讨论了两期环形队列的业务应用:《高效定时任务的触发》《延迟消息的快速实现》 两期的均有大量读者提问:任务、延迟消息都放在内存里,万一重启了怎么办?能否保证消息必达? 今天就简单聊聊消息队列(MsgQueue)的消息必达性架构与流程。 二、架构方向MQ要想尽量消息必达,架构上有两个核心设计点:转载 2017-04-23 10:56:00 · 1731 阅读 · 1 评论 -
消息总线真的能保证幂等?
一、缘起如《消息总线消息必达》所述,MQ消息必达,架构上有两个核心设计点:(1)消息落地(2)消息超时、重传、确认再次回顾消息总线核心架构,它由发送端、服务端、固化存储、接收端四大部分组成。为保证消息的可达性,超时、重传、确认机制可能导致消息总线、或者业务方收到重复的消息,从而对业务产生影响。 举个栗子:转载 2017-04-23 11:04:58 · 1793 阅读 · 0 评论 -
到底什么时候该使用MQ?
一、缘起一切脱离业务的架构设计与新技术引入都是耍流氓。 引入一个技术之前,首先应该解答的问题是,这个技术解决什么问题。就像微服务分层架构之前,应该首先回答,为什么要引入微服务,微服务究竟解决什么问题(详见《互联网架构为什么要做微服务?》)。 最近分享了几篇MQ相关的文章:《MQ如何实现延时消息》《MQ如何实现消息必达》转载 2017-04-23 11:12:04 · 541 阅读 · 0 评论 -
58到家MQ如何快速实现流量削峰填谷
问:为什么会有本文?答:上一篇文章《到底什么时候该使用MQ?》引起了广泛的讨论,有朋友回复说,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下,MQ要实现什么细节,才能缓冲流量,削峰填谷。 问:站点与服务,服务与服务上下游之间,一般如何通讯?答:有两种常见的方式一种是“直接调用”,通过RPC框架,上游直接调用下游。转载 2017-04-23 11:20:20 · 2029 阅读 · 0 评论 -
用uid分库,uname上的查询怎么办?
【缘起】用户中心是几乎每一个公司必备的基础服务,用户注册、登录、信息查询与修改都离不开用户中心。 当数据量越来越大时,需要多用户中心进行水平切分。最常见的水平切分方式,按照uid取模分库:通过uid取模,将数据分布到多个数据库实例上去,提高服务实例个数,降低单库数据量,以达到扩容的目的。 水平切分之后:uid属转载 2017-04-23 11:28:02 · 1241 阅读 · 0 评论 -
TCP接入层的负载均衡、高可用、扩展性架构
一、web-server的负载均衡互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡。整个架构分三层:上游调用层,一般是browser或者APP中间反向代理层,nginx下游真实接入集群,web-server,常见web-server的有tomcat,apache 整个访问过程为:转载 2017-05-08 16:20:24 · 7521 阅读 · 2 评论 -
DNS在架构设计中的巧用
一、缘起一个http请求从客户端到服务端,整个执行流程是怎么样的呢?一个典型流程如上:(1)客户端通过域名daojia.com请求dns-server(2)dns-server返回域名对应的外网ip(1.2.3.4)(3)客户端访问外网ip(1.2.3.4)向反向代理nginx(4)反向代理nginx配置了多个后端web-se原创 2017-05-20 21:51:00 · 882 阅读 · 0 评论 -
一分钟了解负载均衡的一切
什么是负载均衡负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见的负载均衡方案常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游都均匀访问转载 2017-05-20 22:02:01 · 412 阅读 · 0 评论 -
session一致性架构设计实践
一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。 Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,以保持登录状态。 什么是session一致性问题?只转载 2017-05-21 21:27:50 · 1234 阅读 · 0 评论 -
计数系统架构实践一次搞定
转自:https://mp.weixin.qq.com/s/cCnPGRQ6LZHg8-7FRJLaKQ一、需求缘起很多业务都有“计数”需求,以微博为例:微博首页的个人中心部分,有三个重要的计数:关注了多少人的计数粉丝的计数发布博文的计数微博首页的博文消息主体部分,也有有很多计数,分别是一条博文的:转载 2017-06-30 01:00:57 · 448 阅读 · 0 评论 -
1对多业务,数据库水平切分架构一次搞定
本文将以“帖子中心”为例,介绍“1对多”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践:如何来实施水平切分水平切分后常见的问题典型问题的优化思路及实践 一、什么是1对多关系所谓的“1对1”,“1对多”,“多对多”,来自数据库设计中的“实体-关系”ER模型,用来描述实体之间的映射关系。转载 2017-07-10 15:20:36 · 1006 阅读 · 0 评论 -
服务化了,没想到耦合更加严重?
转自:https://mp.weixin.qq.com/s/m5VNvwobA3r40T6EDJISDQ 架构师之路通过“库”来实现业务,可能会引发业务系统之间耦合,需要通用业务服务化,将通用业务下沉,详见《小小的公共库,大大的耦合,你痛过吗》。通过“join”来实现业务,可能会导致数据库之间耦合,需要基础数据服务化,实现数据库私有化,解除数据库之间的耦合,详见转载 2017-12-07 13:24:36 · 409 阅读 · 0 评论