架构

InnoDB架构,一幅图秒懂!

℡╲_俬逩灬. 提交于 2020-01-20 04:29:27
InnoDB架构,一幅图秒懂! 原文作者: 58沈剑 网上写MySQL架构的文章比较多,写InnoDB架构的文章比较少,今天简单说说InnoDB架构。 画外音: 一分钟,一幅图,秒懂。 MySQL简要架构是怎么样的? MySQL整体分为三层: (1) 客户端 ,是各种编程语言的connector; (2) MySQL服务 ,内部包含各种组件,实现各种功能; (3) 文件系统 ,数据存储与日志; 其中,MySQL服务内,可以以插件的形式,实现各种存储引擎。 在InnoDB,MyISAM,Memory…等各种存储引擎中, InnoDB是使用范围最广的 。 画外音: 事务,行锁,聚集索引,MVCC…众多特性让InnoDB备受青睐。 InnoDB简要架构是怎么样的? InnoDB整体也分为三层: (1) 内存结构 (In-Memory Structure),这一层在MySQL服务进程内; (2) OS Cache ,这一层属于内核态内存; (3) 磁盘结构 (On-Disk Structure),这一层在文件系统上; 这三层的交互有两类: (1)通过OS Cache落地数据(上图中,两个短箭头); (2)直接O_Direct落地数据(长途中,长箭头); 画外音: 这是一个性能与一致性折衷的设计。 InnoDB内存结构包含哪些核心组件? InnoDB内存结构包含四大核心组件,分别是: (1)

Spark设计理念和基本架构

二次信任 提交于 2020-01-20 02:23:29
Spark 特点 减少Disk IO Spark 将资源文件(jar 等),缓存在driver 本地文件服务的内存里,当Executor执行任务时直接从 Driver 的内存中读取 增加并行度 多个stage 之间允许串行也可以并行 避免重新计算 当stage 中某个分区的task 失败,会重新对此stage 调度,但重新调度时会过滤掉已经成功执行的分区task 较为灵活的内存管理策略 四个部分 onheap 存储内存 onheap 执行内存 offheap 存储内存 offheap 执行内存 执行内存和存储内存之间可以互相借用 Spark 模块设计 SparkContext Spark 应用程序的提交和执行都离不开 SparkContext, SparkSession的底层实现依赖于 SparkContext SparkEnv SparkEnv 是 Spark 中 task 允许时所必须的组件 Spark 基本架构 Cluster Manager Yarn 模式下,为 ResourceManager StandAlone 模式下, 为master worker Yarn 模式下,为 NodeManager 来源: CSDN 作者: zhixingheyi_tian 链接: https://blog.csdn.net/zhixingheyi_tian/article/details

构建高性能的SNS网站架构

帅比萌擦擦* 提交于 2020-01-20 00:33:08
满足极高读写性能需求的Key-Value数据库 高性能Key-Value数据库的主要特点就是具有极高的并发读写性能,Redis,Tokyo Cabinet, Flare,这3个Key-Value DB都是用C编写的,他们的性能都相当出色,但出了出色的性能,他们还有自己独特的功能: 1、Redis Redis是一个很新的项目,刚刚发布了1.0版本。Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统 统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是我知道的性能最快的Key-Value DB。 Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存List链表和Set集合的数据结构,而且还支持对List进行各种操作,例如 从List两端push和pop数据,取List区间,排序等等,对Set支持各种集合的并集交集操作,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key

微信小程序前端开发架构

為{幸葍}努か 提交于 2020-01-19 23:59:25
一、目标 1、提升开发速度 2、更好的响应需求变化 二、面临的问题 业务需求的变化是永恒的,而变化势必会引发代码的变化,新增代码或修改代码。 改动的地方越多,引入新的错误几率就越大。 三、应对思路 最小化原则,确保每次业务需求变化可以用最小的代价来完成。 1、视图模板化,组件化 2、逻辑代码对象化、版本化 3、事件传递参数化、代理化 四、架构模型 1、视图 2、逻辑与事件通信 视图层需要传递一组参数(对象名、方法名、方法需要的参数) 五、代码示例 //wxml代码 <view bindtap='bindViewEvent' data-model="user" data-method="sayhello" data-text="hi,nihao">sayhello</view> //js代码,page页里只有一个事件路由业务函数 bindViewEvent:function(e){ app.excute(this,e); } //app.js /* * 事件路由函数 */ excute:function(that,e){ new umitech(that,this.config).extend(e);//动态加载对象,并调用相关方法 } github示例代码 来源: 51CTO 作者: 沙耶博士 链接: https://blog.51cto.com/12008764/2142095

Deep Reinforcement Learning for List-wise Recommendations

若如初见. 提交于 2020-01-19 19:03:15
论文题目:多个item一起进行推荐的深度强化学习方法 摘要: 推荐系统通过给用户推荐个性化商品,在缓解信息超载或服务这些问题方面起着至关重要的作用。绝大多数传统推荐系统将推荐算法视为静态过程,并且根据固定策略提出建议。在本文中,我们提出一种新颖的推荐系统,该系统具有在与用户互动期间不断改进其策略的能力。我们将用户和推荐系统之间的顺序交互建模为马尔可夫决策过程(MDP),并且用强化学习(RL),在通过推荐一些尝试的item并从用户的反馈中获得对这些item的补充策略。特别是,我们介绍一个在线的用户代理交互环境模拟器,可以在离线预先训练和评估模型参数,然后再上线。此外,我们验证了用户交互期间的用户和智能体之间的关系,并开发出一种新颖的方法将其纳入LIRD框架以获取一段推荐列表的建议。实验结果是基于一个真实的数据,并且显示了我们提出来的框架的有效性。 关键词: 推荐列表的推荐系统,深度强化学习,Actor-Crtic在线环境模拟器。 1:介绍 京东的推荐系统是智能的电子商务应用程序。他们通过建议用户帮助他们完成信息搜索任务,并推荐给他们最适合其需求和偏好的Item(产品,服务或信息)。 推荐系统越来越多近年来很流行,并且已被广泛用于电影,音乐,书籍,兴趣点和社交等领域事件[5,21,22,32–36]。 大多数现有的推荐系统都将推荐过程看做一种如果有固定模型

系统架构的演变

爷,独闯天下 提交于 2020-01-19 17:39:32
单体应用架构 垂直应用架构 分布式之RPC架构 分布式之SOA架构 分布式之微服务架构 微服务架构: 微服务虽小,五脏俱全。 解决的问题:微服务与微服务之间的系统调用 来源: CSDN 作者: 树叶要走风怎么挽留 链接: https://blog.csdn.net/weixin_44993313/article/details/104041113

【大型网站技术架构】读书笔记

余生长醉 提交于 2020-01-19 17:05:34
大型网站软件系统的特点: 1.高并发、高流量 2.高可用 3,海量数据 4.用户分布广泛,网络情况复杂 5.安全环境恶劣 6.需求快速变更,发布频繁 7.渐进式发展 大型网站的技术挑战 1.庞大的用户量 2.高并发的访问量 3.海量的数据 网站架构演化过程 高访问导致性能越来越差,海量数据导致存储空间不足,解决办法:将应用和数据分离 网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上,解决办法:将小部分数据缓存在内存中,以此来减少数据库的访问压力,提高整个网站的数据访问速度,改善数据库的写入性能 单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器成为整个网站的瓶颈,解决办法:使用应用服务器集群改善网站的并发处理能力,持续增加服务器不断改善系统性能,实现系统的可伸缩性;通过负载均衡调度服务器进行请求分发 数据库读写分离 一部分读操作(未缓存或缓存过期)和全部的写操作需要访问数据库,用户到了一定规模,数据库因为负载压力过高成为网站瓶颈 数据库本身特性:主从热备,通过配置两台数据库主从关系,将数据同步更新至另一台服务器上,一般利用这个实现读写分离,改善数据库负载压力 为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明 使用反向代理和CDN加速网站响应 网站业务扩大

jvm的架构模型

邮差的信 提交于 2020-01-19 15:15:02
目前的指令流有两种指令集架构,一种是基于栈的指令集架构,另一种是基于寄存器的指令集架构。而jvm采用的几乎都是基于栈的指令集架构,因为这种架构不具体依赖硬件,能有很好的可移植性。 来源: CSDN 作者: 一叶扁舟在大海 链接: https://blog.csdn.net/zixuexiaobaihu/article/details/104040411

MyCat实战--读写分离/数据分片/mycat集群/haproxy负载均衡

£可爱£侵袭症+ 提交于 2020-01-19 11:58:40
目录 简介 优势 关键特性 读写分离 安装mycat 配置mycat server.xml schema.xml rule.xml 启动mycat 停止mycat 连接mycat 测试 数据分片 配置master 配置slave 创建数据库以及表 配置mycat schema.xml rule.xml 测试 MyCat集群 架构 搭建多节点mycat 连接测试 负载均衡 简介 架构 部署安装HAProxy docker安装 配置文件 启动docker haproxy容器 访问ip:4001/dbs ​ Navicat连接haproxy 简介 优势 关键特性 读写分离 安装mycat 配置mycat server.xml schema.xml rule.xml 启动mycat 启动mycat的命令是 ./startup_nowrap.sh 停止mycat 连接mycat 测试 数据分片 比如两台服务器节点,来了4条数据,两个节点的写库各插入2条,这就是分片。 配置master 配置slave 创建数据库以及表 配置mycat schema.xml rule.xml 测试 MyCat集群 mycat做了数据库的代理,在高并发的情况下,必然也会面临单节点的性能问题,所以需要部署多个mycat节点。 架构 搭建多节点mycat 连接测试 虽然搭建了多节点的mycat集群

从此重构

此生再无相见时 提交于 2020-01-19 03:27:01
设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢? 最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功, 软件 开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。 一个在简历中轻描淡写的“ 10 年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象 编程 、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里,几个必需的概念是应该首先被了解和认知的,以排名不分先后的原则罗列,它们大概包括: · 面向对象 ( Object-Oriented ),关于面向对象没有必要重复嚼舌了,本书的第 1 章“ OO 大智慧”中对 .NET 的面向对象进行了有别于其他专著的介绍,除了以实例突出面向对象之思想大成,还以浓墨铺陈了 .NET 是如何在底层 技术 上来实现继承、多态和接口映射等机制,从而使读者可以更加有效和深刻地把握面向对象之精髓。 · 面向服务 ( Service Oriented ), SO 至少是个时髦的话题, WCF 伴着 .NET 3.5 的发布,一个一统江湖的面向服务的基础架构横空出世