架构设计
TasIsMe
这个作者很懒,什么都没留下…
展开
-
架构-1.高性能架构之读写分离和分表分库
架构的复杂度来源-高性能随着软件系统越来越复杂,软件系统不得不面对三个大问题(高性能,高可用,可拓展)。就拿一个网站来说,最开始用户量较少,单机架构就可以支持。随着用户量的增加,系统的功能不断叠加。软件系统开始变得慢,开始不稳定,修改个bug牵一发而动全身。这时就必须升级软件的架构。尽管硬件的发展很快,相比于软件的发展,真是小巫见大巫。单机架构无论如何都无法支持大量的访问和事务。解决高性能问题...原创 2019-09-03 14:06:28 · 664 阅读 · 0 评论 -
架构-2,高性能架构之NoSQL和缓存
关系型数据库的局限NoSQL不是指No SQL而是指No only SQL,关系型数据库非常成熟于强大,但是依然存在一些问题,所以NoSQL时关系型数据库的一种补充而不是替代。1.只能存储行结构而不能存储更复杂的数据结构,比如某个属性是数组,关系型数据库只能把数组存放到另外一个表或者解析成字符串存储。2.表结构不易修改。由于强制每一行数据个列都是一样的,对于数据量很大的表来说,修改一个字段...原创 2019-09-03 14:07:41 · 371 阅读 · 0 评论 -
架构-3,高性能架构之单机高性能和负载均衡
单机高性能PPC和TPCPPCPPC创建一个进程的代价是非常高的,需要分配很多的内核资源,且进程之间的通信也很昂贵,所以一般只有连接数比较少的会使用(如数据库服务器),而普通的业务服务器是不会使用的。TPCPPC与TPC的区别在于,PPC子啊接收请求之后,会fork一个子进程(不是线程)而TPC则会创建一个子线程。TPC则是进行了改良,创建线程而不是进程,在tomcat早期的版本,使...原创 2019-09-03 14:08:52 · 564 阅读 · 0 评论 -
架构-4.高可用架构之存储高可用
架构的复杂度来源-高可用高可用是指系统不会轻易的挂掉,这里的“高”是指不可能达到100%的可用性,或者说100%的可用性成本非常高,所以一般用4个九5个九表达高可用,其实就是指99.99%的可用性,99.999的可用性。相对于高性能,高可用要复杂得多。因为高性能只需要考虑性能。而高可用必须得考虑可用性,一致性和分区容忍性CAP和BaseCAP原则,CAP分别指C(一致性),A(可用性),P...原创 2019-09-16 18:21:23 · 553 阅读 · 0 评论 -
架构-5.高可用架构之Paxos和Raft
Paxos算法Paxos算法是解决分布式系统中如何就某个值达成协议。典型的场景就是选举主机,zookeeper选举主机使用的zab算法就是Paxos的一个实现。Paxos的三个角色Proposer:提议者,提出方案的角色Acceptor:接受者,接收方案的角色Learner:学习者,确定接受者是否超过半数的节点同意某个提案Paxos分为三个阶段阶段1:发送编号每一个提议者都会提...原创 2019-09-16 18:22:16 · 342 阅读 · 0 评论 -
架构-6.高可用架构之一致性哈希算法和数据分片
一致性哈希算法一致性哈希算法是构建一个0~2^32的整数环,即首尾相连。假设存放的是缓存数据。每一个槽位可以存放一个缓存服务器。当一个请求过来,可以根据ip和port计算出hash,然后根据顺时针,找到最近的缓存服务器。这样的设计实现了容错性和可伸缩性,即使某台机器宕机了,那么顺时针就找到下一台机器了,加入机器也是找到一个槽位直接加入即可。但是这样还是存在均衡性的问题,如果某一台机器...原创 2019-09-16 18:24:11 · 504 阅读 · 0 评论 -
架构-7.高可用架构之接口级故障
架构-1:高性能架构之读写分离和分表分库架构-2:高性能架构之NoSQL和缓存架构-3:高性能架构之单机高性能和负载均衡架构-4:高可用架构之存储高可用架构-5:高可用架构之Paxos和Raft架构-6:高可用架构之一致性哈希算法和数据分片架构-7.高可用架构之接口级故障接口级别故障是最常见的故障,相比于机器宕机,机房故障,接口级别的故障要频繁,但是危害却也不小。如果没有好的解决方案...原创 2019-09-18 16:53:41 · 272 阅读 · 0 评论