数据库存储引擎 数据库存储引擎是数据库底层软件组件,不同的存储引擎提供不同的存储机制,索引技巧,锁定水平等功能,使用不同的数据库引擎,可以获得特定的功能,数据库存储引擎是基于表的。 数据库引擎相关操作 # 查看当前数据库支持的引擎类型 mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | FEDERATED | NO | Federate....
事务 数据库事务通常指对数据库进行读或写的一个操作过程。有两个目的,第一个是为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法;第二个是当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。 事务的 ACID 特性 使用事务表的引擎要为 innodb 引擎。MyIsam 不支持事务。 原子性(Atomicity):事务必须是原子工作单元,一个事务中的所有语句,应该做到:要么全做,要么一个都不做; 一致性(Consistency):让数据保持逻辑上的“合理性”,比如:小明给小红打 10000 块钱,既要让小明的账户减少 10000,又要让小红的账户上增加 10000 块钱; 隔离性(Isolation):如果多个事务同时并发执行,但每个事务就像各自独立执行一样。 持久性(Durability):一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。 了解事务相关操作 # 事务的开启 begin; start transaction; # 事务的提交 ....
操作语句分类 DDL 数据定义语言 (Data Definition Language) 例如:建库,建表 DML 数据操纵语言(Data Manipulation Language) 例如:对表中的数据进行增删改操作 DQL 数据查询语言(Data Query Language) 例如:对数据进行查询 DCL 数据控制语言(Data Control Language) 例如:对用户的权限进行设置 常见表常用数据类型 数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。有一些数据是要存储为数字的,数字当中有些是要存储为整数、小数、日期型等... <1>整数型 类型 大小 范围(有符号) 范围(无符号unsigned) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32768,32767) (0,65535) 大整数值 MEDIUMINT 3 字节 (-8388608,8388607) (0,16777215) 大整数值 INT 4 字节 (-21474....
Hostname 临时修改(需要开启新的会话) [root@localhost ~]hostname test123 永久修改 [root@localhost ~]# vim /etc/hostname localhost.localdomain OS Directory Detail / #根目录,起点。 etc # 系统和应用的配置文件 home #普通用户的家目录 bin #可执行二进制文件 (系统指令) bin -> /usr/bin sbin #可执行二进制文件(超级用户指令)sbin -> /usr/sbin usr # 可执行二进制文件(用户程序) boot #系统引导目录(存放系统引导文件) lib # 系统库文件 tmp #临时文件(此自带定时清理机制,不适合存放需要长期持久化的数据) var #系统日志(/var/log)、帮助文档、比较杂乱。 proc #保存进程的动态信息(内存使用率、CPU使用率等…) sys #/proc类似,是一个虚拟的文件系统,主要记录与系统核心相关的信息(系统当前已经载入的模块信息等,这个目录实际不占磁盘容量)。 dev....
软件架构的进化 软件架构是在软件的内部,经过综合各种因素的考量、权衡,选择特定的技术,将系统划分成不同的部分并使这些部分相互分工,彼此写作,为用户提高需要的价值。 因素考量 业务需求 技术栈 成本 可扩展性 组织架构(分工) 可维护性 架构进化史 一层架构 -> MVC -> Dubbo 单体架构 功能、业务集中在一个发布包里,部署运行在同一个进程中。 易于开发 易于测试 易于部署 易于水平伸缩(新建服务器、配置好环境、复制软件包) 致命的硬伤: 代码膨胀、难以维护。(分析、定位、修复、成本高) 构建、部署成本大 新人上手困难 创新困难 可扩展性差 微服务间如何通讯 通讯模式角度考虑 xxx一对一一对多 同步请求响应模式,最常见—— 异步通知/请求异步响应发布订阅/发布异步响应 从通讯协议角度考虑 REST API RPC(dubbo、dubbox、motan、grpc、thrift) MQ (发布订阅模式) 如何选择RPC框架 I/O、线程调度模型(NIO、BIO、长连接、短连接、单线程、多线程、线程调度算法的性能如何) 序列化与反....
分布式系统中多容器管理的困难 生产环境中同一种类型的容器往往散落在各个主机节点上,因此无法回避下列问题: 怎么去管理这么多容器? 怎么能方便的横向扩展? 如果容器down了,怎么能自动恢复? 如何去更新容器而不影响业务? 如何去监控追踪这些容器? 怎么去调度容器的创建? 保护隐私数据? Docker Swarm Mode Architecture 综上所述,容器编排应运而生,docker的容器编排工具的实现有很多,只不过swarm是内置于docker的容器编排工具,由docker公司内置到docker中。 Service & Replicas * 在docker swarm模式下Service的概念和Docker Compose中的概念基本一致。 * 在Replicas横向扩展模式下,每个Replicas都是一个实际的容器,每个容器都会根据调度系统的计算,被分配在不同的node上运行。也就是说,通过Swarm Manager部署去部署一个Service时候,其实是不知道容器最终会运行在哪些swarm节点上的,这取决于Swarm的调度算法的计算结果(例如:根据节点....
多容器的APP的痛点 要从Dockerfile build image或者Dockerhub拉取iage 要创建多个container 要管理这些container(启动停止删除) 一个应用可能由多个容器之间相互配合完成,追个容器进行管理成本高,将多个容器定义为一个组,对组进行统一的管理。 微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。 Docker Compose简介 使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具。 Docker Compose是一个工具。 这个工具可以通过yml文件定义多容器的docker APP。 通过一条命令就可以根据yml文件的定义去创建或管理多容器。 yml概念 Services 一个service代表一个container,这个container可以从dockerhub的image创建而来,或是从本地的Dockerfile build构建的image创建而来。 Service的....