nosql

分布式事务解决方案FESCAR

一曲冷凌霜 提交于 2020-04-25 19:53:06
项目地址: FESCAR 以下是官网的文档。 简介 2019年,Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题。 1. 什么是微服务化带来的分布式事务问题? 首先,设想一个传统的单体应用(Monolithic App),通过 3 个 Module,在同一个数据源上更新数据来完成一项业务。 很自然的,整个业务过程的数据一致性由本地事务来保证。 随着业务需求和架构的变化,单体应用被拆分为微服务:原来的 3 个 Module 被拆分为 3 个独立的服务,分别使用独立的数据源(Pattern: Database per service)。业务过程将由 3 个服务的调用来完成。 此时,每一个服务内部的数据一致性仍由本地事务来保证。而整个业务层面的全局数据一致性要如何保障呢?这就是微服务架构下面临的,典型的分布式事务需求:我们需要一个分布式事务的解决方案保障业务全局的数据一致性。 2. Fescar 的发展历程 阿里是国内最早一批进行应用分布式(微服务化)改造的企业,所以很早就遇到微服务架构下的分布式事务问题。 2014 年,阿里中间件团队发布 TXC(Taobao Transaction Constructor),为集团内应用提供分布式事务服务。 2016 年,TXC 经过产品化改造,以 GTS

程序员修神之路--高并发下如何缩短响应时间

て烟熏妆下的殇ゞ 提交于 2020-04-25 07:10:45
菜菜哥,请你看电影呀,但是得帮我一个忙 好呀,看什么? 哥斯拉2:怪兽之王 看过了~ X战警:黑凤凰 看过了 追龙2和黑衣人呢? 都看过了,你说帮什么忙吧 我一个网站响应特别慢,你帮我优化一下呗,很简单 你以为真的很简单吗? 你以为真的很简单吗? 定义 网站响应时间是指系统对请求作出响应的时间。通俗来讲就是我们把网址输入进浏览器然后敲回车键开始一直到浏览器把网站的内容呈现给用户的这段时间。网站响应时间是越短越好,因为网站页面打开速度越快,就意味着我们的用户可以更快的访问站点或者我们的服务器。一般我们网站的响应时间保持在100~1000ms即可。1m=1000ms,打开速度越快对用户体验度越好。据说响应时间还会影响到网站SEO效果(请行业专家留言告诉我)。 响应时间并不能直接反映网站性能的高低,但是在一定程度上反应了网站系统的处理能力,也是给用户最直观上的感受。如果网站的响应时间过长,比如10秒以上,用户的流失率会大大增加,所以把响应时间控制在一定范围内是提高用户体验度的第一要素。 解决方案 当用户请求一个网站数据的时候,实际上是发送了一个http请求,在宏观上可以分为两个部分: 1. http请求到达目标网站服务器之前 2. http请求到达目标网站服务器之后 如果忽略其中硬件部分和部分细节,请求一个网站数据的大体过程如下图所示(其中CDN和缓存部分可以省略):

mongodb与mysql区别

a 夏天 提交于 2020-04-24 20:20:05
MySQL 是关系型数据库。 优势: 在不同的引擎上有不同 的存储方式。 查询语句是使用传统的 sql 语句,拥有较为成熟的体系,成熟度很高。 开源数据库的份额在不断增加,mysql 的份额页在持续增长。 缺点: 在海量数据处理的时候效率会显著变慢。 Mongodb 是非关系型数据库(nosql ),属于文档型数据库。文档是 mongoDB 中数据的基本 单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似 javascript 面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。 存储方式:虚拟内存+持久化。 查询语句:是独特的 Mongodb 的查询方式。 适合场景:事件的记录,内容管理或者博客平台等等。 架构特点:可以通过副本集,以及分片来实现高可用。 数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将 数据存储在物理内存中,从而达到高速读写。 成熟度与广泛度:新兴数据库,成熟度较低,Nosql 数据库中最为接近关系型数据库, 比较完善的 DB 之一,适用人群不断在增长。 优点: 快速!在适量级的内存的 Mongodb 的性能是非常迅速的,它将热数据存储在物理内存中, 使得热数据的读写变得十分快。高扩展性,存储的数据格式是 json 格式! 缺点: 不支持事务,而且开发文档不是很完全,完善。 Mysql 和

MongoDB(1)--MongoDB安装及简介

Deadly 提交于 2020-04-24 20:19:41
一、MongoDB的应用场景及实现原理 二、MongoDB的常用命令及配置 三、手写基于MongoDB的ORM框架 四、基于MongoDB实现网络云盘实战 五、MongoDB 4.0新特性 一、 MongoDB 中的应用场景及设计原理 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能 数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL) 1.1 、什么是 NoSQL NoSQL,指的是非关系型的数据库。NoSQL 有时也称作 Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL 用于超大规模数据的存储。(例如谷歌或Facebook 每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。 1.2 、关系型数据库 PK 非关系型数据库 关系型数据库 NoSQL 数据库 高度组织化结构化数据 代表着不仅仅是 SQL 结构化查询语言(SQL) 没有声明性查询语言 数据和关系都存储在单独的表中 没有预定义的模式 数据操作语言,数据定义语言 键-值对存储,列存储,文档存储,图形数据库 严格的一致性 最终一致性

元数据-模型-实例数据库设计的典型范式

流过昼夜 提交于 2020-04-24 17:43:37
元数据-模型-实例是一个很常见的设计成例——实际上,我觉得它应该属于解决一大类问题的设计模式的一种,在很多书里面也提到过这个东西。比如说在《面向模式的软件架构》系列里面,就提到过类似的设计模式。 这里主要讨论这种模式在数据库设计上的一些典型的做法,但是也 局限于关系型数据库,对于非关系型数据库而言,设计也多有不同。 在设计数据库的时候,主要分成模型表的设计和实例表的设计。 模型相关表设计 基础设计 我将模型定义为属性的集合。即一个模型通过模型所具有哪些属性来描述的,不同的属性又有不同的特征。 首先需要有一个模型表,我们暂时叫它Model。它的主要列都是描述模型自身的属性。举例来说: 模型表 比如第一条记录,其含义是有一个叫做“电脑”的模型,它适用于3C这个类目之下。 接下来是属性表(Attr): 属性表 属性表里面的记录是对属性自身的描述。举例来说,第一条记录的意思是有一个叫做memory的属性,其中文名字是内存,它的类型是数字——即实例里面该属性的取值应该是一个数字,Validator要求该属性的取值是大于0的,并且是必须具备的。也就是说,如果一个模型用到了该属性,那么任何一个实例,该属性都应该有取值,并且是大于0的。 之后,还需要一个表将模型和属性关联起来,其含义是这些模型是由这些属性组成的,而一个实例就是由这些属性的取值描述的。 关联表(Assn): 关联表 到这里

面对一个完全陌生的系统,如何快速的熟悉并上手?

一笑奈何 提交于 2020-04-24 11:31:18
面对一个完全陌生的系统,如何快速的熟悉并上手?本文将从三个方面进行总结,提供一个系统的方法,同时也可以用来 review 已有的系统,查漏补缺。 面对一个完全陌生的系统,如何快速的熟悉并上手?面对一个完全陌生的系统,如何快速的熟悉并上手? 前言 开发人员经常会面临下面一些场景: 新人入职,需要学习已有系统,作为 landing 的一部分,如何学习? 被拉过去参与一个陌生系统的迭代开发或者系统维护(bugfix),如何快速上手? 同事离职或转岗,需要把系统交接给你,怎么去接?内心 os:这是一口锅吗? 这样的场景多了,就需要去梳理常见问题以及应对方法,方便后续遇到类似场景可以快速应对。本文总结熟悉系统主要分三部分:业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题,这些问题随着经验的积累需要逐步补充完善。 业务学习 业务学习就是从业务角度去学习系统,我们需要了解系统的客户是谁、使用人是谁、带来了什么价值,系统提供了哪些功能等。不清楚业务,就等于不知道系统在干什么。技术是为业务落地而服务,清楚了业务才知道怎样用技术更好地服务业务,所以业务学习是熟悉一个系统的首要任务。这块主要的学习方式有跟产品、运营、开发沟通,学习产品设计文档文档、PRD、自己使用系统,还有一些常见图,如产品功能架构图、业务流程图、功能树,用例图等。 常见问题: 系统所在行业的情况是怎样?

面对一个完全陌生的系统,如何快速的熟悉并上手?

坚强是说给别人听的谎言 提交于 2020-04-24 09:13:01
面对一个完全陌生的系统,如何快速的熟悉并上手?本文将从三个方面进行总结,提供一个系统的方法,同时也可以用来 review 已有的系统,查漏补缺。 前言 开发人员经常会面临下面一些场景: 新人入职,需要学习已有系统,作为 landing 的一部分,如何学习? 被拉过去参与一个陌生系统的迭代开发或者系统维护(bugfix),如何快速上手? 同事离职或转岗,需要把系统交接给你,怎么去接?内心 os:这是一口锅吗? 这样的场景多了,就需要去梳理常见问题以及应对方法,方便后续遇到类似场景可以快速应对。本文总结熟悉系统主要分三部分:业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题,这些问题随着经验的积累需要逐步补充完善。 业务学习 业务学习就是从业务角度去学习系统,我们需要了解系统的客户是谁、使用人是谁、带来了什么价值,系统提供了哪些功能等。不清楚业务,就等于不知道系统在干什么。技术是为业务落地而服务,清楚了业务才知道怎样用技术更好地服务业务,所以业务学习是熟悉一个系统的首要任务。这块主要的学习方式有跟产品、运营、开发沟通,学习产品设计文档文档、PRD、自己使用系统,还有一些常见图,如产品功能架构图、业务流程图、功能树,用例图等。 常见问题: 系统所在行业的情况是怎样? 系统的目标用户是谁?比如是给公司高层做决策用?给运营或客服用?还是互联网用户用? 平均有多少人在使用

面对一个完全陌生的系统,如何快速的熟悉并上手?

扶醉桌前 提交于 2020-04-23 22:27:36
面对一个完全陌生的系统,如何快速的熟悉并上手?本文将从三个方面进行总结,提供一个系统的方法,同时也可以用来 review 已有的系统,查漏补缺。 前言 开发人员经常会面临下面一些场景: 新人入职,需要学习已有系统,作为 landing 的一部分,如何学习? 被拉过去参与一个陌生系统的迭代开发或者系统维护(bugfix),如何快速上手? 同事离职或转岗,需要把系统交接给你,怎么去接?内心 os:这是一口锅吗? 这样的场景多了,就需要去梳理常见问题以及应对方法,方便后续遇到类似场景可以快速应对。本文总结熟悉系统主要分三部分:业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题,这些问题随着经验的积累需要逐步补充完善。 业务学习 业务学习就是从业务角度去学习系统,我们需要了解系统的客户是谁、使用人是谁、带来了什么价值,系统提供了哪些功能等。不清楚业务,就等于不知道系统在干什么。技术是为业务落地而服务,清楚了业务才知道怎样用技术更好地服务业务,所以业务学习是熟悉一个系统的首要任务。这块主要的学习方式有跟产品、运营、开发沟通,学习产品设计文档文档、PRD、自己使用系统,还有一些常见图,如产品功能架构图、业务流程图、功能树,用例图等。 常见问题: 系统所在行业的情况是怎样? 系统的目标用户是谁?比如是给公司高层做决策用?给运营或客服用?还是互联网用户用? 平均有多少人在使用

2020打大厂最全Java面试手册:Redis+面向编程+spring+MyBatis等(附答案)

南楼画角 提交于 2020-04-23 16:08:44
前段时间,有个朋友拿到了这个文档,说多亏了这个文档,在金三银四的时候帮了很大的忙,经检测有效,决定把这个文档分享出来,希望能帮到更多的人,这里面的面试题,都是常见的高频面试题,整理出来也花了很长的时间,但或许能帮到你!!详细题目类型见下文 JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 由于篇幅有限,资料过大,有需要获取面试手册文档的朋友请见文末 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 由于篇幅有限,资料过大,有需要获取面试手册文档的朋友可以添加VX:13272413561(备注51免费获取) Mysql面试题 Redis面试题 Memcached面试题(节选) 1、memcached 服务在企业集群架构中有哪些应用场景? 2、Memcached 服务分布式集群如何实现? 3、Memcached 服务特点及工作原理是什么? 4、简述 Memcached 内存管理机制原理? 5、memcached 是怎么工作的? 6、memcached 最大的优势是什么? MongoDB面试题 1、mongodb是什么? 2、mongodb有哪些特点? 3、你说的NoSQL数据库是什么意思?NoSQL与RDBMS直接有什么区别?为什么要使用和不使用NoSQL数据库

2020最全Java面试手册:面试题目+答案详解

陌路散爱 提交于 2020-04-23 15:31:20
前段时间,有个朋友拿到了这个文档,说多亏了这个文档,在金三银四的时候帮了很大的忙,经检测有效,决定把这个文档分享出来,希望能帮到更多的人,这里面的面试题,都是常见的高频面试题,整理出来也花了很长的时间,但或许能帮到你!!详细题目类型见下文 JavaOOP面试题 **Java集合/泛型面试题 ** Java异常面试题 Java中的IO与NIO面试题 由于篇幅有限,资料过大,有需要获取面试手册文档的朋友请见文末 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 由于篇幅有限,资料过大,有需要获取面试手册文档的朋友可以添加VX:13272413561(备注五一免费获取) Mysql面试题 Redis面试题 Memcached面试题(节选) 1、memcached 服务在企业集群架构中有哪些应用场景? 2、Memcached 服务分布式集群如何实现? 3、Memcached 服务特点及工作原理是什么? 4、简述 Memcached 内存管理机制原理? 5、memcached 是怎么工作的? 6、memcached 最大的优势是什么? MongoDB面试题 1、mongodb是什么? 2、mongodb有哪些特点? 3、你说的NoSQL数据库是什么意思?NoSQL与RDBMS直接有什么区别?为什么要使用和不使用NoSQL数据库