分类标签归档:系统架构

微服务的历史与陷阱


微服务是近几年非常火热的架构设计理念,大部分人认为是MartinFlower提出了微服务概念,但事实上微服务概念的历史要早得多,也不是Martin Flower创造出来的,Martin只是将微服务进行了系统的阐述。不过不能否认Martin在推动微服务火热起来的作用,微服务能火,Martin功不可没。

参考维基百科英文版,我们简单梳理一下微服务的历史:

2005年:Dr. PeterRodgers在Web ServicesEdge大会上提出了“Micro-Web-Services”的概念。

2011年:一个软件架构工作组使用了“microservice”一词来描述一种架构模式。

2012年:同样

全部内容

软件开发常用相关资料收藏


如何降低软件的复杂性

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

oauth

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

全部内容

两万字深度介绍分布式系统原理


1 概念

1.1 模型



节点


在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。



异常


机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是24 小时,一般需要人工介入重启机器。

网络异常:消息丢失,两片节点之间彼此完全无法通信,即出现了“网络分化”;消息乱序,有一定的概率不是按照发送时的顺序依次到达目的节点,考虑使用序列号等机制处理网络消息的乱序问题

全部内容

从一百个并发到千万级并发情况下服务端的架构的演进过程



1、概述


本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。

2、基本概念

在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。
1)什么是分布式?
系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。
2)什么是高可用?
系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性。

全部内容

MySQL数据库之互联网常用架构方案


一、数据库架构原则

二、常见的架构方案
方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用
方案二:双主架构,两个主库同时提供服务,负载均衡
方案三:主从架构,一主多从,读写分离
方案四:双主+主从架构,看似完美的方案

三、一致性解决方案
第一类:主库和从库一致性解决方案
第二类:DB和缓存一致性解决方案

四、个人的一些见解
1、架构演变
2、个人见解

一、数据库架构原则↑
高可用
高性能
一致性
扩展性

二、常见的架构方案↑
方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用



高可用分析:高可用,主库挂了,keepalive(只是一种工具)会自动切换到备

全部内容

MySQL数据库之互联网常用分库分表方案


一、数据库瓶颈
1、IO瓶颈
2、CPU瓶颈
二、分库分表
1、水平分库
2、水平分表
3、垂直分库
4、垂直分表
三、分库分表工具
四、分库分表步骤
五、分库分表问题
1、非partition key的查询问题(水平分库分表,拆分策略为常用的hash法)
2、非partition key跨库跨表分页查询问题(水平分库分表,拆分策略为常用的hash法)
3、扩容问题(水平分库分表,拆分策略为常用的hash法)
六、分库分表总结
七、分库分表示例
一、数据库瓶颈↑
不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Servi

全部内容