如何降低软件的复杂性
http://www.ruanyifeng.com/blog/2018/09/complexity.html
H5 手机 App 开发入门:概念篇
http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html
H5 手机 App 开发入门:技术篇
http://www.ruanyifeng.com/blog/2019/12/mobile-app-technology-stack.html
1 概念 1.1 模型 节点 在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。 异常 机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是24 小时,一般需要人工介入重启机器。 网络异常:消息丢失,两片节点之间彼此完全无法通信,即出现了“网络分化”;消息乱序,有一定的概率不是按照发送时的顺序依次到达目的节点,考虑使用序列号等机制处理网络消息的乱序问题
1、概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。 2、基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。 1)什么是分布式? 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。 2)什么是高可用? 系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性。
一、数据库架构原则 二、常见的架构方案 方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用 方案二:双主架构,两个主库同时提供服务,负载均衡 方案三:主从架构,一主多从,读写分离 方案四:双主+主从架构,看似完美的方案 三、一致性解决方案 第一类:主库和从库一致性解决方案 第二类:DB和缓存一致性解决方案 四、个人的一些见解 1、架构演变 2、个人见解 一、数据库架构原则↑ 高可用 高性能 一致性 扩展性 二、常见的架构方案↑ 方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用 高可用分析:高可用,主库挂了,keepalive(只是一种工具)会自动切换到备
一、数据库瓶颈 1、IO瓶颈 2、CPU瓶颈 二、分库分表 1、水平分库 2、水平分表 3、垂直分库 4、垂直分表 三、分库分表工具 四、分库分表步骤 五、分库分表问题 1、非partition key的查询问题(水平分库分表,拆分策略为常用的hash法) 2、非partition key跨库跨表分页查询问题(水平分库分表,拆分策略为常用的hash法) 3、扩容问题(水平分库分表,拆分策略为常用的hash法) 六、分库分表总结 七、分库分表示例 一、数据库瓶颈↑ 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Servi
创建分区表的大致步骤
1、建立文件组(类似oracle的表空间),当然不建立也行,把所有分区都放一个文件组内也可以
2、建立分区函数,数据按什么范围分配
3、建立分区方案,关联分区函数,也会关联文件组,分区函数把数据分了几个范围,就需要关联几个文件组,当然也可以把这几个分区范围都放入到同一个文件组
4、建立表,关联分区方案
遇到的一个Bug
直接右键表导出表结构时导不出分区信息,只能右键数据库--任务--生成脚本才能导出表的分区信息
分区表的一些规则:
1、分区字段不一定需要建立索引
2、分区字段可以创建为clustered索引或noclustered索引
3、分区字段不管是clustered
连接服务器
mysql -h 地址 -P 端口 -u 用户名 -p 密码
SHOW PROCESSLIST -- 显示哪些线程正在运行
SHOW VARIABLES -- 显示系统变量信息
数据库操作
-- 查看当前数据库
SELECT DATABASE();
-- 显示当前时间、用户名、数据库版本
SELECT now(), user(), version();
-- 创建库
CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项
数据库选项:
CHARACTER SET charset_name