如《互联网分层架构的本质》所述,互联网分层架构的本质,是数据的移动。数据的移动,需要载体,DB和cache是常见的数据存储载体。如上图:service-A将数据放入cacheservice-B从cache里读取数据cache作为数据存储载体的好处是:cache的读取和写入都非常快service-A和service-B物理上解耦关于“物理上解耦”的概念,详见《互联网架构解耦利器》。本期讨论点:你遇到
分类:
其他好文 时间:
2020-11-17 13:03:20
阅读次数:
26
1.分片内部基本结构 在一个分片中(Lucene),数据(数据原文和倒排索引)以段为单位存储,只有成为段的数据才能被检索。 因为文档先被缓存在内存中,创建倒排索引和其他索引结构之后才会成为段,才能被检索 就像下图中文档先被写入内存,为文档构建一系列索引之后成为段,并且写入磁盘,只有段才是 Searc ...
分类:
Web程序 时间:
2020-11-17 12:23:50
阅读次数:
17
有朋友问我,DNS轮询是不是过时的技术了?有了反向代理层(Nginx、LVS、F5等),是不是就不需要DNS轮询了?然而,反向代理层绝不能替代DNS轮询!反向代理层有什么用?架构实现时要注意什么?(1)作为服务端统一入口,屏蔽后端WEB集群细节,代表整个WEB集群;画外音:这就是为啥它叫反向代理。(2)保证WEB集群的扩展性,Nginx后端可随时加WEB实例;(3)实施负载均衡,反向代理层会将请求
分类:
其他好文 时间:
2020-11-17 12:12:08
阅读次数:
6
缓存讲了一个月《缓存架构,一篇足够》。今天,开始写数据库。第一篇,说说MySQL两个最常用的存储引擎,MyISAM和InnoDB。照自己的理解,把一些知识点总结出来,不只说知识点,多讲“为什么”。一、关于count(*)知识点:MyISAM会直接存储总行数,InnoDB则不会,需要按行扫描。潜台词是,对于selectcount(*)fromt;如果数据量大,MyISAM会瞬间返回,而InnoDB则
分类:
数据库 时间:
2020-11-17 12:02:15
阅读次数:
8
减少http请求。 使用 HTTP2。 使用服务端渲染 静态资源使用 CDN 将 CSS 放在文件头部,JavaScript 文件放在底部 使用字体图标 iconfont 代替图片图标 善用缓存,不重复加载相同的资源 压缩文件 图片优化 (1). 图片延迟加载 (2). 响应式图片 (3). 调整图 ...
分类:
其他好文 时间:
2020-11-17 11:52:44
阅读次数:
4
《“ID串行化”保证群消息顺序性》提到,可以通过连接池的改造,实现ID串行化,本篇讲讲连接池的原理,以及实现细节。通常如何通过连接访问下游?工程架构中有很多访问下游的需求,下游包括但不限于服务/数据库/缓存,其通讯步骤是为:(1)与下游建立一个连接;(2)通过这个连接,收发请求;(3)交互结束,关闭连接,释放资源;不管是服务/数据库/缓存,官方会提供不同语言的Driver、Document、Dem
分类:
其他好文 时间:
2020-11-16 13:57:11
阅读次数:
7
在《消息顺序性为何这么难?》中,介绍了一种为了保证“所有群友展示的群消息时序都是一致的”所使用的“ID串行化”的方法:让同一个群gid的所有消息落在同一台服务器上处理。ID串行化是如何实现的呢?互联网高可用常见分层架构客户端,反向代理层,接入层,服务层,存储层,这是互联网常见的高可用分层架构。画外音:这个图用过好多次。这里的“服务层”至关重要,ID串行化保证的是,同一个群gid的消息落在同一个服务
分类:
其他好文 时间:
2020-11-16 13:56:56
阅读次数:
7
架构师之路年终总结(五)-缓存篇缓存是互联网系统架构中必不可少的一环,之前花大精力系统性的写了10篇,缓存架构设计相关的文章,欢迎回顾。1.《进程内缓存究竟怎么玩?》缓存,可以分为:进程内缓存,缓存服务。文章介绍了:(1)什么是进程内缓存(2)进程内缓存的优缺点(3)进程内缓存保存一致性的3种方案(4)到底什么时候用进程内缓存文章也说明,大部分业务场景,不应该用进程内缓存,而应该用缓存服务,而如今
分类:
其他好文 时间:
2020-11-16 13:54:20
阅读次数:
5
memcache是互联网分层架构中,使用最多的的KV缓存。面试的过程中,memcache相关的问题几乎是必问的,关于memcache的面试提问,你能回答到哪一个层次呢?画外音:很可能关乎,你拿到offer的薪酬档位。第一类问题:知道不知道这一类问题,考察用没用过,知不知道,相对比较好回答。关于memcache一些基础特性,使用过的小伙伴基本都能回答出来:(1)mc的核心职能是KV内存管理,valu
分类:
系统相关 时间:
2020-11-16 13:38:07
阅读次数:
14
前言 在原生的andriod 和iOS 里面都会有数据缓存的api Android 端用的是 Sharedpreferences 来实现对于轻量级数据的缓存 , IOS端 通常使用NSUserDefaults 来实现轻量级数据的缓存 但是在flutter 有基于Android iOS 做支持的三方插 ...
分类:
其他好文 时间:
2020-11-16 13:24:08
阅读次数:
3