![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构
文章平均质量分 89
linchare
这个作者很懒,什么都没留下…
展开
-
淘宝架构框架《下篇》
4. 自主研发的系统可在软件和硬件多个层次不断的优化。 历史总是惊人的巧合,在我们准备研发文件存储系统的时候,Google 走在了前面,2007 年他们公布了 GFS( Google File System )的设计论文,这给我们带来了很多借鉴的思路。随后我们开发出了适合淘宝使用的图片存储系统TFS(Taobao File System)。3年之后,我们发现历史的巧合比我们想象中还要神奇,几乎跟我们同时,中国的另外一家互联网公司也开发了他们的文件存储系统,甚至取的名 字都一样 —— TF...转载 2022-04-16 12:11:29 · 868 阅读 · 0 评论 -
淘宝架构框架《上篇》
前言:本文篇幅比较长,分为上下两篇,建议小伙伴们洗刷完毕的夜深人静之际细细品读,使人睿智。 一、个人网站 2003 年 4 月 7 日,马云,在杭州,成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目。这个项目要求绝 对保密,老马戏称“连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角”。这份协议是英文版的,匆忙之间,大多数人根本来不及看懂,但出于对 老马的信任,都卷起铺盖离开了阿里巴巴。 ...转载 2022-04-16 12:05:18 · 1569 阅读 · 0 评论 -
[架构系列]互联网智能广告系统简易流程与架构
很多朋友估计没有做过这一块,争取最简洁的语言描述清楚。一、业务简述从业务上看整个智能广告系统,主要分为:1)业务端:广告主的广告后台2)展现端:用户实际访问的页面业务端,广告主主要有两类行为:1)广告设置行为:例如设置投放计划,设置地域,类别,关键字,竞价等2)效果查看行为:例如广告展示次数是多少,广告点击次数是多少等展现端,用户主要也有两类行为:1)站点浏览行为:用户浏览实际的信息,此时广告系统决定出广告主的什么广告2)广告点击行为:此时广告系统会对广告主进行扣费二、业务..转载 2021-06-06 00:27:59 · 436 阅读 · 0 评论 -
[架构系列]session一致性架构设计实践
一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,以保持登录状态。什么是session一致性问题?只要用户不重启浏览器,每次http短连接请求,理论上服务端都能定位到session,保持会话。当只有一台web-server提供服务时,每次http短连接请求,都能够原创 2021-06-06 00:26:58 · 145 阅读 · 0 评论 -
[架构系列]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-server服务内网ip(192.168.0.1/192.168.0.2)(5)请求最终落到某一个web-server进行处理其中,第一个步骤域名daojia.com到外原创 2021-06-06 00:26:16 · 174 阅读 · 0 评论 -
[架构系列]跨公网调用的大坑与架构优化方案
第三方接口挂掉,我们的服务会受影响么?一、缘起与大坑很多时候,业务需要跨公网调用一个第三方服务提供的接口,为了避免每个调用方都依赖于第三方服务,往往会抽象一个服务:•解除调用方与第三方接口的耦合•当第三方的接口变动时,只有服务需要修改,而不是所有调用方均修改此时接口调用流程是什么样的呢?如上图1-4所述:(1)业务调用方调用内部service(2)内部service跨公网调用第三方接口(3)第三方接口返回结果给内部service(4)内部service返回结果给业务调用方这个过程.原创 2021-06-06 00:17:48 · 161 阅读 · 2 评论 -
[架构系列]配置也有架构演进?看完深有痛感
一、缘起随着互联网业务的越来越复杂,用户量与流量越来越大,“服务化分层”是架构演进的必由之路。如上图:站点应用会调用服务,上游服务调用底层服务,依赖关系会变得非常复杂。对于同一个服务,它有多个上游调用。为了保证高可用,一个底层服务往往是若干个节点形成一个集群提供服务。如上图:用户中心服务user-service有三个节点,ip1/ip2/ip3对上游提供服务,任何一个节点当机,都不影响服务的可用性。那么问题来了,当服务集群增减节点的时候,是否存在“反向依赖”,是否“耦合”,是否上游调用方需要修改原创 2021-06-06 00:17:02 · 130 阅读 · 2 评论 -
[架构系列]TCP接入层的负载均衡、高可用、扩展性架构
一、web-server的负载均衡互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡。整个架构分三层:上游调用层,一般是browser或者APP 中间反向代理层,nginx 下游真实接入集群,web-server,常见web-server的有tomcat,apache整个访问过程为:browser向daojia.com发起请求 DNS服务器将daojia.com解析为外网IP(1.2.3.4) browser通过外网IP(1....原创 2021-06-06 00:15:33 · 433 阅读 · 2 评论 -
[架构系列]典型数据库架构设计
本文,将介绍数据库架构设计中的一些基本概念,常见问题以及对应解决方案,为了便于读者理解,将以“用户中心”数据库为例,讲解数据库架构设计的常见玩法。一、用户中心用户中心是一个常见业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:User(uid, uname, passwd, sex, age,nickname, …)其中:•uid为用户ID,主键•uname, passwd, sex, age, nickname, …等为用户的属性数据库设计上,一般来说在业务初期,单.原创 2021-06-06 00:14:09 · 642 阅读 · 2 评论 -
[架构系列]架构设计中的“反向依赖”与解耦方案
一、缘起很多公司,技术经常遇到这样的场景:1)硬件升级,要换一台高配机器2)网络重新规划,若干服务器要调整机架3)服务器当机,要重新部署恢复服务…更具体的,如上图:数据库换了一个ip,此时往往连接此数据库的上游需要修改配置重启,如果数据库有很多上游调用方,改配置重启的调用方会很多,每次换ip的成本往往很高,成为大家共性的痛点。由A的调整(数据库换ip),配合修改和调整的却是BCDE(改配置重启),BCDE内心非常的郁闷:明明换ip的是你,凭什么配合重启的却是我?根本上,这是一.转载 2020-09-23 13:20:02 · 2050 阅读 · 0 评论 -
[架构系列]互联网架构为什么要做服务化
互联网架构为什么要做服务化?近期参加一些业界的技术大会,“微服务架构”的话题非常之火,也在一些场合聊过服务化架构实践,最近几期文章期望用通俗易懂的语言聊聊了个人对服务化以及微服务架构的理解,希望能给大伙一些启示。如果有遗漏,也欢迎大家补充。一、互联网高可用架构,为什么要服务化?【服务化之前高可用架构】在服务化之前,互联网的高可用架构大致是这样一个架构:(1)用户端是浏览器browser,APP客户端(2)后端入口是高可用的nginx集群,用于做反向代理(3)中间核心是高可.转载 2020-09-23 13:19:46 · 124 阅读 · 0 评论 -
[架构系列]100亿数据1万属性数据架构设计
于version + ext方案,还是有很多朋友质疑“线上不可能这么用”。本篇将讲述一下58同城最核心的数据“帖子”的架构实现技术细节,说明不仅不是“不可能这么用”,而是大数据,可变属性,高吞吐场景下的“常用手段”。一、背景描述及业务介绍问:什么是数据库扩展的version + ext方案?使用ext来承载不同业务需求的个性化属性,使用version来标识ext里各个字段的含义。例如上述user表:verion=0表示ext里是passwd/nickversion=1表示ex.转载 2020-09-12 10:06:48 · 304 阅读 · 0 评论 -
[架构系列]究竟啥才是互联网架构“高可用”
一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过www.baidu.com能.转载 2020-09-09 23:17:21 · 216 阅读 · 0 评论 -
[架构系列]RPC-client异步收发核心细节
RPC-client的部分又分为:(1)序列化反序列化的部分(上图中的1、4)(2)发送字节流与接收字节流的部分(上图中的2、3)前一篇文章讨论了序列化与范序列化的细节,这一篇文章将讨论发送字节流与接收字节流的部分。客户端调用又分为同步调用与异步调用同步调用的代码片段为:Result = Add(Obj1, Obj2);// 得到Result之前处于阻塞状态异步调用的代码片段为:Add(Obj1, Obj2, callback);// 调用后直接返回,不等结果处理...转载 2020-08-28 21:05:46 · 701 阅读 · 0 评论 -
[架构系列]如何实施异构服务器的负载均衡及过载保护?
一、需求缘起第一篇文章“一分钟了解负载均衡”和大家share了互联网架构中反向代理层、站点层、服务层、数据层的常用负载均衡方法。第二篇文章“lvs为何不能完全代替DNS轮询”和大家share了互联网接入层负载均衡需要解决的问题及架构演进。在这两篇文章中,都强调了“负载均衡是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】”。然而,后端的service有可能部署在硬件条件不同的服务器上:1)如果对标最低配的服务器“均匀”分摊负载,高配的服务器的利用率不足;.转载 2020-08-28 21:06:39 · 111 阅读 · 0 评论 -
[大厂技术]美团配送资金安全治理之对账体系建设
前言(2018年03月21日)随着美团配送业务的飞速发展,单量已经达到千万级别,同时每天产生的资金额已经超过几千万,清结算系统在保证线上服务稳定可靠的前提下,如何系统化的保障资金安全是非常核心且重要的课题,配送清结算系统经过近3年的建设和打磨,在资金安全保障的多个方面均有一些总结和实践,保障资金安全是值得系统思考的课题,只言片语难以全面概括,需要更多的着墨才能较完整阐述,本文侧重点会阐述“对账”的概念,在支付&清结算领域,这是一个非常重要的专业名词,下文将介绍“对账”在分布式系统建设中的实践和解转载 2020-08-28 20:35:40 · 314 阅读 · 0 评论 -
[架构系列]一分钟了解负载均衡的一切
什么是负载均衡负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见的负载均衡方案常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游都均匀访问每一个下游,就能实现“将请求/数据【均匀】分摊到多个操作单元上执行”。【客户端层->反向代理层】的负载均衡【客户端层】到【反向转载 2020-08-23 22:10:25 · 105 阅读 · 0 评论 -
[架构系列]无锁缓存,每秒10万并发,究竟如何实现?
有一类业务场景:(1)超高吞吐量,每秒要处理海量请求;(2)写多读少,大部分请求是对数据进行修改,少部分请求对数据进行读取;这类业务,有什么实现技巧么?接下来,一起听我从案例入手,娓娓道来。快狗打车,场景举例:(1)司机地理位置信息会随时变化,可能每几秒钟地理位置要修改一次;(2)用户打车的时候查看某个司机的地理位置,查询地理位置的频率相对较低;这里要用到两个接口:(1)大量修改司机信息:void SetDriverInfo(long driver_id, D..转载 2020-08-23 21:49:48 · 261 阅读 · 0 评论 -
[架构系列]线程数究竟设多少合理
Web-Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。“工作线程数”的设置依据是什么,到底设置为多少能够最大化CPU性能,是本文要讨论的问题。二、一些共性认知在进行进一步深入讨论之前,先以提问的方式就一些共性认知达成一致。提问:工作线程数是不是设置的越大越好?回答:肯定不是的1)一来服务器CP.转载 2020-08-23 21:27:14 · 230 阅读 · 0 评论 -
[架构系列]互联网架构,如何进行容量设计?
一、需求缘起互联网公司,这样的场景是否似曾相识:场景一:pm要做一个很大的运营活动,技术老大杀过来,问了两个问题:(1)机器能抗住么?(2)如果扛不住,需要加多少台机器?场景二:系统设计阶段,技术老大杀过来,又问了两个问题:(1)数据库需要分库么?(2)如果需要分库,需要分几个库?技术上来说,这些都是系统容量预估的问题,容量设计是架构师必备的技能之一。常见的容量评估包括数据量、并发量、带宽、CPU/MEM/DISK等,今天分享的内容,就以【并发量...转载 2020-08-23 21:40:28 · 165 阅读 · 0 评论 -
[架构系列]细聊分布式ID生成方法
几乎所有的业务系统,都有生成一个记录标识的需求,例如:(1)消息标识:message-id(2)订单标识:order-id(3)帖子标识:tiezi-id这个记录标识往往就是数据库中的唯一主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排序。这个记录标识上的查询,往往又有分页或者排序的业务需求,例如:(1)拉取最新的一页消息:selectmessage-id/ order by time/ limit 100(2)拉取最新的一页订单:select.原创 2020-08-18 22:47:16 · 133 阅读 · 0 评论 -
[架构系列]秒杀系统优化思路
一、秒杀业务为什么难做1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。又例如:12306抢票,票是有限的,库存一份,瞬时流量非常多,都读相同的库存。读写冲突,锁非常严重,这是秒杀业务难的地方。那我们怎么优化秒杀业务的架构呢?...原创 2020-08-18 22:43:59 · 275 阅读 · 0 评论 -
20 张图揭开「内存管理」的迷雾
前言之前有不少读者跟我反馈,能不能写图解操作系统?既然那么多读者想看,我最近就在疯狂的复习操作系统的知识。操作系统确实是比较难啃的一门课,至少我认为比计算机网络难太多了,但它的重要性就不用我多说了。学操作系统的时候,主要痛苦的地方,有太多的抽象难以理解的词语或概念,非常容易被劝退。即使怀着满腔热血的心情开始学操作系统,不过3分钟睡意就突然袭来。。。该啃的还是得啃的,该图解的还是得图解的,万众期待的「图解操作系统」的系列来了。本篇跟大家说说内存管理,内存管理还是比较重要的一个环..转载 2020-08-23 21:45:22 · 127 阅读 · 0 评论 -
ElasticSearch实用化订单搜索方案
前言:站外推广系统订单报表一直是一个痛点,研究后选择ES搜索引擎进行改造。上线来遇到很多问题,经历了很多的修改,现在系统终于正常运行,满足订单报表大数据量、实时更新、响应快、多维度查询的需求。文章原本是用ppt来编写的,这里只能修改为图片来展示。一、为什么选择ES搜索引擎中,主要考虑到ES支持结构化数据查询以及支持实时频繁更新特性:二、总体系统架构整个业务线使用服务化方式,ES集群和数据库分库,作为数据源被订单服务系统封装为对外统一接口;各前后台应用和报表中心,使用服务化的.转载 2020-08-05 01:20:49 · 1534 阅读 · 0 评论 -
[转]通用权限管理设计之数据权限
前言权限控制可以理解,分为这几种 :【功能权限】:能做什么的问题,如增加产品。【数据权限】:能看到哪些数据的问题,如查看本人的所有订单。【字段权限】:能看到哪些信息的问题,如供应商账户,看不到角色、 部门等信息。上面提到的那种设计就是【功能权限】,这种设计有一定的局限性,对于主体,只能明确地指定。对于不明确的,在这里可能就没办法处理。比如下面这几种情况:数据仅当前部门及上级可见数据仅当前用户(本人)可见类似这样的就需要用到上面提的数据权限。上一篇文章我用一个表五个字段.转载 2020-07-16 04:09:47 · 595 阅读 · 0 评论 -
[转]这可能是史上最全的权限系统设计
前言权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。目前在公司负责权限这块,所以对权限这块的设计比较熟悉,公司采用微服务架构,权限系统自然就独立出来了,其他业务系统包括商品中心,订单中心,用户中心,仓库系统,小程序,多个APP等十几个系统和终端1.权限模型迄今...转载 2020-04-15 09:20:44 · 184 阅读 · 0 评论 -
JPEG图像压缩算法详解
转载自http://www.ibm.com/developerworks/cn/linux/l-cn-jpeg/JPEG压缩算法之前已有很多前辈详细讲解过,我就不在这里画蛇添足了(主要是我懒。。),转载两篇JPEG压缩算法介绍,拼为一篇。侵删。JPEG图像压缩算法详解图片压缩有多重要,可能很多人可能并没有一个直观上的认识,举个例子,一张8...转载 2019-09-11 08:44:08 · 18931 阅读 · 10 评论