每秒几万次MySQL交互,搜狗纯异步MySQL客户端开源了!
很多朋友问,如何学习RPC内核知识?我的回答是,直接看源码。今年看源码,之前推荐过一个框架《单机40万QPS,搜狗WF框架,今年最值得学习的开源代码》,随着源码阅读的越来越深入,发现了WF框架一个非常独特的地方:高性能纯异步MySQL客户端,非常有意思,今天和大家介绍一下自己的学习心得。首先,什么是
TCP接入层的负载均衡、高可用、扩展性架构
今天和大家系统性聊聊TCP的负载均衡,高可用,与扩展性架构。web-server的负载均衡,高可用,扩展性架构是怎么实施的?互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡。整个架构分三层:(1)上游调用层,一般是browser或者APP;(2)中间反向代理层,ng
MQ,究竟如何做到削峰填谷?
MQ,很多的应用场景,是消息的订阅发布,是系统上下游的解耦,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下,MQ要怎么实现缓冲流量,削峰填谷。站点与服务上下游之间,一般如何通讯?有两种常见的方式。一种是“直接调用”,通过RPC框架,上游直接调用下游。一种是“MQ推送”,上游将消息发
MQ,究竟如何保证消息幂等?
MQ的核心架构如何?MQ核心架构,它由发送端、服务端、固化存储、接收端四大部分组成。MQ如何保证消息必达?MQ消息必达,架构上有两个核心设计点:(1)消息落地;(2)消息超时、重传、确认;画外音:详见核心架构中的步骤1-6。MQ消息重传,是否可能导致重复的消息?有可能。为保证消息的可达性,超时、重传
我是怎么看管理的
疫情期间,受邀做了一次线上分享,聊聊我对管理的理解,对如何达成目标的理解,整理成文如下,欢迎探讨。管理者的职责是什么?对老板,对同事,对下属,三点很重要:(1)对老板,达成给定的目标;(2)对同事,帮队友赋能;(3)对下属,帮助他们解决问题,帮助他们成长和提升,帮助他们搭舞台唱戏;其中,第一点是根本
InnoDB,5项最佳实践
MySQL是目前互联网公司使用最广的数据库,InnoDB是MySQL使用最广的存储引擎,MyISAM和InnoDB的五项最佳实践,和大家聊聊,尽量多讲“为什么”。一、关于count(*)知识点:MyISAM会直接存储总行数,InnoDB则不会,需要按行扫描。潜台词是,对于selectcount(*)
微服务,分层设计与领域驱动设计(DDD)?
当系统越来越复杂的时候,怎么将一个庞大的系统拆分成一个微服务,让后端服务能更好的迭代是一个架构师必须要具备的能力。微服怎么拆,最经典的就是分层设计了。分层架构如此经典,以至于成为我们每个程序员的标配了。随着服务的更加复杂,基于领域的设计就显得更加有必要了,这个时候分层设计和领域设计该怎么权衡?其实准
解决了,设计部量化OKR?
最近组织架构调整,直接负责视觉设计团队。和大家汇报下,在大家的帮助下,视觉设计团队的量化指标OKR第一版有了雏形。首先,视觉设计团队,肯定不能由出图数量作为KPI;同时,作品质量评估也偏主观;那么,视觉设计团队是否需要量化指标OKR呢?答案是肯定的。从管理的角度,如果OKR不量化,可能会存在什么严重
订单中心,1亿数据架构,这次服了
架构师之路,坚持撰写接地气的架构文章
分布式锁,再深一点!!
一、起因分布式环境下,多台机器上多个进程对一个数据进行操作,必然引起数据不一致的情况,比如“商品超卖”。那么在分布式环境下,怎么访问临界资源,是互联网的一大难题。分布式锁就是一种解决方法。二、互斥原理原理:多个访问方对同一个资源进行操作,需要进行互斥,通常是利用一个这些访问方同时能够访问到的lock
订单中心,1亿数据架构,这次服了
订单中心,是互联网业务中,一个典型的“多key”业务,即:用户ID,商家ID,订单ID等多个key上都有业务查询需求。随着数据量的逐步增大,并发量的逐步增大,订单中心这种“多key”业务,架构应该如何设计,有哪些因素需要考虑,是本文将要系统性讨论的问题。什么是“多key”类业务?所谓的“多key”,
七夕之夜,如何保证私密信息不泄露?
七夕之夜,想和另一半聊一些私密的话,如何保证聊天内容不被黑客窥探,看完此文,终于略知一二了。一、初级阶段:信息裸传特点:(1)在网络上传递明文;黑客定理一:网络上传递的数据是不安全的,网络属于黑客公共场所,能被截取。如何改进呢?很容易想到,先加密,再传输。二、进阶阶段:传输密文特点:(1)服务端和客
分布式调用链追踪系统,今天来讲讲架构与细节
单体架构时代,不会跨进程调用服务,站点层直连数据库与缓存,通过站点层的日志,基本就能定位出,哪里有异常,哪里是瓶颈,哪里(数据库?缓存?本地函数?)超时?微服务分层架构之后,系统架构变得越来越复杂:(1)站点层会调用业务服务层;(2)业务服务会调用基础服务层;(3)任何一个服务都有可能调用缓存或者数
无锁缓存,每秒10万并发,究竟如何实现?
有一类业务场景:(1)超高吞吐量,每秒要处理海量请求;(2)写多读少,大部分请求是对数据进行修改,少部分请求对数据进行读取;这类业务,有什么实现技巧么?接下来,一起听我从案例入手,娓娓道来。快狗打车,场景举例:(1)司机地理位置信息会随时变化,可能每几秒钟地理位置要修改一次;(2)用户打车的时候查看
快速,实时处理大量数据,架构如何解?
随着业务越来越大,数据也是越来越多,怎么能让业务在数据大的时候还能保证快呢。互联网的业务无外乎线上OLTP场景和线下OLAP场景,这两种场景,数据量增大后,我们应该分别怎么应对呢。【OLTP】在业务初期,单库单表,就能满足绝大部分业务需求,其典型的架构为:(1)DAS:数据访问层;(2)DB:数据库
互联网分层架构的本质
经常有朋友问我,为什么要做分层架构,什么时候架构要抽象一层,今天来聊一聊这个问题。上图是一个典型的互联网分层架构:(1)客户端层:典型调用方是browser或者APP;(2)站点应用层:实现核心业务逻辑,从下游获取数据,对上游返回html或者json;(3)数据-缓存层:加速访问存储;(4)数据-数
一行RPC调用,究竟发生了什么?(内核干货)
每当我们写下一个本地函数调用的时候:intresult=Add(1,2);我们知道,代码段里有一段Add的代码,调用方将参数1和2压栈传入,Add函数计算完成之后,返回结果给result,这是一个本地函数调用的过程。画外音:额,有朋友留言,他并不知道。那每当我们写下一个RPC接口调用的时候:intr
为何说,MapReduce,颠覆了互联网分层架构的本质?
下图是一个典型的,互联网分层架构:客户端层:典型调用方是浏览器browser或者手机APP站点应用层:实现核心业务逻辑,从下游获取数据,对上游返回html或者json服务层:业务服务,数据服务,基础服务,对上游提供友好的RPC接口数据缓存层:缓存加速访问存储数据固化层:数据库固化数据存储同一个层次的
我C,MySQL双主架构,原来能这么玩
经常有朋友问,MySQL双主的一致性问题,今天简单聊一聊。MySQL为什么要使用双主架构?MySQL最常见的集群架构,是一主多从,主从同步,读写分离的架构。通过这种方式,能够扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。为了保证MySQL写库的高可用,可以在一个MySQL数据库集群中可
Google的锁,才是分布式锁?
早年Google的四大基础设施,分别是GFS,MapReduce,BigTable,Chubby,前三个比较有名,今天来说说最后一个,Chubby。Chubby是什么?Chubby是早年Google四大基础设施之一,提供粗粒度的分布式锁服务。Chubby的使用者不需要关注复杂的同步协议,而是通过已经