2023-4-5了解零散的架构问题
为何了解到这部分:在学习linux的网络配置时了解到集群的概念,发现与分布式有点相似,分布式中存在高可用的设计
对于高可用的认识:
高可用的概念出现在分布式架构设计中,比如某台服务器挂了的时候有额外的应对方法,不让整个系统停止服务,(就比如上面的人在做饭,下面需要盛饭,如果某一个盘子打碎后还有别的盘子弥补上一个的任务),而与之相关的还有高可靠,高可靠相当于长时间不出故障,高可用相当于不论任何时间出故障后能够快速修复
在实现高可用分布式架构中最重要的是:冗余(也就是有替代) 以及 自动故障转移
在分布式架构中每层都有高可用设计,只不过在服务层到缓存层中几乎涉及不到高可用,就可用集群的方法来
客户端 -> 反向代理层: 反向代理层冗余,通过keepalived+virtual IP自动故障转移
反向代理层 -> 站点层web-server: 站点层冗余,通过nginx和web-server之间的存活性探测与自动故障转移
站点层 -> 服务层: 服务层冗余,通过service-connection-pool保证自动故障转移
服务层 -> 缓存层:大部分没有高可用要求,如果有,缓存数据的冗余,有两种方法:缓存客户端实现双读双写,或利用缓存集群的主从数据同步和redis自带的sentinel哨兵监控的存活性检测来实现自带故障转移
服务层 -> "读"数据库: 读库的冗余,通过db-connection-pool实现自动故障转移
服务层 -> "写"数据库: 写库的冗余,通过keepalived+virtual IP实现自动故障转移
对于集群/分布式的认识:
集群:将一个业务部署在多个服务器上
分布式:将一个业务分成多个子业务,再部署到不同服务器上
分布式架构:
从单应用架构 —> 将数据库与应用分别部署到不同服务器 -> 对应用服务器做集群处理 -> 数据库读写分离到不同服务器 -> (不懂操作)增加搜索引擎(再应用层下面) -> 在读数据库与应用层中间增加缓存 -> 分库分表 -> 应用拆分成子应用分别部署到不同服务器上(也称微服务)
在其中用到的技术:
(应用服务器集群)1.负载均衡问题用到DNS(最先操作,将不同地区发送的请求分别转发给适合的地方服务器),再用Nginx实现分给当地服务器群中的某服务器, 2.session共享问题最常见是用到cookie加密存储,其次是redis集中储存session等
(数据库读写分离)1.第一种方法是程序代码封装,2.第二种是中间件封装,常用MySQL Router和Mycat
(增加缓存)1.Redis与Memcached 2.CDN
对于高可用的认识:
高可用的概念出现在分布式架构设计中,比如某台服务器挂了的时候有额外的应对方法,不让整个系统停止服务,(就比如上面的人在做饭,下面需要盛饭,如果某一个盘子打碎后还有别的盘子弥补上一个的任务),而与之相关的还有高可靠,高可靠相当于长时间不出故障,高可用相当于不论任何时间出故障后能够快速修复
在实现高可用分布式架构中最重要的是:冗余(也就是有替代) 以及 自动故障转移
在分布式架构中每层都有高可用设计,只不过在服务层到缓存层中几乎涉及不到高可用,就可用集群的方法来
客户端 -> 反向代理层: 反向代理层冗余,通过keepalived+virtual IP自动故障转移
反向代理层 -> 站点层web-server: 站点层冗余,通过nginx和web-server之间的存活性探测与自动故障转移
站点层 -> 服务层: 服务层冗余,通过service-connection-pool保证自动故障转移
服务层 -> 缓存层:大部分没有高可用要求,如果有,缓存数据的冗余,有两种方法:缓存客户端实现双读双写,或利用缓存集群的主从数据同步和redis自带的sentinel哨兵监控的存活性检测来实现自带故障转移
服务层 -> "读"数据库: 读库的冗余,通过db-connection-pool实现自动故障转移
服务层 -> "写"数据库: 写库的冗余,通过keepalived+virtual IP实现自动故障转移
对于集群/分布式的认识:
集群:将一个业务部署在多个服务器上
分布式:将一个业务分成多个子业务,再部署到不同服务器上
分布式架构:
从单应用架构 —> 将数据库与应用分别部署到不同服务器 -> 对应用服务器做集群处理 -> 数据库读写分离到不同服务器 -> (不懂操作)增加搜索引擎(再应用层下面) -> 在读数据库与应用层中间增加缓存 -> 分库分表 -> 应用拆分成子应用分别部署到不同服务器上(也称微服务)
在其中用到的技术:
(应用服务器集群)1.负载均衡问题用到DNS(最先操作,将不同地区发送的请求分别转发给适合的地方服务器),再用Nginx实现分给当地服务器群中的某服务器, 2.session共享问题最常见是用到cookie加密存储,其次是redis集中储存session等
(数据库读写分离)1.第一种方法是程序代码封装,2.第二种是中间件封装,常用MySQL Router和Mycat
(增加缓存)1.Redis与Memcached 2.CDN
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)