最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路。今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正。
首先说明的是.net下开源内容较少,并且也不是做并行数据库等基础服务,因此在这里什么Hadoop、Spark、ZooKeeper、dubbo等我们暂不去考虑。
一、最初假设的网站中,我们把应用系统网站、文件和数据库都放在一台服务器上,一台服务器包打天下。
二、随着业务扩展,一台服务器无法满足性能需求,将应用程序、数据库、文件分别部署在不同的服务器上,并根据服务器用途不同,配置不同的硬件,达到性能最佳的效果。
三、随着业务扩展,一台数据库、网站、文件服务器再高性能也无法大量数据处理、高并发用户访问时,必须考虑采用集群方式。
1、应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy等。
2、随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如订单、物流信息表等。垂直切分则是根据业务不同来切换,如订单、计税等等不同的主题放在不同的数据库中。这种情况下,关联查询是没有的,通过程序可以比较容易的去解决,还有就是采用分布式事务,来保证数据的一致性。我们这里还有一个做法,一个大的数据表拆分为当前操作表和历史记录表, 当前操作表只保留正在操作的数据,完成后转入历史记录表,这样可以提高当前操作数据的效率。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式