简单聊聊分布式系统架构
点击上方“大话coding”,选择“星标”公众号重磅干货,第一时间送达大家好,我是小轩今天给大家分享下一个系统都设计到哪些层不同互联网公司的业务范围有很大差别,但抽象的去看不同公司架构基本...
点击上方“大话coding”,选择“星标”公众号
重磅干货,第一时间送达
大家好,我是小轩
今天给大家分享下一个系统都设计到哪些层
不同互联网公司的业务范围有很大差别,但抽象的去看不同公司架构基本大同小异
看下面这张图
架构解决的问题:结构拆分,就是把大的问题拆解成小的系统,然后把小的系统拆分成若干个层去实现。
让开发、运维变得更加容易、方便
咱们从下往上看
详细说的话就会特别特别多,这里就先大概说一下
基础层
也可以称为存储层,涉及到数据、文件的存储。
关系型数据库和非关系型数据库,这两个数据库是互补的,不是非此即彼的。
非关系型数据还包括一些文件:大文件和小文件,大文件有大文件存储的办法,小文件有小文件存储的思路。
开发层
开发框架:开发分前端和后端,现在后端主流的开发框架有Spring、Spring Boot等,如果有大数据分析和机器学习等处理大规模数据和训练模型的话,也会涉及到其它的框架、模型。
服务器:项目部署需要把代码运行在服务器上,服务器的话可以买某某云服务器,还可以自行购买多台服务器物理机,具体配置就根据自己的预算去购买了。
容器:后端开发需要用到的东西挺多的,为了方便部署和管理,会引入容器技术,比如docker等
服务层
配置中心:具体业务就不说了,大型互联网公司都不是一个系统,都是上百个系统,如果每个系统都有自己的配置文件,就不好管理,所以弄一个配置中心,统一配置。
服务中心:用来解决各个系统之间交互问题,不同系统之间互相调用,如果说系统直接连接不仅耦合度高而且出了问题不好解决,通过服务中心去分发、去安排。当某个服务挂了,备用服务只需要去服务中心注册就可以了。
消息队列:能让各个系统之间或者一个系统各个业务之间耦合度降低。消息队列实现是异步的,大批量请求数据可以先放在队列里边,缓解服务器压力,不需要服务器在短时间处理完。还可以根据不同服务器的处理能力去进行请求分发,可以让处理能力强的服务器去处理更大规模的数据。
网络层
负载均衡:为了应付高并发,会将一个系统部署到多个节点上,通过负载均衡把请求均匀的分发到节点之上;
CDN:为了让服务器压力更小,可以把静态的文件或者资源做缓存;
多机房:解决灾备
多中心:即去中心化,解决灾备,一个地区受灾后可以使用另一个地区服务器上的数据进行恢复;
用户层
用户管理:对用户进行统一管理,统一授权;
消息推送:用户不一定使用什么终端进行访问,有可能使用安卓,有可能使用苹果,有一个统一的统筹消息推送的机制;
存储云:根据业务区选择,如果上传的文件比较多和频繁的,通常会购买第三方云,大型互联网公司会自己单独建立一个存储云,不在基础层进行存储;
图片云:图片和普通视频或者文本文件有区别,图片有可能进行打水印、美化等;
业务层
系统业务有很多,不同公司业务也不一样
自动化测试平台
系统运维平台
测试、运维需要做到自动化,集中的测试和集中的运维,如果系统规模小就不需要这两个平台
数据管理平台
会产生很多数据,就需要对数据进行管理,挖掘有用的信息,推动业务继续向前发展
系统管理平台
有这么多系统,系统后台有很多管理员,运维和测试人员也需要登陆,就需要统一对使用人员进行管理
更多推荐
所有评论(0)