架构前生今世与流量负载架构设计

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了架构前生今世与流量负载架构设计脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

写在前面的话:

时间:2021.12.25

地点:陕西西安(居家办公)

人物:冷妆,刚入行的java小菜鸡

事件起因:在哪吒社区得到《亿级流量java高并发与网络编程实战》

事件经过:西安因为疫情居家办公,而我的电脑落在办公区域,大型社4现场

续前文:系统设计要点

引入正题之大型系统的演进

有图有真相

架构前生今世与流量负载架构设计

对于架构演变的认知,上图来自于dubbo官网:单一应用架构-垂直应用架构-分布式服务架构-流动计算架构

接下来所说的架构演进从不同类型的服务器-->集群服务和动静分离-->分布式系统-->提高数据的性能-->跨语言rpc组合

从不同类型服务器的选择(必需三台服务器)->集群服务和动静分离的优化-->并发增加,搭建分布式系统->完成之后就是提高数据的访问速度-->兼容一致性处理


不同类型的服务器

大型项目,高性能,至少三台服务器

1.应用服务器:处理业务逻辑(强大cpu支持)

2.数据库服务器:依赖磁盘检索的速度和数据缓存的容量(速度较快的硬盘的支持和大容量内存)

3.文件服务器:存储文件(大容量硬盘或内存)


集群服务与动静分离

以上搭建的只是单一应用服务器,能够处理的连接请求时有限的

集群的优势:1.负载均衡(分担服务器的压力)2:失败迁移(不会受到服务器宕机的影响)

这又让我想起西安一码通挂掉,修复了好久,难道。。。不敢想象

集群也相当于可以存放数据,处理请求,所以动静分离的优化是必然的

静:CDN一般将这些静态资部署在各地边缘的服务器上,htML,css这些资源可以缓存在反向代理服务器上,前端还有webpack打包工具,统一打包

动:crud动态请求访问到应用服务器


分布式系统

并发数增加,项目扩大,分布式来拆分

所谓分布式系统:拆分部署,网络整合模块

其实根据上面三个必需的服务器可以理解到分布式系统可以分为

分布式应用:

垂直拆分:将项目根据业务功能拆分成不同的模块,然后再整合各个模块

水平拆分:经典的三层架构(各层部署在不同的机器上)

分布式文件系统:所有文件分散存储到多台计算机上

分布式数据库:所有数据库分散存储在多台计算机上


提高数据的性能

1:在应用服务器上使用缓存

缓存分为本地缓存和远程缓存

本地缓存:访问速度块

远程缓存:无限制扩容,CPU能力

2.对数据进行读写分离,主从同步的热备份

处理海量数据的话(ES搜素引擎)-->(Hdoop,Spark,Storm进行大数据处理)

3.关系型数据库与非关系型数据库搭配使用


跨语言组合RPC整合(Thrift,gRPC)

这听着有点生硬,说白了就是编程语言不兼容,需要给系统加一层跨语言的中转结构来强制整合,所以这是不得已的选择


限流与多层负载

架构前生今世与流量负载架构设计

1)拦截非法的请求,从而进行一定的限流

2)通过Keepalived实现LVS多机部署,LVS进行客户请求分流

3)通过Nginx进行动静分离

4)集群的服务,通过Nginx进行整合

5)Maven进行依赖管理,GIT进行版本控制 


多级负载架构

相比较而言就是DNS绑定了多个LVS集群

Nginx将动态请求的路径转发到特定的服务器上

重点说明:

级联的层次越多,就会造成请求在系统中路径越长,系统性能有了很大影响

结合实际项目具体情况以及压力测试的结果权衡考虑

架构前生今世与流量负载架构设计


架构前生今世与流量负载架构设计

 

在后面的话:

事件结果:现在的时间完全按照自己的规划走下去,所以写下了以上blog

碎碎念:欢迎大家指出bLOG中的问题,督促笔者进一步改善,你的建议是笔者坚持的动力

 

脚本宝典总结

以上是脚本宝典为你收集整理的架构前生今世与流量负载架构设计全部内容,希望文章能够帮你解决架构前生今世与流量负载架构设计所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。