![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构
文章平均质量分 70
半吊子全栈工匠
半吊子全栈工匠一枚
展开
-
没有被了解的API?一个老码农眼中的API世界
即便做了20多年的软件开发,仍然发现自己经常会低估完成一个特定的编程任务所需要的时间。有时,错误的时间表是由于自己的能力不足造成的: 当深入研究一个问题时,会发现它比最初想象的要难得多...原创 2020-04-05 16:56:37 · 962 阅读 · 0 评论 -
服务可用性的一知半解
谈到高并发和高可用往往引起很多人的兴趣,有时候成为框架选择的噱头。实际上,它们往往和框架关系不大,而是跟架构息息相关。在很多时候,老码农会直面一个问题:“系统的服务可用性是多少?是怎么得...原创 2020-03-08 20:56:31 · 2396 阅读 · 0 评论 -
性能,10点系统性思考
作为一个半吊子全栈工匠,在20多年的职业生涯里遇到过太多关于软件性能的问题。论证或者证明性能的问题往往很关键,能否通过一次一个小而有逻辑的可证明可审核的步骤来解决性能问题呢?曾经企图创建...原创 2020-03-01 07:07:00 · 1030 阅读 · 0 评论 -
《深入分布式缓存》之“从实际案例看Redis的使用”
在一个炎热的夏天,引爆了埋藏已久的大炸弹。首先是一个产品线开发人员搭建起了一套庞大的价格存储系统,底层是关系型数据库,只用来处理一些事务性的操作和存放一些基础数据;在关系型数据库的上面还有一套MongoDB,因为MongoDB的文档型数据结构,让他们用起来很顺手,同时也可以支撑一定量的并发。在大部分的情况下,一次大数据量的计算后结果可以重用但会出现细节数据的频繁更新,所以他们又在MongoDB上搭原创 2018-01-26 12:49:08 · 2779 阅读 · 0 评论 -
《深入分布式缓存》之“关于Tair哪些事儿”
Tair(TaoBao Pair的意思,Pair即Key-Value数据对)是淘宝开发的一个优秀的分布式高可用的 key/value 存储引擎。采用服务端自动负载均衡的方式,使客户端逻辑简单。Tair 分为持久化和非持久化两种使用方式。非持久化的 Tair 可以看成是一个分布式缓存。持久化的 Tair 将数据存放于磁盘中。在最新版本的Tair项目中实现了以下4种存储引擎。q 非持久化:mdbq原创 2018-01-25 10:45:21 · 4857 阅读 · 0 评论 -
《深入分布式缓存》之“分布式理论:CAP是三选二吗?”
CAP是什么?CAP理论,被戏称为[帽子理论]。CAP理论由Eric Brewer在ACM研讨会上提出,而后CAP被奉为分布式领域的重要理论[1] 。 分布式系统的CAP理论:首先把分布式系统中的三个特性进行了如下归纳:● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客原创 2018-01-24 17:47:32 · 2284 阅读 · 0 评论 -
《深入分布式缓存》之“亿级请求下多级缓存那些事”
所谓多级缓存,即在整个系统架构的不同系统层级进行数据缓存,以提升访问效率,这也是应用最广的方案之一。我们应用的整体架构如图1所示:图1 多级缓存方案整体流程如上图所示:1)首先接入Nginx将请求负载均衡到应用Nginx,此处常用的负载均衡算法是轮询或者一致性哈希,轮询可以使服务器的请求更加均衡,而一致性哈希可以提升应用Nginx的缓存命中率,相对于轮询,一致性哈希会存在单机热点问题,一种解决办法原创 2018-01-23 08:33:20 · 3256 阅读 · 0 评论 -
《深入分布式缓存》之“每日数十亿级业务下的计数器如何扩展Redis?”
每日数十亿级业务下的计数器如何扩展Redis?在Feed系统中,有简单数据类型的缓存,有集合类数据的。还有一些个性业务的缓存。比如大量的计数器场景,存在性判断场景等。微博解决存在性判断业务的缓存层叫EXISTENCE 缓存层,解决计算器场景的缓存叫COUNTER缓存。EXISTENCE 缓存层主要用于缓存各种存在性判断的业务,诸如是否已赞(liked)、是否已阅读(readed)这类需求。Feed原创 2018-01-22 07:47:26 · 1854 阅读 · 0 评论 -
《深入分布式缓存》之 “缓存为王”
在商业的世界中,常说的一句话是“现金为王”。在互联网或者移动互联网乃至整个软件技术世界中,与之相近的一个说法就是“缓存为王”。什么是缓存呢?1.1 什么是缓存?缓存:存储在计算机上的一个原始数据复制集,以便易于访问—— 维基百科缓存是系统快速响应中的一种关键技术,是一组被保存起来以备将来使用的东西,介于应用开发和系统开发之间,是产品经理们经常顾及不到的地方,也是技术架构设计中的非功能性约束。因为“原创 2018-01-21 09:44:56 · 2978 阅读 · 0 评论 -
《深入分布式缓存:从原理到实践》
当技术成为一种情怀,就一起来把情怀变成铅字吧,就像序言中写到的,为了初心的纪念。原创 2017-12-05 08:48:58 · 18399 阅读 · 4 评论 -
全栈必备 Log日志
连自己都没想到,log日志居然如此的丰富多彩,有很多有趣的问题,不仅仅是一种全栈必备的技能,更是一种开发者的基本素养。原创 2017-06-12 08:14:59 · 20096 阅读 · 6 评论 -
老码农眼中的CRM 图解
这是一些干燥的文字,大概是因为CRM是“以客户为核心”的价值体现的缘故吧......原创 2017-05-18 11:33:03 · 10685 阅读 · 5 评论 -
微服务架构基础——解读六边形架构
六边形架构的初衷是为了解决技术与业务系统的解耦合问题,以及技术与技术间的解耦合问题,这一架构从设计模式中来,从业务的实体服务出发,将面向接口的设计具体化的端口协议和适配器实现,将业务实体实现自服务的完备性,可以看作是微服务的一个理论基础。翻译 2017-02-21 15:53:10 · 21416 阅读 · 2 评论 -
回顾Bob大叔的简洁架构
Robert Martin 就是我们常说的Bob大叔,是码界的骨灰级人物了,在4年前提出了所谓的简洁架构,值得回顾反思一下,看看是否可以借鉴到微服务中呢?原创 2017-02-28 17:48:57 · 6006 阅读 · 1 评论 -
全栈必备的技术栈设想
参加今年的SDCC确实挺高兴的,向大师Joe Armstrong 当面求教,与周爱民老师同台,在我们的架构师进阶之路专场有4个七零后的老码农,瞬间没有了孤独感,甚至有一点窃窃之喜,本人这次分享的内容是 全栈的技术栈, 是一次挑战。原创 2016-11-20 09:53:11 · 30461 阅读 · 27 评论 -
再谈<全栈必备的技术栈设想>一文
全栈架构师是不是一个伪命题呢,是一个上帝类吗? 我不知道,我只是想说那篇文字,试图想明确: 什么是架构?什么是架构师? 什么是全栈?什么是全栈架构师? 为什么需要全栈/架构师? 如何可能成为一个全栈架构师?......原创 2016-12-11 16:04:37 · 4216 阅读 · 1 评论 -
全栈必备 存储基础
存储,是我们码农每天都要打交道的事情,而当我们面对RAID,SAN,对象存储,分布式数据库等技术的时候,又往往似是而非,存储成了我们熟悉的陌生人。在老码农眼中,存储仿佛是这个样子的。从计算机结构出发存储是计算机的一部分,在冯诺伊曼体系结构中,有一个重要的单元即存储器,它连接了输入/输出,以及控制器和运算器,处于核心纽带的位置。存储的介质主要包括内存(DRAM)、固态硬盘(SSD)、机械硬盘(HDD原创 2018-01-10 11:45:26 · 1020 阅读 · 0 评论 -
技术领导力: 深度访谈《深入分布式缓存》
于君泽,蚂蚁金服支付核算技术部负责人、互联网金融业务近8年,电信业务8年经验。兴趣在高可用分布式架构应用,研发管理,内建质量等。维护公众号:技术琐话。《深入分布式缓存》一书联合作者,总策划。曹洪伟,《深入分布式缓存》一书的作者之一。 70后老码农,全栈工匠一枚,在多家世界500强企业从事软硬件开发工作,后投身创业企业侧重研发管理和体系架构,曾出版过几本技术小册子,发表过几篇短文,拥有10几个国内外转载 2018-01-19 09:16:08 · 4451 阅读 · 0 评论 -
智能音箱场景下的性能优化
QCon是由InfoQ主办的综合性技术盛会,今年是Qcon举办的第10个年头,半吊子全栈工匠有幸作为演讲嘉宾分享一个近两年来的实践经验——智能音箱场景下的性能优化,隶属于曾波老师出品的“场景化性能优化”专场。作为第二个出场者,前面是字节跳动银国徽老师的高性能弹幕设计解决方案,讲的是数学建模解决性能问题,后面是京东常亮老师的网关性能优化,从宕机引入性能优化的方方面面,最后是腾讯姜...原创 2019-05-14 20:20:00 · 2052 阅读 · 0 评论 -
软件架构的10个常见模式
企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构将决定软件实施过程中的功能属性和质量属性。因此,了解软件设计中的不同架构模式对我们的软件设计会有较大的帮助。什么是架构模式?根据维基百科:架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。本文将简要解释10种常见架构模式及其用法、优缺点。 分...原创 2019-04-03 12:18:00 · 24237 阅读 · 27 评论 -
面向接口/协议?看DuerOS的技能开发
一般地,开发一个对话系统或者机器人问答系统会涉及诸多领域的技术,除了硬件系统之外,还包括语言识别,自然语言处理/识别,知识图谱的搭建,自然语言生成及TTS播报等等,这对于企业及开发者个人而言,几乎是难以完成的任务。有幸的是,对话式AI操作系统例如DuerOS的诞生,使我们可以直面业务逻辑,相对轻松地完成语音类服务的开发与实现。在过去的研发中,经常使用的往往是面向接口的设计方法,那么,面向对...原创 2019-03-07 22:13:21 · 4040 阅读 · 8 评论 -
百度春晚红包之前的备战
“今年除夕当晚,春晚红包将会随着央视春节联欢晚会的直播接棒登场,除了红包以外我们还为大家准备了“小度”系列智能产品作为特别奖品,让大家感受到智能生活的乐趣!”这是17日下午百度与央视的官宣,这意味着对小度商城技术团队的又一大挑战。无论怎样的技术架构,怎样的技术选型,怎样的系统优化,数据最终还是要落到数据库上。真是天意,恰巧百度大学为我们安排了“SLG人才能力提升第二站,《My...原创 2019-01-17 22:09:00 · 724 阅读 · 0 评论 -
FaaS 的简单实践
FaaS 或者说serverless是一种云计算模型,其主要特点是用户根本不需要租用任何虚拟机ーー从启动虚拟机,执行代码,返回结果和停止虚拟机这些由云提供商处理的整个过程。这比其他云计算实现更具成本效益。它还使开发人员能够更加专注于开发业务逻辑,因为应用程序的某些部分由云提供程序处理。要启动执行代码的整个过程,必须触发它。触发器可以是一个特定的事件,也可以是对API 管理系统的请求...原创 2018-12-17 08:00:00 · 2059 阅读 · 1 评论 -
《复杂系统突现论》读后
应石头兄弟之邀,想从复杂性的视角看一下从微服务到service mesh 的演进,没想到复杂性本身就是一个难点,于是找来了一本关于复杂性的书,希望从中能够对复杂性有一些进一步的认识。 (来自百度百科)复杂性是当代科学的一个前沿和热点,具有跨学科综合性的趋势。不幸的是,复杂系统理论仍在等待它的牛顿。复杂性实际上就是一门关于突现的科学,而系统思想主要有三组概念:突现与等级,通讯与控制,...原创 2018-08-29 07:00:00 · 2354 阅读 · 0 评论 -
Rethinking IoT
在地铁阅读时光里读完了《重构物联网的未来》一书,稍感失望。该书的英文原著书名为:《Rethinking The Internet of Things-- A Scalable Approach to ...原创 2018-03-27 00:00:00 · 1784 阅读 · 0 评论 -
消息队列在RTOS的应用
传说互联网应用有两大利器,一个是缓存,另一个就是消息队列。 一直相对消息队列做一下梳理,希望早日另有成文。 一叶知秋,实际上消息队列在嵌入式系统中同样有着广泛的应用。 近来致力于IoT和智能硬件,现学...原创 2018-03-12 00:00:00 · 1976 阅读 · 0 评论 -
区块链性能提升:链上设计之道
补天遗石本文目录:1 区块链的功能组件(Functional Components of a Blockchain) 1.1 交易验证(Transaction Validation) 1....转载 2018-03-01 00:00:00 · 5432 阅读 · 1 评论 -
探索嵌入式应用框架(EAF)
EAF是Embedded Application Framework 的缩写,即嵌入式应用框架。嵌入式应用框架是 Application framework的一种, 是在嵌入式领域的应用框架。Appl...原创 2018-03-18 00:00:00 · 4186 阅读 · 0 评论 -
《深入分布式缓存》之“自己动手写缓存”
目前市面上已经有很多开源的缓存框架,比如Redis、Memcached、Ehcache等,那为什么还要自己动手写缓存?本章将带领大家从0到1写一个简单的缓存框架,目的是让大家对缓存的类型、缓存的标准、缓存的实现以及原理方面有一个系统的了解,做到知其然,知其所以然。3.1 缓存定义的规范 JSR是JavaSpecification Requests的缩写,意思是Java规范提案,它已成为Jav...原创 2018-02-07 10:31:25 · 6340 阅读 · 2 评论 -
《深入分布式缓存》之谈一谈SNS关系设计的演进
我们先从最简单的设计开始。基于DB的最简方案表达用户信息和相互关系,基于DB只需要两张表可实现,示意如图12-2:图12-2 用户信息与用户关系表示意图relation表主要有两个字段followerId和followeeId,一行relation记录表示用户关系拓扑的一条边,由followerId代表的用户指向followeeId代表的用户。userInfo表关注每个用户的详细信息,比如用户名、原创 2018-02-05 15:38:44 · 1550 阅读 · 0 评论 -
从内存池到连接池 老码农眼中的资源池
如果将互联网应用比喻成冲浪的话, 可能需要先学会在池中游泳吧。引子AI赋能万物,老码农的伙伴们也曾经开发了一个基于图数据库的知识问答系统,在压力测试的时候发现随着并发数的增加,响应的时延明显变长,看时延分布,是应用程序与图数据库之间的交互时延过长。结构不做调整,优化图数据库后,发现在并发量上来之后,效果仍不明显。 看代码,观察ELK中的日志,发现了问题所在————高并发时连接的创建时间较长。时间所原创 2018-01-16 11:02:59 · 4941 阅读 · 1 评论 -
全栈必备 面向数据的架构
数据是系统的核心,在面向服务的架构之外,可以考虑面向数据的架构方式。面向数据的服务架构需要支持多数据源异构,支持动态数据和静态数据,既支持公有云部署又支持私有云部署,提供多种数据应用和数据产品......原创 2016-11-30 20:49:43 · 4993 阅读 · 1 评论 -
全栈必备 缓存cache
缓存——cache,是一种挺复杂的技术,除了应用场景之外,更进一步,还要理解命中,Cache Miss,存储成本,索引成本,失效,替代策略的诸多概念,从而了解缓存算法,真正的掌握缓存技术。原创 2016-10-07 17:02:26 · 7279 阅读 · 2 评论 -
全栈必备 负载均衡
一个了不起的创意会产生一个很棒的产品,如果它一炮走红,你发现手中的是下一个facebook 或者twitter,而且随着用户越来越多,系统变得越来越慢,该怎么办呢?对全栈而言,解决这类问题的一个重要技能就是——负载均衡......原创 2016-10-13 10:07:48 · 8966 阅读 · 3 评论 -
基于AWS的电子商务网站架构——结账服务
用AWS建立电子商务网站安全且高可用的结账服务及业务扩展。管理结帐过程涉及许多步骤,必须协调工作。其中的一些步骤,如信用卡交易,应有特定的监管要求。这个过程的其他部分涉及人工操作,如从仓库中采摘,包装和运输物品。 客户希望自己的私人资料,如他们的购买历史和自己的信用卡信息,能够通过安全的基础设施和应用程序进行管理。AWS已取得相关的电子商务业务多重安全认证,包括支付卡行业(PCI)的数据安全标准(翻译 2015-02-05 19:58:54 · 2412 阅读 · 0 评论 -
基于AWS的电子商务网站架构——营销与推荐服务
用AWS可以建立一个营销与推荐服务,来管理有针对性的营销活动,并为正在浏览电子商务网站的客户提供个性化的产品推荐。为了建立这样一个服务,你必须处理非常大量来自多个数据源的数据。由此产生的客户配置文件信息必须是可用的,以完成电子商务网站对客户实时产品。 获得有关客户的评论,也可以用于管理针对特定客户群的个性化营销活动。通过AWS提供的工具,可以通过不同的渠道构建高度可扩展的推荐服务,如动态产品推荐,翻译 2015-02-05 20:01:42 · 3311 阅读 · 0 评论 -
基于AWS的电子商务网站架构——Web前端
用AWS可以建立一个高可用的电子商务网站提供灵活的产品目录和业务扩展。维护一个电子商务网站的一个大型产品目录和全球客户群是具有挑战性的。该目录是可搜索,以及单个产品的网页应该包含丰富的信息集,例如图像,PDF手册,以及客户的评论。 客户希望快速找到他们感兴趣的产品,同时希望网页能够快速加载。世界各地的客户希望能够在任何时间进行购买,所以网站应该具有高可用性。随着你的产品目录和客户群增长,应对这些挑翻译 2015-02-05 19:56:29 · 5186 阅读 · 0 评论 -
基于AWS的web日志分析系统架构
AWS提供的服务和基础设施能够在云环境中建设可靠,容错和高可用的Web应用程序。在生产环境中,这些应用产生大量的日志信息。这些数据是任何公司运营web应用程序的重要知识来源,分析日志可以揭示信息,如交通模式,用户行为,市场资料等。 然而,作为Web应用程序的增长和的访问者数量的增加,存储和分析网络日志变得越来越具有挑战性。下图展示了如何使用AWS构建一个可扩展且可靠的大规模日志分析平台。该架构的核翻译 2015-02-05 19:36:19 · 4677 阅读 · 0 评论 -
基于AWS的金融服务网格计算系统架构
基于云环境的金融服务网格计算提供了对计算作业按需操作的动态扩展和弹性,利用聚合服务简化了网格软件的开发。对硬件的按需配置和模板驱动的部署,结合对现有内部部署的数据源的低延迟访问,AWS为高性能网格计算系统提供了一个强大的平台。1. 市场信息,交易数据和竞争对手数据开始被安装在企业内部的数据中心或者AmazonSimple Storage Service (Amazon S3). 2. AWS翻译 2015-02-05 19:42:43 · 2982 阅读 · 0 评论 -
基于AWS的媒体共享系统架构
媒体共享是互联网上最热门的市场之一。客户有强烈的欲望将照片和视频放在社交网站上,并在自定义的在线相册分享他们的媒体内容。媒体共享的日益普及意味着网站所有者面临着不断增长的存储和带宽需求,加快市场商用的压力,以及提供比竞争对手更快性能的问题。 由于现在大多数企业的人手,预算和数据中心空间都是有限的,AWS提供了一套独特的实现和扩展方式,使企业不必投资于硬件,人员,或额外的数据中心空间,使用AWS是一翻译 2015-02-05 18:45:47 · 2135 阅读 · 0 评论