数据库系统

运维工程师打怪升级进阶之路 V2.0

蹲街弑〆低调 提交于 2020-02-26 16:40:53
在此之前,发布过两个版本: 运维工程师打怪升级之路 V1.0 版本发布 运维工程师打怪升级必经之路 V1.0.1 很多读者伙伴们反应总结的很系统、很全面,无论是0基础初学者,还是有基础的入门者,或者是有经验的职场运维工程师们,都反馈此系列文章非常不错! 为了更好的提升可阅读性、可查找性,特此,将列与公众号菜单的系统系列文章,统一整理于一篇文章,按原来的整体架构,分类整理,也就是说,今后的更新与迭代不再是多级的菜单目录,统一是一篇完整的文章,有利于读者阅读与查找。 命名:《运维工程师打怪升级之路》 版本:V1.0版本「2019年1月20日发布」 V1.0.1版本「2019年4月26日更新」 V2.0版本 「2019年5月13日发布」 内容概况: 内容由浅入深,从最基础的网络基础开始,逐渐深入系统的学习Linux系统运维知识。然后引入企业项目实战内容,从而让更多学习Linux系统运维的读者朋友们「无论前端、后端、测试还是运维,底层系统是必备技术点」,都能够快速入门、并且在一程度上掌握当下企业所需要的技术储备。再穿插企业面试题、面试经验等,同时也能帮助运维工程师们在求职的路上能更加顺畅,少踩坑。 后面会逐渐更新将其完善,希望能帮助到同为运维路上的技术人。 运维工程师打怪升级进阶之路基础篇 1、网络基础 网络组建之路由基础 网络基础NAT(Network Address

面试官:分布式事务了解吗?你们是如何解决分布式事务问题的?

▼魔方 西西 提交于 2020-02-26 03:05:33
面试官心理分析 只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。 现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。因为你做系统肯定要用事务吧,如果是分布式系统,肯定要用分布式事务吧。先不说你搞过没有,起码你得明白有哪几种方案,每种方案可能有啥坑?比如 TCC 方案的网络问题、XA 方案的一致性问题。 面试题剖析 分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA方案 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。 这种分布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率很低,绝对不适合高并发的场景。如果要玩儿,那么基于 Spring + JTA 就可以搞定,自己随便搜个 demo 看看就知道了。 这个方案,我们很少用,一般来说某个系统内部如果出现跨多个库的这么一个操作,是不合规的。我可以给大家介绍一下,

面试官为什么会问你,如何设计一个高并发系统?

送分小仙女□ 提交于 2020-02-26 03:05:27
面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。 如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。 假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器?缓存咋用的?MQ 咋用的?数据库咋用的?就是深挖你到底是如何扛住高并发的。 因为真正干过高并发的人一定知道,脱离了业务的系统架构都是在纸上谈兵,真正在复杂业务场景而且还高并发的时候,那系统架构一定不是那么简单的,用个 redis,用 mq 就能搞定?当然不是,真实的系统架构搭配上业务之后,会比这种简单的所谓“高并发架构”要复杂很多倍。 如果有面试官问你个问题说,如何设计一个高并发系统?那么不好意思,一定是因为你实际上没干过高并发系统。面试官看你简历就没啥出彩的,感觉就不咋地,所以就会问问你,如何设计一个高并发系统?其实说白了本质就是看看你有没有自己研究过,有没有一定的知识积累。 最好的当然是招聘个真正干过高并发的哥儿们咯,但是这种哥儿们人数稀缺,不好招。所以可能次一点的就是招一个自己研究过的哥儿们

【数据库系统概论】

为君一笑 提交于 2020-02-25 23:01:56
只记录了个人觉得的重点和难点知识,大部分是摘抄ppt,部分会给出自己的解答和扩展。 持续更新中 数据库系统概论 1. 绪论 1.1 数据库系统概述 1.2 数据模型 概念模型 1.3 数据库系统的结构 1.4 数据库系统的组成 问题记录 1. 如何理解数据独立性中的逻辑独立性 1. 绪论 1.1 数据库系统概述 数据(Data) :数据库存储的基本对象,即数据表的一行数据,如一个学生 数据库(Database,DB) :长期储存在计算机内、有组织的、可共享的大量数据的集合。 基本特征 数据按一定的数据模型组织、描述和储存 可为各种用户共享、冗余度较小、易扩展 数据独立性较高 数据库管理系统 (DataBase Management System,DBMS) :位于用户应用与操作系统之间的一层数据管理软件,是基础软件,是一个大型复杂的软件系统,能够科学地组织和存储数据、高效地获取和维护数据。 主要功能: 数据定义功能 提供数据定义语言(DDL) 定义数据库中的数据对象 数据组织、存储和管理 分类组织、存储和管理各种数据 确定数据在存储级别上的结构和存取方式 实现数据之间的联系 提供多种存取方法提高存取效率 数据操纵功能 提供数据操纵语言(DML) 实现对数据库的基本操作 (查询、插入、删除和修改) 数据库的事务管理和运行管理 数据的安全性、完整性、多用户对数据的并发使用

管理信息系统(二)2.5——2.6

冷暖自知 提交于 2020-02-24 08:50:13
中国大学MOOC同济大学管理信息系统 2.5的笔记 2.6的笔记 组织内信息系统 2.5决策支持系统1 下面开始介绍决策支持系统的第一部分内容。在组织当中有6类信息系统分别服务于组织的三个层次,其中 决策支持系统DSS是为中高层管理者提供决策支持的信息系统。 那么决策支持系统为什么会产生呢?我们来分析一下产生的原因,这是由于在组织运作过程当中常常会遇到许多决策问题,比如说组织采购原材料时,究竟应该选择哪家供应商?比如说如何根据客户的信用度确定是否给予贷款?还有怎样确定合理的库存量,以及如何选择最佳运输路径? 如何确定明年的产品需求?还有连锁门店应该选在什么位置比较合适?解决以上问题的过程就称为决策过程。我们之前所学习过的MIS,虽然管理者可以通过MIS获得经过分析、比较、汇总和简单计算后产生的信息,但是这些信息对于解决以上决策问题的支持力度显然是不够的,以至于管理者只能靠经验直觉来进行决策。正是基于以上的原因,所以决策支持系统应运而生。 下面我们来看一下决策支持系统的结构, 通常最基本的决策支持系统,包括数据管理部件、模型管理部件和用户接口部件。 在数据管理部件当中,由决策支持系统的数据库和数据管理系统组成,在模型管理部件通常由模型库和模型管理系统构成,在用户接口部件通常由用户界面和对话关系构成,通常包含DSS数据库和模型库的决策支持系统,我们称之为 两库决策支持系统

[转]再见 NoSQL!

人走茶凉 提交于 2020-02-22 04:16:19
为解决大规模数据集合多重数据种类带来的挑战,NoSQL 应运而生,但现在却也遇到了诸多问题,本文作者 Rick Negrin,曾在微软工作 12 年,并在 SQL Server 团队度过大部分光阴,他提出,是时候「和 NoSQL 说再见」了! 作者 | Rick Negrin 译者 | 明明如月 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 以下为译文: 是时候承认我们早就知道的事实了: NoSQL 并不适合现代应用程序,我们该对它说再见了。 由于数据超过了数据库能够处理的规模,NoSQL 技术就应运而生。这种新型的数据服务的兴起解决了十年前它出现时网络和数据快速增长的问题。NoSQL 还提供了冷存储或批量访问 PB 级数据的低成本的新途径。然而,由于急于解决大数据和高并发的挑战,NoSQL 放弃了数据库的一些高性能和简单易用的核心特性。 对大数据和高并发与高性能和易用性做出的权衡是 NoSQL 在数据库领域做出的最大贡献。将大数据和成熟的关系型结构和灵活性结合到一起,从而产生了一个可伸缩的关系数据库,造就了一场变革。 关系型数据库的发展创造了一个全新的系统,可以处理几乎所有的任务,具有现代应用程序所需的可伸缩性、可靠性和可用性要求。随着从传统的工作任务(例如事务处理应用程序和业务分析)到更新的工作任务

本人的第一个博客

家住魔仙堡 提交于 2020-02-21 08:00:05
hello world 个人运维技能必备 语言: Python、Shell 系统: Linux、Windows 数据库: Mysql、Redis、MongoDB MySQL代理: Mycat、Altas、Cobar 版本管理: Git 高可用/负载均衡 LVS、Nginx、HAProxy、Keepalived 批量管理: Ansible、Saltstack 装机: Kickstart、Cobbler 容器/虚拟化: Docker、KVM、VM 持续集成: Jenkins 日志: ELK Stack 监控: Zabbix、Promentheus、Grafana、告警平台、Drools监控 分布式: Ceph、GlusterFS、FastDFS web: Nginx、Tomcat、Apache 抓包分析: Tcpdump、Wireshark 同步备份: Rsync 来源: https://www.cnblogs.com/small-wei/p/10825972.html

Java分布式 一些概念理解

十年热恋 提交于 2020-02-21 07:27:31
转至 java那些事 2017-02-09 有些朋友工作一年了觉得该深入一下子了,所以想深入学习一下以提升自己的专业技能,想问一下如何入门Java分布式应用,学习过程大致是怎么样的,涉及到那些知识,框架呢?有那些资料可以推荐? 所以在网络上找了一些资源给大家分享一下! 首先推荐4本书(京东就有) 大型分布式网站架构设计与实践 大型网站技术架构:核心原理与案例分析》 ,大型网站系统与Java中间件实践 《分布式Java应用:基础与实践》 貌似都是4位阿里人写的,一本一本的看吧,绝对会增强你的内功。 小小的总结 分布式架构的演进 系统架构演化历程-初始阶段架构 初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP 特征: 应用程序、数据库、文件等所有的资源都在一台服务器上。 描述: 通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了。 系统架构演化历程-应用服务和数据服务分离 好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver 特征: 应用程序、数据库、文件分别部署在独立的资源上。 描述: 数据量增加,单台服务器性能及存储空间不足

[系统软件工程师面试] 6. mysql

别等时光非礼了梦想. 提交于 2020-02-21 02:54:50
1. Mysql内核 MyISAM和InnoDB内核选型 1. InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一; 2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败; 3. InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 4. InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快; 5. InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。这也是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一; 如何选择: 1. 是否要支持事务

大型高并发高负载网站的系统架构

血红的双手。 提交于 2020-02-21 01:45:13
一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系 统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技 术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能 比拟的。      大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。      上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。      1、HTML静态化    其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是 最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点